Nicolas Bally 067b625fa9 suite
2021-05-19 23:18:35 +02:00

132 lines
3.7 KiB
Ruby

# -*- encoding : utf-8 -*-
class Sheet < ActiveRecord::Base
has_many :people, :dependent => :destroy
has_many :sheet_years, -> {order "year DESC"}, :dependent => :destroy
has_many :donates, -> {order "paid_at DESC"}, :dependent => :destroy
has_one :last_year_m, -> {order "year DESC"}, :class_name => "SheetYear"
has_one :first_year_m, -> {order "year"}, :class_name => "SheetYear"
belongs_to :person, :class_name => "Person", :foreign_key => :first_people
belongs_to :first_people, :class_name => "Person", :foreign_key => :first_people
validates :sheet_type, :presence => true
validates :address, :presence => true, :if => :web?
validates :pc, :presence => true, :if => :web?
validates :city, :presence => true, :if => :web?
validates :country, :presence => true, :if => :web?
#attr_accessible :donates_attributes, :sheet_type, :people_attributes, :sheet_years_attributes, :corporate, :address, :address2, :address3, :pc, :city, :country, :skills, :other_mail, :other_phone
accepts_nested_attributes_for :people, :allow_destroy => true
accepts_nested_attributes_for :sheet_years, :allow_destroy => true
accepts_nested_attributes_for :donates, :allow_destroy => true
SHEET_TYPE = {1 => "adherent",2 => "sympathisant"}
attr_accessor :error_join, :new_web_form
before_validation do
if self.web and self.new_web_form
if self.sheet_years[0]
if self.sheet_years[0].benefactor
self.sheet_years[0].validate_bienfaiteur = true
self.sheet_years[0].amount = self.sheet_years[0].personalized_price
else
if self.sheet_years[0].join_type == 1
self.sheet_years[0].amount = 10
elsif self.sheet_years[0].join_type == 2
self.sheet_years[0].amount = 15
end
end
end
if self.people.size > 1
if self.sheet_years[0]
if self.sheet_years[0].join_type == 1
#dsffsd = dssfd
self.errors.add(:error_join, "Vous devez sélectionner l'adhésion familiale si vous voulez spécifier plusieurs personnes")
end
end
end
end
end
def done_return
self.sheet_years.first.payment_type = 3
self.sheet_years.first.paid_at = Date.today
self.sheet_years.first.save
self.return_done = true
self.save
end
after_create do
self.generate_sheet_number
self.generate_token
self.save
end
def generate_sheet_number
self.sheet_number = ("%04d" % self.id)+("%03d" % SecureRandom.random_number(999))
end
def generate_token
self.token = (Digest::MD5.hexdigest "#{SecureRandom.hex(20)}-#{DateTime.now.to_s}")
end
before_save do
if !self.person and self.people.size > 0
self.person = self.people.first
end
end
def self.to_csv2(options = {})
puts "test"
CSV.generate(options) do |csv|
csv << ["hhgghgh", "jhhgghgh"]
end
end
def self.search_by_params(input)
requette = ""
requette += "(last_year IN(?))" if input[:sheet_year]
requette += " AND " if input[:sheet_year] and input[:sheet_type]
requette += "(sheet_type IN(?))" if input[:sheet_type]
requette += " AND " if (input[:sheet_year] or input[:sheet_type]) and input[:sheet_city]
requette += "(city IN(?))" if input[:sheet_city]
requette += " AND web = 1" if input[:web]
conditions = []
conditions << requette
conditions << input[:sheet_year] if input[:sheet_year]
conditions << input[:sheet_type] if input[:sheet_type]
conditions << input[:sheet_city] if input[:sheet_city]
return Sheet.includes(:person).where(conditions)
end
end