# frozen_string_literal: true

require "value_semantics/monkey_patched"
require_relative "./validators"

class DbPort
	module Status
		SUBMITTED = "submitted"
		COMPLETE = "complete"
		FOC = "foc"
	end

	value_semantics do
		id String
		processing_status PortProcessingStatus
		actual_foc_date Either(DateTime, nil), default: nil, coerce: true
		updated_at DateTime, coerce: true
		tel ValidTelString
		customer_id String
		backend_sgx String
	end

	def self.coerce_actual_foc_date(time)
		time&.to_datetime
	end

	def self.coerce_updated_at(raw)
		raw.to_datetime
	end

	def self.from(**kwargs)
		new(**kwargs)
	end
end
