Class: Ecom::Core::OvertimeSheet

Inherits:
ApplicationRecord show all
Defined in:
app/models/ecom/core/overtime_sheet.rb

Constant Summary collapse

OPEN =
'Open'.freeze
SUBMITTED =
'Submitted'.freeze
APPROVED =
'Approved'.freeze

Class Method Summary collapse

Class Method Details

.create_new(date, project_id) ⇒ Object

Overtime sheet should be created using the method below only. This is because we need to check if there is an open overtime already, and also that we have only one open overtime sheet at a time.



32
33
34
35
36
37
38
39
40
41
42
# File 'app/models/ecom/core/overtime_sheet.rb', line 32

def self.create_new(date, project_id)
  if OvertimeSheet.open_for_date_exists?(date, project_id)
    raise 'There is already an open overtime sheet for the selected date.'
  end

  if OvertimeSheet.open_exists?(project_id)
    raise 'There is already an open overtime sheet. It has to be submitted before creating a new one.'
  end

  OvertimeSheet.create(date: date, opened_at: Time.now, status: OPEN, project_id: project_id)
end

.open_exists?(project_id) ⇒ Boolean

Returns:

  • (Boolean)


19
20
21
# File 'app/models/ecom/core/overtime_sheet.rb', line 19

def self.open_exists?(project_id)
  OvertimeSheet.open(project_id).exists?
end

.open_for_date_exists?(date, project_id) ⇒ Boolean

Returns:

  • (Boolean)


23
24
25
# File 'app/models/ecom/core/overtime_sheet.rb', line 23

def self.open_for_date_exists?(date, project_id)
  OvertimeSheet.open(project_id).where(date: date).exists?
end