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 @@ + + + + + {{ supplierId ? "Modifications du fournisseur" : "Ajout d'un fournisseur" }} + + + + {{ supplierId ? "Sauvegarder" : "Ajouter" }} + + + + + + + + + + + + + + + + + + + + + + + + + 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" + }) +}