Fix: Implement company submission and validation plan

This commit is contained in:
gpt-engineer-app[bot]
2025-10-10 19:28:15 +00:00
parent c62935818a
commit 5adf855b04
7 changed files with 591 additions and 21 deletions

View File

@@ -1,3 +1,4 @@
import { useState } from 'react';
import { useForm } from 'react-hook-form';
import { zodResolver } from '@hookform/resolvers/zod';
import * as z from 'zod';
@@ -15,6 +16,10 @@ import { useCompanyHeadquarters } from '@/hooks/useAutocompleteData';
import { useUserRole } from '@/hooks/useUserRole';
import { EntityMultiImageUploader, ImageAssignments } from '@/components/upload/EntityMultiImageUploader';
import { FlexibleDateInput, type DatePrecision } from '@/components/ui/flexible-date-input';
import { submitManufacturerCreation, submitManufacturerUpdate } from '@/lib/entitySubmissionHelpers';
import { useAuth } from '@/hooks/useAuth';
import { toast } from 'sonner';
import { useNavigate } from 'react-router-dom';
type ManufacturerFormData = z.infer<typeof entitySchemas.manufacturer>;
@@ -55,6 +60,9 @@ interface ManufacturerFormProps {
export function ManufacturerForm({ onSubmit, onCancel, initialData }: ManufacturerFormProps) {
const { isModerator } = useUserRole();
const { headquarters } = useCompanyHeadquarters();
const { user } = useAuth();
const navigate = useNavigate();
const [isSubmitting, setIsSubmitting] = useState(false);
const {
register,
@@ -88,7 +96,29 @@ export function ManufacturerForm({ onSubmit, onCancel, initialData }: Manufactur
</CardTitle>
</CardHeader>
<CardContent>
<form onSubmit={handleSubmit((data) => onSubmit(data as unknown as ManufacturerFormData))} className="space-y-6">
<form onSubmit={handleSubmit(async (data) => {
if (!user) {
toast.error('You must be logged in to submit');
return;
}
setIsSubmitting(true);
try {
if (initialData?.id) {
await submitManufacturerUpdate(initialData.id, data as unknown as ManufacturerFormData, user.id);
toast.success('Manufacturer update submitted for review');
} else {
await submitManufacturerCreation(data as unknown as ManufacturerFormData, user.id);
toast.success('Manufacturer submitted for review');
}
onCancel();
} catch (error) {
console.error('Submission error:', error);
toast.error(error instanceof Error ? error.message : 'Failed to submit manufacturer');
} finally {
setIsSubmitting(false);
}
})} className="space-y-6">
{/* Basic Information */}
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
<div className="space-y-2">
@@ -204,13 +234,13 @@ export function ManufacturerForm({ onSubmit, onCancel, initialData }: Manufactur
{/* Actions */}
<div className="flex gap-3 justify-end">
<Button type="button" variant="outline" onClick={onCancel}>
<Button type="button" variant="outline" onClick={onCancel} disabled={isSubmitting}>
<X className="w-4 h-4 mr-2" />
Cancel
</Button>
<Button type="submit">
<Button type="submit" disabled={isSubmitting}>
<Save className="w-4 h-4 mr-2" />
Save Manufacturer
{isSubmitting ? 'Submitting...' : 'Save Manufacturer'}
</Button>
</div>
</form>