Class: Ecom::Core::CrewContractTransactionService
- Inherits:
-
Object
- Object
- Ecom::Core::CrewContractTransactionService
- Defined in:
- app/services/ecom/core/crew_contract_transaction_service.rb
Instance Method Summary collapse
- #activate_contract(crew_contract) ⇒ Object
-
#create_new_id_card(crew, valid_until) ⇒ Object
invalidate other Id cards and creates a new ID card.
- #deactivate_contract(crew_contract) ⇒ Object
- #execute(transaction_type, crew_contract) ⇒ Object
- #invalidate_id_card(crew) ⇒ Object
- #make_crew_active(crew) ⇒ Object
- #make_crew_inactive(crew) ⇒ Object
Instance Method Details
#activate_contract(crew_contract) ⇒ Object
46 47 48 |
# File 'app/services/ecom/core/crew_contract_transaction_service.rb', line 46 def activate_contract(crew_contract) crew_contract.update(status: :in_effect) end |
#create_new_id_card(crew, valid_until) ⇒ Object
invalidate other Id cards and creates a new ID card
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'app/services/ecom/core/crew_contract_transaction_service.rb', line 67 def create_new_id_card(crew, valid_until) issued_on = Time.now previous_id_card = Ecom::Core::CrewIdCard.where(crew_id: crew.id).last previous_id_card&.update(status: 'Invalid') new_id_card = Ecom::Core::CrewIdCard.new( crew_id: crew.id, issued_on: issued_on, valid_until: valid_until, status: 'Valid' ) raise StandardError, new_id_card.errors. unless new_id_card.save end |
#deactivate_contract(crew_contract) ⇒ Object
50 51 52 |
# File 'app/services/ecom/core/crew_contract_transaction_service.rb', line 50 def deactivate_contract(crew_contract) crew_contract.update(status: :void) end |
#execute(transaction_type, crew_contract) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'app/services/ecom/core/crew_contract_transaction_service.rb', line 4 def execute(transaction_type, crew_contract) Ecom::Core::CrewContractTransaction.transaction do case transaction_type when Ecom::Core::CrewContractTransaction::TXN_UPDATE_CREW_TYPE create_new_id_card(crew_contract.crew, crew_contract.to) # update crew type crew = crew_contract.crew crew.update(crew_type_id: crew_contract.crew_type_id) when Ecom::Core::CrewContractTransaction::TXN_UPDATE_PLACE_OF_WORK create_new_id_card(crew_contract.crew, crew_contract.to) when Ecom::Core::CrewContractTransaction::TXN_UPDATE_WAGE crew = crew_contract.crew # update wage crew.update(wage: crew_contract.wage, wage_in_words: crew_contract.wage_in_words) when Ecom::Core::CrewContractTransaction::TXN_UPDATE_VALIDITY # make crew active create_new_id_card(crew_contract.crew, crew_contract.to) make_crew_active(crew_contract.crew) activate_contract(crew_contract) when Ecom::Core::CrewContractTransaction::TXN_TERMINATE_CONTRACT # make crew inactive make_crew_inactive(crew_contract.crew) # make ID card invalid invalidate_id_card(crew_contract.crew) # make the contract void deactivate_contract(crew_contract) end end end |
#invalidate_id_card(crew) ⇒ Object
83 84 85 86 |
# File 'app/services/ecom/core/crew_contract_transaction_service.rb', line 83 def invalidate_id_card(crew) current_id_card = Ecom::Core::CrewIdCard.where(crew_id: crew.id).last current_id_card.update(status: 'Invalid') end |
#make_crew_active(crew) ⇒ Object
54 55 56 57 58 |
# File 'app/services/ecom/core/crew_contract_transaction_service.rb', line 54 def make_crew_active(crew) return if crew.active crew.update(active: true) end |
#make_crew_inactive(crew) ⇒ Object
60 61 62 63 64 |
# File 'app/services/ecom/core/crew_contract_transaction_service.rb', line 60 def make_crew_inactive(crew) return unless crew.active crew.update(active: false) end |