Sha256: 77ce016a8ce7c7df5c53bd7373e71c6372dcbd0664bdf087077261ef6ffa54a3

Contents?: true

Size: 852 Bytes

Versions: 12

Compression:

Stored size: 852 Bytes

Contents

class Downtime
  include Mongoid::Document
  include Mongoid::Timestamps

  field :message, type: String
  field :start_time, type: DateTime
  field :end_time, type: DateTime

  belongs_to :artefact

  validates_presence_of :message, :start_time, :end_time, :artefact
  validate :end_time_is_in_future, on: :create
  validate :start_time_precedes_end_time

  def self.for(artefact)
    where(artefact_id: artefact.id).first
  end

  def publicise?
    Time.zone.now.between?(start_time.to_date - 1, end_time) # starting at midnight a day before start time
  end

  private

  def end_time_is_in_future
    errors.add(:end_time, "must be in the future") if end_time && ! end_time.future?
  end

  def start_time_precedes_end_time
    errors.add(:start_time, "must be earlier than end time") if start_time && end_time && start_time >= end_time
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
govuk_content_models-28.9.0 app/models/downtime.rb
govuk_content_models-28.8.0 app/models/downtime.rb
govuk_content_models-28.7.1 app/models/downtime.rb
govuk_content_models-28.7.0 app/models/downtime.rb
govuk_content_models-28.6.2 app/models/downtime.rb
govuk_content_models-28.6.1 app/models/downtime.rb
govuk_content_models-28.6.0 app/models/downtime.rb
govuk_content_models-28.5.0 app/models/downtime.rb
govuk_content_models-28.4.0 app/models/downtime.rb
govuk_content_models-28.3.0 app/models/downtime.rb
govuk_content_models-28.2.0 app/models/downtime.rb
govuk_content_models-28.1.0 app/models/downtime.rb