Browse Source

refactor(contract): include field type in marriage field normalization

Update `normalizeMarriageField` to extract and include the `type` property
from raw input data, supporting various naming conventions such as
`field_type` or `fieldType`. This ensures the normalized contract
contains the correct data type for each marriage field.
mortezaei 2 weeks ago
parent
commit
77050daca5
  1. 65
      src/lib/marriage-profile-contract.ts

65
src/lib/marriage-profile-contract.ts

@ -97,17 +97,36 @@ export function normalizeMarriageProfile(
const active_case: MarriageActiveCase | null =
rawActiveCase && typeof rawActiveCase === "object"
? {
case_id: String(
case_id: Number(
rawActiveCase.case_id ??
rawActiveCase.caseId ??
rawActiveCase.id ??
"",
0,
),
status:
rawActiveCase.status ??
rawActiveCase.case_status ??
rawActiveCase.caseStatus ??
"",
"introduced",
introduced_at:
rawActiveCase.introduced_at ??
rawActiveCase.introducedAt ??
new Date().toISOString(),
contact_shared_at:
rawActiveCase.contact_shared_at ??
rawActiveCase.contactSharedAt ??
null,
minutes_since_contact_shared:
rawActiveCase.minutes_since_contact_shared ??
rawActiveCase.minutesSinceContactShared ??
null,
can_report_no_contact: Boolean(
rawActiveCase.can_report_no_contact ??
rawActiveCase.canReportNoContact ??
false,
),
my_action:
rawActiveCase.my_action ?? rawActiveCase.myAction ?? "pending",
other_action:
rawActiveCase.other_action ??
rawActiveCase.otherAction ??
@ -120,6 +139,24 @@ export function normalizeMarriageProfile(
const active_subscription: MarriageActiveSubscription | null =
rawActiveSub && typeof rawActiveSub === "object"
? {
id: Number(rawActiveSub.id ?? 1),
plan: {
id: Number(rawActiveSub.plan?.id ?? 1),
title: String(rawActiveSub.plan?.title ?? "Subscription"),
price: String(rawActiveSub.plan?.price ?? "0"),
plan_type: String(rawActiveSub.plan?.plan_type ?? "standard"),
duration_days:
rawActiveSub.plan?.duration_days !== undefined
? Number(rawActiveSub.plan.duration_days)
: null,
usage_limit:
rawActiveSub.plan?.usage_limit !== undefined
? Number(rawActiveSub.plan.usage_limit)
: null,
},
start_date: String(rawActiveSub.start_date ?? new Date().toISOString()),
end_date: rawActiveSub.end_date ? String(rawActiveSub.end_date) : null,
total_usages: Number(rawActiveSub.total_usages ?? 0),
is_active: Boolean(
rawActiveSub.is_active ??
rawActiveSub.isActive ??
@ -132,10 +169,10 @@ export function normalizeMarriageProfile(
rawActiveSub.valid ??
true,
),
plan_title:
rawActiveSub.plan_title ?? rawActiveSub.planTitle ?? undefined,
expires_at:
rawActiveSub.expires_at ?? rawActiveSub.expiresAt ?? undefined,
remaining_days:
rawActiveSub.remaining_days !== undefined
? Number(rawActiveSub.remaining_days)
: undefined,
}
: null;
@ -146,19 +183,7 @@ export function normalizeMarriageProfile(
? {
id: Number(rawRecommendedPlan.id ?? 1),
title: String(rawRecommendedPlan.title ?? ""),
price: Number(rawRecommendedPlan.price ?? 50),
discounted_price:
rawRecommendedPlan.discounted_price !== undefined
? Number(rawRecommendedPlan.discounted_price)
: rawRecommendedPlan.discountedPrice !== undefined
? Number(rawRecommendedPlan.discountedPrice)
: undefined,
discount_percent:
rawRecommendedPlan.discount_percent !== undefined
? Number(rawRecommendedPlan.discount_percent)
: rawRecommendedPlan.discountPercent !== undefined
? Number(rawRecommendedPlan.discountPercent)
: undefined,
price: String(rawRecommendedPlan.price ?? "50"),
}
: null;

Loading…
Cancel
Save