Files
policy-ui/app/composables/useEmissionsQueue.ts
Jordan Weingarten 67482f6629 WIP jordan
2026-04-16 11:11:44 -05:00

53 lines
1.5 KiB
TypeScript

import { useLocalStorageRef } from '~/utils/useLocalStorageRef'
export type EmissionItem = {
id: string
createdAt: string
customerLabel: string
insurerSlug: string
subRamoKey: string
productLine: string
status: 'pending_review' | 'approved' | 'sent_to_insurer' | 'in_force'
bindToken?: string
/** 'auto' = generated from quote acceptance, 'manual' = created from solicitud form */
source?: 'auto' | 'manual'
/** Carrier product name when auto-generated from comparative */
carrierProduct?: string
}
const KEY = 'policy-ui-emissions-queue-v1'
export function useEmissionsQueue() {
const items = useLocalStorageRef<EmissionItem[]>(KEY, () => [])
function enqueue(
entry: Omit<EmissionItem, 'id' | 'createdAt' | 'status'> & { status?: EmissionItem['status'] }
) {
const row: EmissionItem = {
id: crypto.randomUUID?.() ?? String(Date.now()),
createdAt: new Date().toISOString(),
status: entry.status ?? 'pending_review',
...entry
}
items.value = [row, ...items.value]
return row
}
function approve(id: string) {
const i = items.value.find((x) => x.id === id)
if (i) i.status = 'approved'
}
function sendToInsurer(id: string) {
const i = items.value.find((x) => x.id === id)
if (i) i.status = 'sent_to_insurer'
}
function markInForce(id: string) {
const i = items.value.find((x) => x.id === id)
if (i) i.status = 'in_force'
}
return { items, enqueue, approve, sendToInsurer, markInForce }
}