# == Schema Information # # Table name: versions # # id :integer not null, primary key # project_id :integer default("0"), not null # name :string(255) default(""), not null # description :text(65535) # effective_date :date # created_on :datetime # updated_on :datetime # wiki_page_title :string(255) # status :string(255) default("open") # sharing :string(255) default("none"), not null # user_id :integer # issues_count :integer default("0") # closed_issues_count :integer default("0") # percent :float(24) default("0") # # Indexes # # index_versions_on_sharing (sharing) # versions_project_id (project_id) # class Version < ApplicationRecord belongs_to :project, counter_cache: true, touch: true has_many :issues, class_name: "Issue", foreign_key: "fixed_version_id" belongs_to :user, optional: true has_many :opened_issues, -> {where(issue_classify: "issue").where.not(status_id: 5)}, class_name: "Issue", foreign_key: :fixed_version_id has_many :closed_issues, -> {where(issue_classify: "issue", status_id: 5)}, class_name: "Issue", foreign_key: :fixed_version_id scope :version_includes, ->{includes(:issues, :user)} scope :closed, ->{where(status: 'closed')} scope :opening, ->{where(status: 'open')} # def open_issues_count # issues.select(:id,:status_id).where(status_id: [1,2,3,4,6]).size # end # # def close_issues_count # issues.select(:id,:status_id).where(status_id: 5).size # end after_create :send_create_message_to_notice_system after_save :send_update_message_to_notice_system def issue_percent issues_total_count = opened_issues.size + closed_issues.size issues_total_count.zero? ? 0.0 : closed_issues.size.to_f / issues_total_count end def version_user User.select(:login, :lastname,:firstname, :nickname)&.find_by_id(self.user_id) end def to_builder Jbuilder.new do |version| version.(self, :id, :name, :description, :effective_date) end end private def send_create_message_to_notice_system SendTemplateMessageJob.perform_later('ProjectMilestone', self.id, self.user_id) if Site.has_notice_menu? end def send_update_message_to_notice_system SendTemplateMessageJob.perform_later('ProjectMilestoneCompleted', self.id) if Site.has_notice_menu? && self.issue_percent == 1.0 end end