Sha256: 9504775d501526250fcb9b22ab1620049ae662d8cf1326d1132b7c84f1e3c74a

Contents?: true

Size: 1.72 KB

Versions: 1

Compression:

Stored size: 1.72 KB

Contents

module Org
  module Model::Resign
    extend ActiveSupport::Concern

    included do
      attribute :leave_on, :date
      attribute :reason_note, :string
      attribute :handover_note, :string
      attribute :comment, :string

      validates :leave_on, :reason_note, presence: true
      validate :validate_resign_reasons

      belongs_to :member
      has_many :resign_references
      has_many :resign_reasons, through: :resign_references

      enum state: {
        init: 'init',
        approved: 'approved',
        rejected: 'rejected'
      }, _default: 'init'

      after_create_commit :send_notification

      acts_as_notify only: [:reason_note, :leave_on]
    end

    def do_trigger(params = {})
      self.trigger_to(params.slice(:state))

      self.class.transaction do
        self.save!
        to_notification(
          sender: self.member.office.leader,
          member: self.member,
          title: "Your resignation request has been #{self.state_i18n}.",
          body: "Your resignation request has been #{self.state_i18n}.",
          link: url_helpers.my_resign_url,
          cc_emails: [
            self.member.office.leader.email
          ],
        )
      end
    end

    def send_notification
      to_notification(
        sender: self.member,
        member: self.member.office.leader,
        body: "#{self.member.name} has requested resignation",
        title: "#{self.member.name} has requested resignation",
        cc_emails: [
          self.member.email
        ],
        link: url_helpers.admin_resign_url(id: self.id),
        verbose: true
      )
    end

    def validate_resign_reasons
      self.errors.add :base, 'Please select one reason at least' if self.resign_reasons.empty?
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails_org-0.0.1 app/models/org/model/resign.rb