From 58408fed071b5fa02224701ec5e3e95fd9f5590d Mon Sep 17 00:00:00 2001 From: Alireza Hassani Date: Wed, 26 Aug 2026 10:33:26 +0330 Subject: [PATCH] Fix create-business owner grid and edit renewal date. Use title/first/last as 3-4-5, repair formFull spans, and fall back renewal to created date. Co-authored-by: Cursor --- .../src/pages/BusinessesPage.module.css | 14 ++++- apps/super-admin/src/pages/BusinessesPage.tsx | 62 +++++++++++++++---- 2 files changed, 61 insertions(+), 15 deletions(-) diff --git a/apps/super-admin/src/pages/BusinessesPage.module.css b/apps/super-admin/src/pages/BusinessesPage.module.css index 9a019b6..c76f3ad 100644 --- a/apps/super-admin/src/pages/BusinessesPage.module.css +++ b/apps/super-admin/src/pages/BusinessesPage.module.css @@ -739,10 +739,18 @@ grid-column: span 2 !important; } +.formCol3 { + grid-column: span 3 !important; +} + .formCol4 { grid-column: span 4 !important; } +.formCol5 { + grid-column: span 5 !important; +} + .formCol8 { grid-column: span 8 !important; } @@ -755,8 +763,8 @@ color: var(--text-secondary); } -.formFull { - grid-column: 1 / -1; +.formGrid > .formFull { + grid-column: 1 / -1 !important; } .field textarea { @@ -867,7 +875,9 @@ .formGrid > .field, .formCol2, + .formCol3, .formCol4, + .formCol5, .formCol8 { grid-column: 1 / -1 !important; } diff --git a/apps/super-admin/src/pages/BusinessesPage.tsx b/apps/super-admin/src/pages/BusinessesPage.tsx index e99d057..3789783 100644 --- a/apps/super-admin/src/pages/BusinessesPage.tsx +++ b/apps/super-admin/src/pages/BusinessesPage.tsx @@ -125,6 +125,16 @@ function nextAnnualRenewal(contractAt: string, now = new Date()) { return { next, year: next.getFullYear(), daysRemaining } } +function toDateInputValue(iso: string | null | undefined): string { + if (!iso) return '' + const d = new Date(iso) + if (Number.isNaN(d.getTime())) return '' + const y = d.getFullYear() + const m = String(d.getMonth() + 1).padStart(2, '0') + const day = String(d.getDate()).padStart(2, '0') + return `${y}-${m}-${day}` +} + function renewalTone(daysRemaining: number): 'ok' | 'warn' | 'danger' { const months = daysRemaining / 30.437 if (months > 8) return 'ok' @@ -132,11 +142,15 @@ function renewalTone(daysRemaining: number): 'ok' | 'warn' | 'danger' { return 'danger' } -function formatRenewalCell(annualRenewalAt: string | null) { - if (!annualRenewalAt) { +function formatRenewalCell( + annualRenewalAt: string | null, + createdAt?: string | null, +) { + const contractAt = annualRenewalAt || createdAt || null + if (!contractAt) { return { yearLabel: '—', daysLabel: null as string | null, tone: null as 'ok' | 'warn' | 'danger' | null } } - const next = nextAnnualRenewal(annualRenewalAt) + const next = nextAnnualRenewal(contractAt) if (!next) { return { yearLabel: '—', daysLabel: null, tone: null } } @@ -283,6 +297,7 @@ export function BusinessesPage() { const [editName, setEditName] = useState('') const [editNameFa, setEditNameFa] = useState('') const [editAbout, setEditAbout] = useState('') + const [editAnnualRenewalAt, setEditAnnualRenewalAt] = useState('') const [editSubmitting, setEditSubmitting] = useState(false) const [editError, setEditError] = useState('') @@ -444,6 +459,9 @@ export function BusinessesPage() { setEditName(b.name) setEditNameFa(b.nameFa ?? '') setEditAbout(b.about ?? '') + setEditAnnualRenewalAt( + toDateInputValue(b.annualRenewalAt || b.createdAt), + ) setEditError('') setEditOpen(true) } @@ -650,11 +668,17 @@ export function BusinessesPage() { setEditSubmitting(true) setEditError('') + const annualRenewalAt = editAnnualRenewalAt + ? new Date(editAnnualRenewalAt).toISOString() + : editBusiness.createdAt + ? new Date(editBusiness.createdAt).toISOString() + : null try { await updateBusiness(editBusiness.id, { name, nameFa, about: editAbout.trim(), + annualRenewalAt, }) setData((prev) => { if (!prev) return prev @@ -667,6 +691,7 @@ export function BusinessesPage() { name, nameFa, about: editAbout.trim() || null, + annualRenewalAt, } : item, ), @@ -1020,7 +1045,7 @@ export function BusinessesPage() { setCreateNameFa('') setCreateAbout('') setCreateCategoryIds([]) - setCreateAnnualRenewalAt('') + setCreateAnnualRenewalAt(toDateInputValue(new Date().toISOString())) setCreateOwnerTitleId('') setCreateOwnerFirstName('') setCreateOwnerLastName('') @@ -1260,7 +1285,10 @@ export function BusinessesPage() { {!loading && data?.items?.map((b) => { - const renewal = formatRenewalCell(b.annualRenewalAt ?? null) + const renewal = formatRenewalCell( + b.annualRenewalAt ?? null, + b.createdAt, + ) return ( {b.name} @@ -1502,6 +1530,16 @@ export function BusinessesPage() { disabled={editSubmitting} /> +
+ + setEditAnnualRenewalAt(e.target.value)} + disabled={editSubmitting} + /> +