Fix setup wizard starred group persistence + pencil edit
- SetupWizard: honor client.renewalDate when determining which group is starred on reopen - PolicyGroupManager: defensively handle Date or string in handleOpenEdit to unblock pencil
This commit is contained in:
parent
b44bddfc6a
commit
e6485b35dc
3 changed files with 24 additions and 3 deletions
|
|
@ -30,6 +30,7 @@ export default async function SetupWizardPage({
|
||||||
notes: true,
|
notes: true,
|
||||||
claimsAdvocateId: true,
|
claimsAdvocateId: true,
|
||||||
setupCompletedAt: true,
|
setupCompletedAt: true,
|
||||||
|
renewalDate: true,
|
||||||
policies: {
|
policies: {
|
||||||
where: { expirationDate: { gte: new Date() } },
|
where: { expirationDate: { gte: new Date() } },
|
||||||
select: {
|
select: {
|
||||||
|
|
@ -91,6 +92,7 @@ export default async function SetupWizardPage({
|
||||||
clientName={client.name}
|
clientName={client.name}
|
||||||
clientNotes={client.notes}
|
clientNotes={client.notes}
|
||||||
claimsAdvocateId={client.claimsAdvocateId}
|
claimsAdvocateId={client.claimsAdvocateId}
|
||||||
|
clientRenewalDate={client.renewalDate?.toISOString() ?? null}
|
||||||
setupCompletedAt={client.setupCompletedAt?.toISOString() ?? null}
|
setupCompletedAt={client.setupCompletedAt?.toISOString() ?? null}
|
||||||
policies={policiesData}
|
policies={policiesData}
|
||||||
existingGroups={groupsData}
|
existingGroups={groupsData}
|
||||||
|
|
|
||||||
|
|
@ -134,9 +134,16 @@ export function PolicyGroupManager({
|
||||||
|
|
||||||
const handleOpenEdit = (group: PolicyGroup) => {
|
const handleOpenEdit = (group: PolicyGroup) => {
|
||||||
setEditingGroup(group)
|
setEditingGroup(group)
|
||||||
|
const rd: any = group.renewalDate
|
||||||
|
const dateStr =
|
||||||
|
typeof rd === 'string'
|
||||||
|
? rd.split('T')[0]
|
||||||
|
: rd instanceof Date
|
||||||
|
? rd.toISOString().split('T')[0]
|
||||||
|
: new Date(rd).toISOString().split('T')[0]
|
||||||
setFormData({
|
setFormData({
|
||||||
name: group.name,
|
name: group.name,
|
||||||
renewalDate: group.renewalDate.split('T')[0],
|
renewalDate: dateStr,
|
||||||
notes: group.notes || '',
|
notes: group.notes || '',
|
||||||
policyIds: group.policies.map((p) => p.id),
|
policyIds: group.policies.map((p) => p.id),
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,7 @@ interface SetupWizardProps {
|
||||||
clientName: string
|
clientName: string
|
||||||
clientNotes: string | null
|
clientNotes: string | null
|
||||||
claimsAdvocateId: string | null
|
claimsAdvocateId: string | null
|
||||||
|
clientRenewalDate?: string | null
|
||||||
setupCompletedAt: string | null
|
setupCompletedAt: string | null
|
||||||
policies: WizardPolicy[]
|
policies: WizardPolicy[]
|
||||||
existingGroups: ExistingGroup[]
|
existingGroups: ExistingGroup[]
|
||||||
|
|
@ -143,6 +144,7 @@ export function SetupWizard({
|
||||||
clientName,
|
clientName,
|
||||||
clientNotes: initialClientNotes,
|
clientNotes: initialClientNotes,
|
||||||
claimsAdvocateId: initialAdvocateId,
|
claimsAdvocateId: initialAdvocateId,
|
||||||
|
clientRenewalDate,
|
||||||
setupCompletedAt,
|
setupCompletedAt,
|
||||||
policies,
|
policies,
|
||||||
existingGroups,
|
existingGroups,
|
||||||
|
|
@ -159,6 +161,16 @@ export function SetupWizard({
|
||||||
|
|
||||||
const buildInitialGroups = useCallback((): GroupState[] => {
|
const buildInitialGroups = useCallback((): GroupState[] => {
|
||||||
if (existingGroups.length > 0) {
|
if (existingGroups.length > 0) {
|
||||||
|
// Determine which group matches the persisted starred renewal date
|
||||||
|
const clientRdStr = clientRenewalDate
|
||||||
|
? new Date(clientRenewalDate).toISOString().split('T')[0]
|
||||||
|
: null
|
||||||
|
const matchIndex = clientRdStr
|
||||||
|
? existingGroups.findIndex(
|
||||||
|
(eg) => new Date(eg.renewalDate).toISOString().split('T')[0] === clientRdStr
|
||||||
|
)
|
||||||
|
: -1
|
||||||
|
const defaultIndex = matchIndex >= 0 ? matchIndex : 0
|
||||||
return existingGroups.map((eg, i) => {
|
return existingGroups.map((eg, i) => {
|
||||||
const gid = newGroupId()
|
const gid = newGroupId()
|
||||||
return {
|
return {
|
||||||
|
|
@ -173,12 +185,12 @@ export function SetupWizard({
|
||||||
rule: 'nearest-to-year-start' as DateRule,
|
rule: 'nearest-to-year-start' as DateRule,
|
||||||
renewalDate: new Date(eg.renewalDate).toISOString().split('T')[0],
|
renewalDate: new Date(eg.renewalDate).toISOString().split('T')[0],
|
||||||
notes: eg.notes || '',
|
notes: eg.notes || '',
|
||||||
isDefault: i === 0,
|
isDefault: i === defaultIndex,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return runEngine(policies, defaultWindowDays, defaultRule)
|
return runEngine(policies, defaultWindowDays, defaultRule)
|
||||||
}, [existingGroups, policies, defaultWindowDays, defaultRule])
|
}, [existingGroups, policies, defaultWindowDays, defaultRule, clientRenewalDate])
|
||||||
|
|
||||||
const [groups, setGroups] = useState<GroupState[]>(() => buildInitialGroups())
|
const [groups, setGroups] = useState<GroupState[]>(() => buildInitialGroups())
|
||||||
const [windowDays, setWindowDays] = useState(defaultWindowDays)
|
const [windowDays, setWindowDays] = useState(defaultWindowDays)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue