updated living space added

This commit is contained in:
2025-12-04 15:46:24 +03:00
parent 56b42bb906
commit 53e1f1e4fc
70 changed files with 1128 additions and 824 deletions

View File

@@ -9,35 +9,20 @@ import { DateTimePicker } from "@/components/ui/date-time-picker"
import { BuildIbansAdd, buildIbansAddSchema } from "./schema"
import { useAddBuildIbansMutation } from "./queries"
const BuildIbansForm = ({ refetchTable }: { refetchTable: () => void }) => {
const BuildIbansForm = ({ refetchTable, buildId }: { refetchTable: () => void, buildId: string }) => {
const form = useForm<BuildIbansAdd>({
resolver: zodResolver(buildIbansAddSchema),
defaultValues: {
iban: "",
startDate: "",
stopDate: "",
bankCode: "",
xcomment: "",
expiryStarts: "",
expiryEnds: "",
},
resolver: zodResolver(buildIbansAddSchema), defaultValues: { iban: "", startDate: "", stopDate: "", bankCode: "", xcomment: "", expiryStarts: "", expiryEnds: "" },
});
const { handleSubmit } = form;
const mutation = useAddBuildIbansMutation();
function onSubmit(values: BuildIbansAdd) { mutation.mutate({ data: values }); setTimeout(() => refetchTable(), 400) };
function onSubmit(values: BuildIbansAdd) { mutation.mutate({ data: values, buildId, refetchTable }) };
return (
<Form {...form}>
<form
onSubmit={handleSubmit(onSubmit)}
className="space-y-6 p-4"
>
{/* ROW 1 */}
<form onSubmit={handleSubmit(onSubmit)} className="space-y-6 p-4" >
{/* ROW 1 */}
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
<FormField
control={form.control}

View File

@@ -3,6 +3,8 @@ import { useState } from 'react';
import { BuildIbansDataTableAdd } from './table/data-table';
import { BuildIbansForm } from './form';
import { useGraphQlBuildIbansList } from '../queries';
import { useSearchParams, useRouter } from 'next/navigation';
import { Button } from '@/components/ui/button';
const PageAddBuildIbans = () => {
const [page, setPage] = useState(1);
@@ -10,14 +12,19 @@ const PageAddBuildIbans = () => {
const [sort, setSort] = useState({ createdAt: 'desc' });
const [filters, setFilters] = useState({});
const { data, isLoading, error, refetch } = useGraphQlBuildIbansList({ limit, skip: (page - 1) * limit, sort, filters });
const searchParams = useSearchParams();
const router = useRouter();
const buildId = searchParams?.get('build');
const { data, isLoading, error, refetch } = useGraphQlBuildIbansList({ limit, skip: (page - 1) * limit, sort, filters: { ...filters, buildId } });
const noUUIDFound = <>
<div>Back To Build IBANs. No uuid is found on headers</div>
<Button onClick={() => router.push(`/build-ibans?build=${buildId}`)}>Back to Build IBANs</Button>
</>
if (!buildId) { return noUUIDFound }
return (
<>
<BuildIbansDataTableAdd
data={data?.data || []} totalCount={data?.totalCount || 0} currentPage={page} pageSize={limit} onPageChange={setPage} onPageSizeChange={setLimit} refetchTable={refetch}
/>
<BuildIbansForm refetchTable={refetch} />
<BuildIbansDataTableAdd data={data?.data || []} totalCount={data?.totalCount || 0} currentPage={page} pageSize={limit} onPageChange={setPage} onPageSizeChange={setLimit} refetchTable={refetch} buildId={buildId} />
<BuildIbansForm refetchTable={refetch} buildId={buildId} />
</>
)
}

View File

@@ -3,7 +3,7 @@ import { useMutation } from '@tanstack/react-query'
import { toISOIfNotZ } from '@/lib/utils';
import { BuildIbansAdd } from './schema';
const fetchGraphQlBuildIbansAdd = async (record: BuildIbansAdd): Promise<{ data: BuildIbansAdd | null; status: number }> => {
const fetchGraphQlBuildIbansAdd = async (record: BuildIbansAdd, buildId: string, refetchTable: () => void): Promise<{ data: BuildIbansAdd | null; status: number }> => {
console.log('Fetching test data from local API');
record.expiryStarts = record.expiryStarts ? toISOIfNotZ(record.expiryStarts) : undefined;
record.expiryEnds = record.expiryEnds ? toISOIfNotZ(record.expiryEnds) : undefined;
@@ -11,16 +11,16 @@ const fetchGraphQlBuildIbansAdd = async (record: BuildIbansAdd): Promise<{ data:
record.stopDate = toISOIfNotZ(record.stopDate);
console.dir({ record })
try {
const res = await fetch('/api/build-ibans/add', { method: 'POST', cache: 'no-store', credentials: "include", body: JSON.stringify(record) });
const res = await fetch(`/api/build-ibans/add?build=${buildId}`, { method: 'POST', cache: 'no-store', credentials: "include", body: JSON.stringify(record) });
if (!res.ok) { const errorText = await res.text(); console.error('Test data API error:', errorText); throw new Error(`API error: ${res.status} ${res.statusText}`) }
const data = await res.json();
const data = await res.json(); refetchTable();
return { data: data.data, status: res.status }
} catch (error) { console.error('Error fetching test data:', error); throw error }
};
export function useAddBuildIbansMutation() {
return useMutation({
mutationFn: ({ data }: { data: BuildIbansAdd }) => fetchGraphQlBuildIbansAdd(data),
mutationFn: ({ data, buildId, refetchTable }: { data: BuildIbansAdd, buildId: string, refetchTable: () => void }) => fetchGraphQlBuildIbansAdd(data, buildId, refetchTable),
onSuccess: () => { console.log("Build IBANs created successfully") },
onError: (error) => { console.error("Add build IBANs failed:", error) },
})

View File

@@ -55,6 +55,7 @@ export function BuildIbansDataTableAdd({
onPageChange,
onPageSizeChange,
refetchTable,
buildId
}: {
data: schemaType[],
totalCount: number,
@@ -62,7 +63,8 @@ export function BuildIbansDataTableAdd({
pageSize: number,
onPageChange: (page: number) => void,
onPageSizeChange: (size: number) => void,
refetchTable: () => void
refetchTable: () => void,
buildId: string
}) {
const router = useRouter();
@@ -142,9 +144,8 @@ export function BuildIbansDataTableAdd({
})}
</DropdownMenuContent>
</DropdownMenu>
<Button variant="outline" size="sm" onClick={() => { router.push("/build-ibans") }}>
<Home />
<span className="hidden lg:inline">Back to Build IBANs</span>
<Button variant="outline" size="sm" onClick={() => { router.push(`/build-ibans?build=${buildId}`) }}>
<Home /><span className="hidden lg:inline">Back to Build IBANs</span>
</Button>
</div>
</div>