From 4e2fe556be9257a8ccf73948047d924dc7507942 Mon Sep 17 00:00:00 2001 From: Matteo Date: Mon, 9 Feb 2026 17:36:26 +0100 Subject: [PATCH 1/8] feat : admin fournisseurs creation et modif (WIP) --- .../components/supplier/supplier-form.vue | 183 ++++++++++++++++++ frontend/pages/admin/supplier/[[id]].vue | 8 + frontend/services/dto/address-data.ts | 8 + frontend/services/dto/supplier-data.ts | 20 +- frontend/services/supplier.ts | 43 ++-- 5 files changed, 248 insertions(+), 14 deletions(-) create mode 100644 frontend/components/supplier/supplier-form.vue create mode 100644 frontend/pages/admin/supplier/[[id]].vue diff --git a/frontend/components/supplier/supplier-form.vue b/frontend/components/supplier/supplier-form.vue new file mode 100644 index 0000000..f0ff7dd --- /dev/null +++ b/frontend/components/supplier/supplier-form.vue @@ -0,0 +1,183 @@ + + + diff --git a/frontend/pages/admin/supplier/[[id]].vue b/frontend/pages/admin/supplier/[[id]].vue new file mode 100644 index 0000000..9624710 --- /dev/null +++ b/frontend/pages/admin/supplier/[[id]].vue @@ -0,0 +1,8 @@ + + diff --git a/frontend/services/dto/address-data.ts b/frontend/services/dto/address-data.ts index db93c92..9c91f24 100644 --- a/frontend/services/dto/address-data.ts +++ b/frontend/services/dto/address-data.ts @@ -8,3 +8,11 @@ export interface AddressData { countryCode: string fullAddress?: string } +export interface AddressFormData { + id?: number | null + street: string + street2?: string + postalCode: string + city: string + country: string +} diff --git a/frontend/services/dto/supplier-data.ts b/frontend/services/dto/supplier-data.ts index 80f9f80..a3c9cf4 100644 --- a/frontend/services/dto/supplier-data.ts +++ b/frontend/services/dto/supplier-data.ts @@ -1,9 +1,25 @@ -import type { AddressData } from '~/services/dto/address-data' +import type { AddressFormData } from '~/services/dto/address-data' export interface SupplierData { id: number name: string email?: string | null phone?: string | null - addresses?: AddressData[] | null + addresses: AddressFormData[] +} +export interface SupplierFormData { + name: string + email?: string + phone?: string + addresses: AddressFormData[] +} + +export type SupplierPayload = { + name: string + email?: string | null + phone?: string | null + street?: string | null + city?: string | null + postalCode?: string | null + country?: string | null } diff --git a/frontend/services/supplier.ts b/frontend/services/supplier.ts index 90cec8e..7cc6141 100644 --- a/frontend/services/supplier.ts +++ b/frontend/services/supplier.ts @@ -1,23 +1,42 @@ -import { useApi } from '~/composables/useApi' -import type { SupplierData } from '~/services/dto/supplier-data' +import { useApi } from "~/composables/useApi" +import type { SupplierData, SupplierPayload } from "~/services/dto/supplier-data" export type SupplierListResponse = | SupplierData[] - | { 'hydra:member'?: SupplierData[] } + | { "hydra:member"?: SupplierData[] } export async function getSupplierList(): Promise { const api = useApi() - const response = await api.get('suppliers', {}, { - toastErrorKey: 'errors.supplier.list' + const response = await api.get("suppliers", {}, { + toastErrorKey: "errors.supplier.list" }) - if (Array.isArray(response)) { - return response + if (Array.isArray(response)) return response + if (response && typeof response === "object" && Array.isArray(response["hydra:member"])) { + return response["hydra:member"] } - - if (response && typeof response === 'object' && Array.isArray(response['hydra:member'])) { - return response['hydra:member'] - } - return [] } + +export async function getSupplier(id: number): Promise { + const api = useApi() + return api.get(`supplier/${id}`, {}, { + toastErrorKey: "errors.supplier.fetch" + }) +} + +export async function updateSupplier(id: number, payload: SupplierPayload): Promise { + const api = useApi() + return api.patch(`supplier/${id}`, payload, { + toastErrorKey: "errors.supplier.update", + toastSuccessKey: "success.supplier.update" + }) +} + +export async function createSupplier(payload: SupplierPayload): Promise { + const api = useApi() + return api.post("supplier", payload, { + toastErrorKey: "errors.supplier.create", + toastSuccessKey: "success.supplier.create" + }) +} -- 2.39.5 From b1c12138f1f01a066ea8b8cb501e6fea03c55357 Mon Sep 17 00:00:00 2001 From: Matteo Date: Tue, 10 Feb 2026 11:48:02 +0100 Subject: [PATCH 2/8] feat : admin fournisseurs creation et modif (WIP) --- .../components/supplier/supplier-form.vue | 183 ++++++++---------- .../pages/admin/supplier/supplier-list.vue | 85 +++++--- frontend/services/address.ts | 35 ++++ frontend/services/dto/address-data.ts | 7 +- frontend/services/dto/supplier-data.ts | 12 +- frontend/services/supplier.ts | 14 +- src/Entity/Address.php | 24 ++- src/Entity/Supplier.php | 46 ++++- 8 files changed, 248 insertions(+), 158 deletions(-) create mode 100644 frontend/services/address.ts diff --git a/frontend/components/supplier/supplier-form.vue b/frontend/components/supplier/supplier-form.vue index f0ff7dd..eac9de2 100644 --- a/frontend/components/supplier/supplier-form.vue +++ b/frontend/components/supplier/supplier-form.vue @@ -14,63 +14,28 @@ -
+
+ + + - - - - - - - - - - - - - - - + + + + +
+ +

{{ errorMsg }}

diff --git a/frontend/pages/admin/supplier/supplier-list.vue b/frontend/pages/admin/supplier/supplier-list.vue index 7840c65..043d4be 100644 --- a/frontend/pages/admin/supplier/supplier-list.vue +++ b/frontend/pages/admin/supplier/supplier-list.vue @@ -1,16 +1,18 @@