Class: Mks::Rate::RateChangeRequestService
- Inherits:
-
Object
- Object
- Mks::Rate::RateChangeRequestService
- Defined in:
- app/services/mks/rate/rate_change_request_service.rb
Instance Method Summary collapse
- #approve(request, approver) ⇒ Object
- #create(params, created_by) ⇒ Object
- #update_rates(rates) ⇒ Object
Instance Method Details
#approve(request, approver) ⇒ Object
25 26 27 28 29 30 31 32 |
# File 'app/services/mks/rate/rate_change_request_service.rb', line 25 def approve(request, approver) if update_rates(request.rates) request.status = 'APPROVED' request.approved_by = approver return request.save end false end |
#create(params, created_by) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'app/services/mks/rate/rate_change_request_service.rb', line 4 def create(params, created_by) change_request = RateChangeRequest.new(params) unless params[:rates] change_request.errors.add(:base, 'Request has no rates') return [change_request, false] end change_request.created_by = created_by change_request.status = 'SUBMITTED' begin RateChangeRequest.transaction do change_request.save! return [change_request, true] end rescue => _ return [change_request, false] end end |
#update_rates(rates) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'app/services/mks/rate/rate_change_request_service.rb', line 34 def update_rates(rates) service_rates = [] rates.each do |rate| rate = rate.symbolize_keys service_rate = ServiceRate.find_by(chargeable_service_id: rate[:chargeable_service_id], equipment_item_id: rate[:equipment_item_id]) if service_rate service_rate.base_rate = rate[:base_rate] || service_rate.base_rate service_rate.utilization_rate = rate[:utilization_rate] || service_rate.utilization_rate else service_rate = ServiceRate.new(rate.except(:chargeable_service_name, :equipment_item_name)) end service_rates << service_rate end ServiceRate.transaction do service_rates.each(&:save!) end true rescue ActiveRecord::RecordInvalid false end |