Fixed Buchungssystem

This commit is contained in:
PxlLoewe
2025-12-08 19:30:08 +01:00
parent 1e36622289
commit bc61144258
3 changed files with 18 additions and 21 deletions

View File

@@ -1,6 +1,5 @@
import { Calendar } from "lucide-react";
import { getServerSession } from "../../api/auth/[...nextauth]/auth";
import { Badge } from "@repo/shared-components";
import { JSX } from "react";
import { getPublicUser, prisma } from "@repo/db";
import { formatTimeRange } from "../../../helper/timerange";
@@ -9,9 +8,9 @@ export const Bookings: () => Promise<JSX.Element> = async () => {
const session = await getServerSession();
const futureBookings = await prisma.booking.findMany({
where: {
userId: session?.user.id,
startTime: {
gte: new Date(),
lte: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000),
},
},
orderBy: {

View File

@@ -19,10 +19,10 @@ export default async function Home({
<RecentFlights />
</div>
<div className="card bg-base-200 col-span-6 mb-4 shadow-xl xl:col-span-3">
<Badges />
<Bookings />
</div>
<div className="card bg-base-200 col-span-6 mb-4 shadow-xl xl:col-span-3">
<Bookings />
<Badges />
</div>
</div>
<Events />

View File

@@ -13,6 +13,7 @@ import { AxiosError } from "axios";
import { zodResolver } from "@hookform/resolvers/zod";
import { z } from "zod";
import { DateInput } from "_components/ui/DateInput";
import { Select } from "_components/ui/Select";
interface NewBookingFormData {
type: "STATION" | "LST_01" | "LST_02" | "LST_03" | "LST_04";
@@ -85,6 +86,9 @@ export const NewBookingModal = ({
}
});
const form = useForm<NewBookingFormData>({
resolver: zodResolver(newBookingSchema),
});
const {
register,
handleSubmit,
@@ -92,10 +96,7 @@ export const NewBookingModal = ({
setValue,
reset,
formState: { errors },
} = useForm<NewBookingFormData>({
resolver: zodResolver(newBookingSchema),
});
} = form;
const selectedType = watch("type");
const hasDISPOPermission = userPermissions.includes("DISPO");
@@ -168,20 +169,17 @@ export const NewBookingModal = ({
{isLoadingStations ? (
<div className="skeleton h-12 w-full"></div>
) : (
<select
{...register("stationId", {
required:
selectedType === "STATION" ? "Bitte wählen Sie eine Station aus" : false,
<Select
label="Station"
name="stationId"
form={form}
options={stations?.map((s) => {
return {
value: s.id,
label: `${s.bosCallsign} - ${s.locationState} (${s.aircraft})`,
};
})}
className="select select-bordered w-full"
>
<option value="">Station auswählen...</option>
{stations?.map((station) => (
<option key={station.id} value={station.id}>
{station.bosCallsignShort} - {station.locationState} ({station.aircraft})
</option>
))}
</select>
/>
)}
{errors.stationId && (
<label className="label">