Adds draft phase functionality in legislation processes

This commit is contained in:
João Lutz
2018-10-19 15:27:18 -03:00
parent fb4b12c2d4
commit 34b58a5208
15 changed files with 209 additions and 23 deletions

View File

@@ -15,7 +15,7 @@ class Legislation::Process < ActiveRecord::Base
translates :additional_info, touch: true
include Globalizable
PHASES_AND_PUBLICATIONS = %i(debate_phase allegations_phase proposals_phase draft_publication result_publication).freeze
PHASES_AND_PUBLICATIONS = %i(draft_phase debate_phase allegations_phase proposals_phase draft_publication result_publication).freeze
has_many :draft_versions, -> { order(:id) }, class_name: 'Legislation::DraftVersion',
foreign_key: 'legislation_process_id', dependent: :destroy
@@ -29,6 +29,8 @@ class Legislation::Process < ActiveRecord::Base
validates :end_date, presence: true
validates :debate_start_date, presence: true, if: :debate_end_date?
validates :debate_end_date, presence: true, if: :debate_start_date?
validates :draft_start_date, presence: true, if: :draft_end_date?
validates :draft_end_date, presence: true, if: :draft_start_date?
validates :allegations_start_date, presence: true, if: :allegations_end_date?
validates :allegations_end_date, presence: true, if: :allegations_start_date?
validates :proposals_phase_end_date, presence: true, if: :proposals_phase_start_date?
@@ -39,6 +41,11 @@ class Legislation::Process < ActiveRecord::Base
scope :past, -> { where("end_date < ?", Date.current).order('id DESC') }
scope :published, -> { where(published: true) }
scope :not_in_draft, -> { where("draft_phase_enabled = false or (draft_start_date IS NOT NULL and draft_end_date IS NOT NULL and (draft_start_date >= ? or draft_end_date <= ?))", Date.current, Date.current) }
def draft_phase
Legislation::Process::Phase.new(draft_start_date, draft_end_date, draft_phase_enabled)
end
def debate_phase
Legislation::Process::Phase.new(debate_start_date, debate_end_date, debate_phase_enabled)
@@ -85,6 +92,7 @@ class Legislation::Process < ActiveRecord::Base
def valid_date_ranges
errors.add(:end_date, :invalid_date_range) if end_date && start_date && end_date < start_date
errors.add(:debate_end_date, :invalid_date_range) if debate_end_date && debate_start_date && debate_end_date < debate_start_date
errors.add(:draft_end_date, :invalid_date_range) if draft_end_date && draft_start_date && draft_end_date < draft_start_date
if allegations_end_date && allegations_start_date && allegations_end_date < allegations_start_date
errors.add(:allegations_end_date, :invalid_date_range)
end