app/models/c80_estate/area.rb in c80_estate-0.1.0.1 vs app/models/c80_estate/area.rb in c80_estate-0.1.0.2
- old
+ new
@@ -22,10 +22,15 @@
:allow_destroy => true
has_many :comments, :dependent => :destroy # площадь можно прокомментировать
has_and_belongs_to_many :astatuses, # единственный статус: либо занята, либо свободна
:join_table => 'c80_estate_areas_astatuses'
+ has_many :sevents, :dependent => :destroy
+
+ after_create :create_initial_sevent
+ after_update :check_and_generate_sevent
+
def self.all_areas
self.all
end
def self.free_areas
@@ -58,15 +63,70 @@
res = astatuses.first.title
end
res
end
+ def astatus_id
+ res = -1
+ if astatuses.count > 0
+ res = astatuses.first.id
+ end
+ res
+ end
+
def assigned_person_title
res = "-"
if assigned_person.present?
res = assigned_person.email
end
res
+ end
+
+ def owner_id
+ res = -1
+ if owner.present?
+ res = owner.id
+ end
+ res
+ end
+
+ protected
+
+ # при создании площади генерится начальное событие
+ def create_initial_sevent
+ Rails.logger.debug "<Area.create_initial_sevent>"
+
+ 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'
+ })
+
+ end
+
+ def check_and_generate_sevent
+ Rails.logger.debug "<Area.check_and_generate_sevent>"
+
+ # находим последнее известное событие
+ # фиксируем его статус
+ last_known_sevent = self.sevents.last.astatus.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'
+ })
+ end
+
end
end
end
\ No newline at end of file