1# frozen_string_literal: true
2
3require "date_core"
4require "value_semantics/monkey_patched"
5require_relative "./validators"
6
7class DbPort
8 module Status
9 SUBMITTED = "SUBMITTED"
10 COMPLETE = "COMPLETE"
11 end
12
13 value_semantics do
14 id String
15 actual_foc_date Either(DateTime, nil), default: nil, coerce: true
16 updated_at DateTime, coerce: true
17 tel ValidTelString
18 customer_id String
19 backend_sgx String
20 end
21
22 def processing_status
23 if actual_foc_date&.< DateTime.now
24 Status::COMPLETE
25 else
26 Status::SUBMITTED
27 end
28 end
29
30 def self.coerce_actual_foc_date(time)
31 time&.to_datetime
32 end
33
34 def self.coerce_updated_at(raw)
35 raw.to_datetime
36 end
37
38 def self.from(**kwargs)
39 new(**kwargs)
40 end
41end