Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module Enrolments
- class Suspend
- attr_reader :enrolment, :responses, :comment, :user_id
- attr_writer :event_service, :suspend_enrolment_presentation_service
- def initialize
- @responses = []
- end
- def call(enrolment, user_id, comment)
- @enrolment = enrolment
- @user_id = user_id
- @comment = comment
- suspend_enrolment_presentations
- if all_enrolment_presentations_suspended?
- suspend_enrolment
- raise_suspended_enrolment_event
- create_enrolment_comment
- end
- end
- private
- attr_reader :response
- def suspend_enrolment_presentations
- enrolment.enrolment_presentations.each do |ep|
- @responses << suspend_enrolment_presentation_service.call(ep)
- end
- end
- def all_enrolment_presentations_suspended?
- @responses.all?{ |r| r[:success] }
- end
- def suspend_enrolment
- enrolment.status = 'Suspended'
- enrolment.save
- end
- def raise_suspended_enrolment_event
- event_service.call(enrolment)
- end
- def create_enrolment_comment
- EnrolmentComment.create(comment: comment, user_id: user_id, enrolment_id: enrolment.id)
- end
- def event_service
- @event_service ||= Events::Outgoing::Enrolments::SuspendedEnrolment.new
- end
- def suspend_enrolment_presentation_service
- @suspend_enrolment_presentation_service ||= Enrolments::EnrolmentPresentations::Suspend.new
- end
- end
- end
- class Enrolments::SuspendWithoutErrors < Enrolments::Suspend
- def raise_suspended_enrolment_event
- # change the implementation here
- end
- end
- class Enrolments::Suspend
- ...
- class_attribute :event_service, :suspend_enrolment_presentation_service
- ...
- end
- class Enrolments::Suspend
- ...
- class_attribute :event_service, :suspend_enrolment_presentation_service
- # create the services used for this class
- self.event_service = proc {|enrollment| ... }
- self.suspend_enrolment_presentation_service = proc {|e| ... }
- end
- class Enrolments::Suspend
- ...
- def event_service(enrollment)
- ...
- end
- def suspend_enrolment_presentation_service(enrollment)
- ...
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement