From 5a98549a24176f6839005e42b57dd50bb69f02c2 Mon Sep 17 00:00:00 2001 From: HaimKortovich Date: Mon, 27 Apr 2026 14:14:19 -0500 Subject: [PATCH] consume commands correctly --- .../consumers/quote_task_consumer.ex | 44 +++++++++++++++++-- .../consumers/solicitation_task_consumer.ex | 32 +++++++++++++- 2 files changed, 72 insertions(+), 4 deletions(-) diff --git a/lib/policy_service/consumers/quote_task_consumer.ex b/lib/policy_service/consumers/quote_task_consumer.ex index cbe4c8c..3708d1a 100644 --- a/lib/policy_service/consumers/quote_task_consumer.ex +++ b/lib/policy_service/consumers/quote_task_consumer.ex @@ -4,7 +4,7 @@ defmodule PolicyService.Consumers.QuoteTaskConsumer do require Logger alias PolicyService.CommandedApp - alias PolicyService.Commands.{CarPolicy, FirePolicy} + alias PolicyService.Commands.{CarPolicy, LifePolicy, FireStructurePolicy, FireContentsPolicy} alias PolicyService.Aggregates.PolicyId @exchange "workload_service.events.quote_task_completed" @@ -88,8 +88,46 @@ defmodule PolicyService.Consumers.QuoteTaskConsumer do ) } - "fire" -> - %FirePolicy.RecordProviderQuote{ + "life" -> + %LifePolicy.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_structure" -> + %FireStructurePolicy.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_contents" -> + %FireContentsPolicy.RecordProviderQuote{ id: PolicyId.new(org_id, policy_type, app_id), recorded_by: recorded_by || "system", provider_id: provider_id, diff --git a/lib/policy_service/consumers/solicitation_task_consumer.ex b/lib/policy_service/consumers/solicitation_task_consumer.ex index 53d024b..622d70b 100644 --- a/lib/policy_service/consumers/solicitation_task_consumer.ex +++ b/lib/policy_service/consumers/solicitation_task_consumer.ex @@ -3,7 +3,7 @@ defmodule PolicyService.Consumers.SolicitationTaskConsumer do require Logger alias PolicyService.CommandedApp - alias PolicyService.Commands.CarPolicy + alias PolicyService.Commands.{CarPolicy, LifePolicy, FireStructurePolicy, FireContentsPolicy} alias PolicyService.Aggregates.PolicyId @exchange "workload_service.events.solicitation_task_completed" @@ -72,6 +72,36 @@ defmodule PolicyService.Consumers.SolicitationTaskConsumer do issued_at: Map.get(submission, "issued_at") || DateTime.utc_now() |> DateTime.to_iso8601() } + + "life" -> + %LifePolicy.RecordPolicyIssued{ + id: PolicyId.new(org_id, policy_type, app_id), + provider_policy_number: Map.get(submission, "provider_policy_number"), + effective_date: Map.get(submission, "effective_date"), + expiry_date: Map.get(submission, "expiry_date"), + issued_at: + Map.get(submission, "issued_at") || DateTime.utc_now() |> DateTime.to_iso8601() + } + + "fire_structure" -> + %FireStructurePolicy.RecordPolicyIssued{ + id: PolicyId.new(org_id, policy_type, app_id), + provider_policy_number: Map.get(submission, "provider_policy_number"), + effective_date: Map.get(submission, "effective_date"), + expiry_date: Map.get(submission, "expiry_date"), + issued_at: + Map.get(submission, "issued_at") || DateTime.utc_now() |> DateTime.to_iso8601() + } + + "fire_contents" -> + %FireContentsPolicy.RecordPolicyIssued{ + id: PolicyId.new(org_id, policy_type, app_id), + provider_policy_number: Map.get(submission, "provider_policy_number"), + effective_date: Map.get(submission, "effective_date"), + expiry_date: Map.get(submission, "expiry_date"), + issued_at: + Map.get(submission, "issued_at") || DateTime.utc_now() |> DateTime.to_iso8601() + } end case CommandedApp.dispatch(cmd, consistency: :strong) do