fix: remove as-any casts, type Dashboard data properly
- Route handlers: add exhaustive return after error checks so TypeScript narrows the union and result properties are accessible without casts - attendance.service: use Prisma.attendanceGetPayload for included relations - projects.service: remove unnecessary cast on orders relation - Dashboard.tsx: replace Record<string,any> with proper DashData interface Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -160,6 +160,7 @@ export default async function invoicesRoutes(
|
||||
`Neplatný přechod stavu z "${result.currentStatus}" na "${result.newStatus}"`,
|
||||
400,
|
||||
);
|
||||
return error(reply, "Neznámá chyba", 500);
|
||||
}
|
||||
|
||||
await logAudit({
|
||||
@@ -168,7 +169,7 @@ export default async function invoicesRoutes(
|
||||
action: "update",
|
||||
entityType: "invoice",
|
||||
entityId: id,
|
||||
description: `Upravena faktura ${(result as any).invoice_number}`,
|
||||
description: `Upravena faktura ${result.invoice_number}`,
|
||||
});
|
||||
return success(reply, { id }, 200, "Faktura byla aktualizována");
|
||||
},
|
||||
|
||||
@@ -173,7 +173,7 @@ export default async function projectsRoutes(
|
||||
const body = request.body as Record<string, unknown>;
|
||||
const deleteFiles = !!body?.delete_files;
|
||||
const result = await deleteProject(id, deleteFiles);
|
||||
if (result && "error" in result) {
|
||||
if ("error" in result) {
|
||||
if (result.error === "not_found")
|
||||
return error(reply, "Projekt nenalezen", 404);
|
||||
if (result.error === "has_order")
|
||||
@@ -182,6 +182,7 @@ export default async function projectsRoutes(
|
||||
"Nelze smazat projekt propojený s objednávkou. Nejdříve smažte objednávku.",
|
||||
400,
|
||||
);
|
||||
return error(reply, "Neznámá chyba", 500);
|
||||
}
|
||||
|
||||
await logAudit({
|
||||
@@ -190,7 +191,7 @@ export default async function projectsRoutes(
|
||||
action: "delete",
|
||||
entityType: "project",
|
||||
entityId: id,
|
||||
description: `Smazán projekt ${(result as any).name}`,
|
||||
description: `Smazán projekt ${result.name}`,
|
||||
});
|
||||
return success(reply, null, 200, "Projekt smazán");
|
||||
},
|
||||
|
||||
@@ -278,6 +278,7 @@ export default async function quotationsRoutes(
|
||||
return error(reply, "Nabídka nenalezena", 404);
|
||||
if (result.error === "invalidated")
|
||||
return error(reply, "Nelze upravit zneplatněnou nabídku", 400);
|
||||
return error(reply, "Neznámá chyba", 500);
|
||||
}
|
||||
|
||||
// Keep lock — user stays on the page after save
|
||||
@@ -288,7 +289,7 @@ export default async function quotationsRoutes(
|
||||
action: "update",
|
||||
entityType: "quotation",
|
||||
entityId: id,
|
||||
description: `Upravena nabídka ${(result as any).quotation_number}`,
|
||||
description: `Upravena nabídka ${result.quotation_number}`,
|
||||
});
|
||||
return success(reply, { id }, 200, "Nabídka byla uložena");
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user