app/models/c80_estate/area.rb in c80_estate-0.1.0.2 vs app/models/c80_estate/area.rb in c80_estate-0.1.0.3

- old
+ new

@@ -35,14 +35,24 @@ def self.free_areas self.joins(:astatuses).where(:c80_estate_astatuses => { tag: 'free'}) end + # посчитает кол-во свободных метров + def self.free_areas_sq + 1 + end + def self.busy_areas self.joins(:astatuses).where(:c80_estate_astatuses => { tag: 'busy'}) end + # посчитает кол-во занятых метров + def self.busy_areas_sq + 1 + end + def atype_title res = "-" if atype.present? res = atype.title end @@ -91,40 +101,98 @@ protected # при создании площади генерится начальное событие def create_initial_sevent - Rails.logger.debug "<Area.create_initial_sevent>" + Rails.logger.debug "<Area.create_initial_sevent> self.astatuses.count = #{self.astatuses.count}" - Sevent.create!({ - area_id: self.id, - atype_id: self.atype_id, - property_id: self.property_id, - astatus_id: self.astatus_id, - auser_id: self.owner_id, # инициатор события - создатель Площади - auser_type: 'AdminUser' - }) + # [**] + if self.astatuses.count > 0 + Rails.logger.debug "<Area.create_initial_sevent> aga: self.astatuses.first.title = #{self.astatuses.first.title}" + s = Sevent.create!({ + area_id: self.id, + atype_id: self.atype_id, + property_id: self.property_id, + astatus_id: self.astatus_id, + auser_id: self.owner_id, # инициатор события - создатель Площади + auser_type: 'AdminUser', + created_at: self.created_at + }) + + # см [*] + # if last_known_sevent == '' + # pparams[:created_at] = self.created_at + # end + # + # pparams = { + # atype_id: nil, + # property_id: self.property_id, + # sevent_id: s.id + # } + + # генерим запись с общими данными + # связываем её с Sevent + # чтобы можно было удалить как dependent => destroy + # Pstat.create!(pparams) + + end + end def check_and_generate_sevent - Rails.logger.debug "<Area.check_and_generate_sevent>" # находим последнее известное событие # фиксируем его статус - last_known_sevent = self.sevents.last.astatus.tag + last_known_sevent = "" + if self.sevents.count > 0 + last_known_sevent = self.sevents.last.astatus.tag + end # если статус этого события отличен - # от нового статуса - генерим событие + # от нового статуса - генерим события + Rails.logger.debug "<Area.check_and_generate_sevent> last_known_sevent = #{last_known_sevent}, self.astatuses.first.tag = #{self.astatuses.first.tag}" + if last_known_sevent != self.astatuses.first.tag - Sevent.create!({ - area_id: self.id, - atype_id: self.atype_id, - property_id: self.property_id, - astatus_id: self.astatus_id, - auser_id: self.owner_id, # инициатор события - редактор Площади - auser_type: 'AdminUser' - }) + Rails.logger.debug "<Area.check_and_generate_sevent> aga" + sparams = { + area_id: self.id, + atype_id: self.atype_id, + property_id: self.property_id, + astatus_id: self.astatus_id, + auser_id: self.owner_id, # инициатор события - редактор Площади + auser_type: 'AdminUser' + } + + # если неизвестен статус последнего события, + # значит событий изменения статуса площади ещё не было + # значит нужно создать первое событие и дату его создания + # приравнять дате создания площади [*] + # такая штука случается, когда заполняем данными из seed файла, + # и при создании не получилось фишка с передачей :astatus_ids => [1] в create!({..}) + # по-этому и появился этот код. Также по теме код из [**] + if last_known_sevent == '' + sparams[:created_at] = self.created_at + end + + s = Sevent.create!(sparams) + + pparams = { + atype_id: nil, + property_id: self.property_id, + sevent_id: s.id + } + + # см [*] + if last_known_sevent == '' + pparams[:created_at] = self.created_at + end + + # генерим запись с общими данными + # связываем её с Sevent + # чтобы можно было удалить как dependent => destroy + Pstat.create!(pparams) + end end end \ No newline at end of file