module Fizzy module Api class CalculateOutcome < ActiveInteraction::Base string :dossier_id string :protocol_subscription_id def execute response = Api.basic_auth_session.post("/dossier/#{dossier_id}"\ "/protocol_subscriptions/#{protocol_subscription_id}"\ '/calculate') process_response(response) end private def process_response(response) case response.code when 200 response when 202 raise Errors::OutcomeNotAvailableError, 'The results are currently being calculated.' when 404 raise Errors::GraphNotFoundError, 'Participant not found, or graph not supported.' else raise Errors::UnexpectedStatusError, "Status code #{response.code} not expected." end end end end end