Class: EducodeSales::Idea

Inherits:
ApplicationRecord show all
Defined in:
app/models/educode_sales/idea.rb

Instance Method Summary collapse

Instance Method Details

#assist_staffsObject



38
39
40
# File 'app/models/educode_sales/idea.rb', line 38

def assist_staffs
  Staff.where(id: self.assist_staff_ids)
end

#attachmentsObject



46
47
48
# File 'app/models/educode_sales/idea.rb', line 46

def attachments
  Attachment.where(id: self.attachment_ids)
end

#other_staffsObject



42
43
44
# File 'app/models/educode_sales/idea.rb', line 42

def other_staffs
  Staff.where(id: self.other_staff_ids)
end

#recycleObject

before_save :check_changes



34
35
36
# File 'app/models/educode_sales/idea.rb', line 34

def recycle
  self.update(deleted_at: nil, deleter_id: nil, is_deleted: false)
end

#save_history(attr, old_value, new_value) ⇒ Object

def check_changes

unless self.new_record?
  history = []
  arr = self.attributes.except(:creator_id, :id, :history_type, :deleter_id, :is_deleted, :deleted_at, :history_record, :created_at, :updated_at).keys
  arr.each do |attr|
    if self.send("#{attr}_changed?")
      old_value, new_value = self.send("#{attr}_was"), self.send(attr)
      res = save_history(attr, old_value, new_value)
      history << res if res
    end
  end
  self.idea_histories.create(content: history, staff: current_user)
end

end



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'app/models/educode_sales/idea.rb', line 69

def save_history(attr, old_value, new_value)
  case attr
  when "school_id"
    old_value = School.find_by(id: old_value)&.name
    new_value = School.find_by(id: new_value)&.name
    "学校/单位由“#{old_value}”变更为“#{new_value}"
  when "name"
    "项目名称由“#{old_value}”变更为“#{new_value}"
  when "level"
    "优先级由“#{old_value}”变更为“#{new_value}"
  when "staff_id"
    old_value = Staff.find_by(id: old_value)&.user&.real_name
    new_value = Staff.find_by(id: new_value)&.user&.real_name
    "方案经理由“#{old_value}”变更为“#{new_value}"
  when "status"
    "状态由“#{old_value}”变更为“#{new_value}"
  when "types"
    "类型由“#{old_value}”变更为“#{new_value}"
  when "model"
    "部署模式由“#{old_value}”变更为“#{new_value}"
  when "hardware"
    "硬件规模(万)由“#{old_value}”变更为“#{new_value}"
  when "project"
    "并发规模(人)由“#{old_value}”变更为“#{new_value}"
  when "money"
    "项目预算(万)由“#{old_value}”变更为“#{new_value}"
  when "end_time"
    "截止时间由“#{old_value}”变更为“#{new_value}"
  when "content"
    "需求说明由“#{old_value}”变更为“#{new_value}"
  when "department_id"
    old_value = Department.find_by(id: old_value)&.name
    new_value = Department.find_by(id: new_value)&.name
    "部门由“#{old_value}”变更为“#{new_value}"
  when "manager_name"
    "单位联系人由“#{old_value}”变更为“#{new_value}"
  when "manager_phone"
    "负责人电话由“#{old_value}”变更为“#{new_value}"
  else
    nil
  end
end

#soft_destroy(staff_id) ⇒ Object



50
51
52
# File 'app/models/educode_sales/idea.rb', line 50

def soft_destroy(staff_id)
  self.update(deleted_at: Time.now, deleter_id: staff_id, is_deleted: true)
end