diff --git a/lib/policy_service/consumers/quote_task_consumer.ex b/lib/policy_service/consumers/quote_task_consumer.ex index 1203684..475a675 100644 --- a/lib/policy_service/consumers/quote_task_consumer.ex +++ b/lib/policy_service/consumers/quote_task_consumer.ex @@ -9,7 +9,7 @@ defmodule PolicyService.Consumers.QuoteTaskConsumer do @exchange "workload_service.events.quote_task_completed" @queue "policy_service.quote_task_consumer" - @routing_key "quote_task_completed" + @routing_key "quote_task.completed" def start_link(opts \\ []), do: GenServer.start_link(__MODULE__, opts, name: __MODULE__) @@ -32,6 +32,7 @@ defmodule PolicyService.Consumers.QuoteTaskConsumer do Logger.error("QuoteTaskConsumer failed: #{inspect(reason)}") AMQP.Basic.nack(ch, tag, requeue: false) end + {:noreply, state} end @@ -40,31 +41,63 @@ defmodule PolicyService.Consumers.QuoteTaskConsumer do def handle_info({:basic_cancel_ok, _}, state), do: {:noreply, state} defp dispatch(%{ - "application_id" => %{"org_id" => org_id, "policy_type" => policy_type, "application_id" => app_id}, - "task_info" => %{"provider_id" => provider_id}, - "submission" => %{"quote_id" => quote_id, "recorded_by" => recorded_by, "valid_until" => valid_until, "plans" => plans} - }) do - cmd = case policy_type do - "car" -> %CarPolicy.RecordProviderQuote{ - id: PolicyId.new(org_id, policy_type, app_id), - recorded_by: recorded_by || "system", - provider_id: provider_id, - quote_id: quote_id, - valid_until: parse_date(valid_until), - plans: Enum.map(plans || [], &%{plan_id: &1["plan_id"], name: &1["name"], premium: &1["premium"], coverage_details: &1["coverage_details"]}) - } - "fire" -> %FirePolicy.RecordProviderQuote{ - id: PolicyId.new(org_id, policy_type, app_id), - recorded_by: recorded_by || "system", - provider_id: provider_id, - quote_id: quote_id, - valid_until: parse_date(valid_until), - plans: Enum.map(plans || [], &%{plan_id: &1["plan_id"], name: &1["name"], premium: &1["premium"], coverage_details: &1["coverage_details"]}) - } - end + "application_id" => %{ + "org_id" => org_id, + "policy_type" => policy_type, + "application_id" => app_id + }, + "task_info" => %{"provider_id" => provider_id}, + "submission" => %{ + "quote_id" => quote_id, + "recorded_by" => recorded_by, + "valid_until" => valid_until, + "plans" => plans + } + }) do + cmd = + case policy_type do + "car" -> + %CarPolicy.RecordProviderQuote{ + id: PolicyId.new(org_id, policy_type, app_id), + recorded_by: recorded_by || "system", + provider_id: provider_id, + quote_id: quote_id, + valid_until: parse_date(valid_until), + plans: + Enum.map( + plans || [], + &%{ + plan_id: &1["plan_id"], + name: &1["name"], + premium: &1["premium"], + coverage_details: &1["coverage_details"] + } + ) + } + + "fire" -> + %FirePolicy.RecordProviderQuote{ + id: PolicyId.new(org_id, policy_type, app_id), + recorded_by: recorded_by || "system", + provider_id: provider_id, + quote_id: quote_id, + valid_until: parse_date(valid_until), + plans: + Enum.map( + plans || [], + &%{ + plan_id: &1["plan_id"], + name: &1["name"], + premium: &1["premium"], + coverage_details: &1["coverage_details"] + } + ) + } + end + CommandedApp.dispatch(cmd, consistency: :strong) end defp parse_date(nil), do: nil defp parse_date(s) when is_binary(s), do: Date.from_iso8601(s) |> elem(1) -end \ No newline at end of file +end