WIP jordan
This commit is contained in:
52
app/composables/useEmissionsQueue.ts
Normal file
52
app/composables/useEmissionsQueue.ts
Normal file
@@ -0,0 +1,52 @@
|
||||
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 }
|
||||
}
|
||||
Reference in New Issue
Block a user