b22e5baa5c
Build and Push Docker Image / build (push) Successful in 1m23s
- Implemented client-side validation functions for tax ID, VAT ID, IBAN, BIC, and website URL. - Added debug logging functionality to assist in development. - Created a comprehensive validation function for company form data. feat: initialize database with Prisma migrations - Added a server-side script to run Prisma migrations and check database health. - Ensured safe initialization of the database to prevent concurrent migrations. feat: comprehensive server-side error logging - Developed an error logging system that captures detailed error context, including request details and stack traces. - Implemented logging functions for different error types (route, action, database, API, startup). fix: validate user ID existence in audit logs - Updated the logging function to validate that the user ID exists in the database before logging actions. fix: update schemas for optional fields and validation - Modified schemas to allow for nullable fields and refined validation logic for tax ID, VAT ID, IBAN, and BIC. feat: enhance error boundary for better debugging - Improved error boundary to log detailed error information in development mode. - Added a debug panel to the main application layout for real-time error tracking. feat: implement company deletion functionality in admin routes - Added a new API route for deleting companies with appropriate logging. - Integrated delete confirmation in the admin interface for better user experience. fix: handle API errors gracefully - Wrapped API actions in try-catch blocks to log errors and return appropriate responses. feat: generate and save invoice PDFs - Implemented functionality to generate and save invoice PDFs upon status updates. - Added a new column in the database for storing the URL of the generated PDF. chore: update Docker image reference - Changed the Docker image reference to point to the new Git repository. chore: update package dependencies - Added @radix-ui/react-tooltip for enhanced UI components. - Updated package-lock.json to reflect new dependencies.
58 lines
1.5 KiB
TypeScript
58 lines
1.5 KiB
TypeScript
|
|
import { Link, useNavigate } from "react-router";
|
|
|
|
export const handle = {
|
|
breadcrumbs: () => [
|
|
{ label: "Mandanten", href: "/companies" },
|
|
{ label: "Neuer Mandant" },
|
|
],
|
|
};
|
|
import { CompanyForm } from "@/components/company/company-form";
|
|
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
|
import { ChevronLeft } from "lucide-react";
|
|
|
|
export default function NewCompanyPage() {
|
|
const navigate = useNavigate();
|
|
|
|
async function handleSubmit(data: Record<string, unknown>) {
|
|
const res = await fetch("/api/companies", {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify(data),
|
|
});
|
|
|
|
if (res.ok) {
|
|
const company = await res.json();
|
|
navigate(`/companies/${company.id}`);
|
|
}
|
|
}
|
|
|
|
return (
|
|
<div>
|
|
<Link
|
|
to="/companies"
|
|
className="inline-flex items-center gap-1 text-sm text-gray-500 hover:text-gray-700 mb-6"
|
|
>
|
|
<ChevronLeft className="h-4 w-4" /> Zurück zu Mandanten
|
|
</Link>
|
|
|
|
<div className="mb-8">
|
|
<h1 className="text-2xl font-bold text-gray-900">Neuer Mandant</h1>
|
|
<p className="text-gray-500 mt-1">Legen Sie einen neuen Mandanten an</p>
|
|
</div>
|
|
|
|
<Card>
|
|
<CardHeader>
|
|
<CardTitle>Mandantendaten</CardTitle>
|
|
</CardHeader>
|
|
<CardContent>
|
|
<CompanyForm
|
|
onSubmit={handleSubmit}
|
|
submitLabel="Mandant anlegen"
|
|
/>
|
|
</CardContent>
|
|
</Card>
|
|
</div>
|
|
);
|
|
}
|