diff --git a/.replit b/.replit index c50bc15..0e72d24 100644 --- a/.replit +++ b/.replit @@ -19,6 +19,10 @@ externalPort = 80 localPort = 33035 externalPort = 3001 +[[ports]] +localPort = 34507 +externalPort = 4200 + [[ports]] localPort = 41343 externalPort = 3000 diff --git a/client/src/pages/guards.tsx b/client/src/pages/guards.tsx index d9f62a1..d4dc9f0 100644 --- a/client/src/pages/guards.tsx +++ b/client/src/pages/guards.tsx @@ -7,6 +7,7 @@ import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, Di import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { Switch } from "@/components/ui/switch"; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { insertGuardSchema, insertCertificationSchema } from "@shared/schema"; @@ -31,8 +32,12 @@ export default function Guards() { const form = useForm({ resolver: zodResolver(insertGuardSchema), defaultValues: { + firstName: "", + lastName: "", + email: "", badgeNumber: "", phoneNumber: "", + location: "roccapiemonte", isArmed: false, hasFireSafety: false, hasFirstAid: false, @@ -44,8 +49,12 @@ export default function Guards() { const editForm = useForm({ resolver: zodResolver(insertGuardSchema), defaultValues: { + firstName: "", + lastName: "", + email: "", badgeNumber: "", phoneNumber: "", + location: "roccapiemonte", isArmed: false, hasFireSafety: false, hasFirstAid: false, @@ -111,8 +120,12 @@ export default function Guards() { const openEditDialog = (guard: GuardWithCertifications) => { setEditingGuard(guard); editForm.reset({ + firstName: guard.firstName || "", + lastName: guard.lastName || "", + email: guard.email || "", badgeNumber: guard.badgeNumber, phoneNumber: guard.phoneNumber || "", + location: guard.location || "roccapiemonte", isArmed: guard.isArmed, hasFireSafety: guard.hasFireSafety, hasFirstAid: guard.hasFirstAid, @@ -146,6 +159,50 @@ export default function Guards() {
+
+ ( + + Nome + + + + + + )} + /> + + ( + + Cognome + + + + + + )} + /> +
+ + ( + + Email + + + + + + )} + /> + ( - Telefono + Cellulare @@ -174,6 +231,29 @@ export default function Guards() { )} /> + ( + + Sede di Appartenenza + + + + + + )} + /> +

Competenze

@@ -262,11 +342,55 @@ export default function Guards() { Modifica Guardia - Modifica i dati della guardia {editingGuard?.user?.firstName} {editingGuard?.user?.lastName} + Modifica i dati della guardia {editingGuard?.firstName} {editingGuard?.lastName} +
+ ( + + Nome + + + + + + )} + /> + + ( + + Cognome + + + + + + )} + /> +
+ + ( + + Email + + + + + + )} + /> + ( - Telefono + Cellulare @@ -295,6 +419,29 @@ export default function Guards() { )} /> + ( + + Sede di Appartenenza + + + + + + )} + /> +

Competenze

diff --git a/shared/schema.ts b/shared/schema.ts index 9a824b0..2181b63 100644 --- a/shared/schema.ts +++ b/shared/schema.ts @@ -122,6 +122,11 @@ export const users = pgTable("users", { export const guards = pgTable("guards", { id: varchar("id").primaryKey().default(sql`gen_random_uuid()`), userId: varchar("user_id").references(() => users.id), + + // Anagrafica + firstName: varchar("first_name").notNull(), + lastName: varchar("last_name").notNull(), + email: varchar("email"), badgeNumber: varchar("badge_number").notNull().unique(), phoneNumber: varchar("phone_number"), location: locationEnum("location").notNull().default("roccapiemonte"), // Sede di appartenenza @@ -644,6 +649,13 @@ export const insertGuardSchema = createInsertSchema(guards).omit({ id: true, createdAt: true, updatedAt: true, +}).extend({ + firstName: z.string().min(1, "Nome obbligatorio"), + lastName: z.string().min(1, "Cognome obbligatorio"), + email: z.string().email("Email non valida").optional().or(z.literal("")), + badgeNumber: z.string().min(1, "Matricola obbligatoria"), + phoneNumber: z.string().optional().or(z.literal("")), + location: z.enum(["roccapiemonte", "milano", "roma"]), }); export const insertCertificationSchema = createInsertSchema(certifications).omit({