Merge branch 'refs/heads/develop' into feat/poc-identification-bovin
# Conflicts: # .idea/workspace.xml # frontend/i18n/locales/fr.json # frontend/layouts/default.vue
This commit is contained in:
45
frontend/services/address.ts
Normal file
45
frontend/services/address.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
import { useApi } from '~/composables/useApi'
|
||||
import type { AddressData } from '~/services/dto/address-data'
|
||||
export interface AddressPayload {
|
||||
label: string
|
||||
street: string
|
||||
street2?: string | null
|
||||
postalCode: string
|
||||
city: string
|
||||
countryCode: string
|
||||
}
|
||||
|
||||
export interface AddressData extends AddressPayload {
|
||||
id: number
|
||||
}
|
||||
|
||||
export async function createAddress(
|
||||
payload: AddressPayload
|
||||
): Promise<AddressData> {
|
||||
const api = useApi()
|
||||
|
||||
return await api.post<AddressData>('addresses', payload, {
|
||||
toastErrorKey: 'errors.address.create',
|
||||
toastSuccessKey: 'success.address.create',
|
||||
})
|
||||
}
|
||||
|
||||
export async function updateAddress(
|
||||
id: number,
|
||||
payload: AddressPayload
|
||||
): Promise<AddressData> {
|
||||
const api = useApi()
|
||||
|
||||
return await api.patch<AddressData>(`addresses/${id}`, payload, {
|
||||
toastErrorKey: 'errors.address.update',
|
||||
toastSuccessKey: 'success.address.update',
|
||||
})
|
||||
}
|
||||
|
||||
export async function getAddress(id: number): Promise<AddressData> {
|
||||
const api = useApi()
|
||||
|
||||
return await api.get<AddressData>(`addresses/${id}`, {}, {
|
||||
toastErrorKey: 'errors.address.fetch',
|
||||
})
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
import { useApi } from '~/composables/useApi'
|
||||
import type { UserData } from '~/services/dto/user-data'
|
||||
import type {UserPayload} from "~/services/dto/user-data";
|
||||
|
||||
export async function getUsers() {
|
||||
const api = useApi()
|
||||
@@ -12,7 +13,40 @@ export async function getUsers() {
|
||||
|
||||
return data['hydra:member'] ?? []
|
||||
}
|
||||
export async function getAdminUsers() {
|
||||
const api = useApi()
|
||||
const data = await api.get<UserData[] | { 'hydra:member': UserData[] }>('admin/users', {}, {
|
||||
toastErrorKey: 'errors.auth.users'
|
||||
})
|
||||
if (Array.isArray(data)) {
|
||||
return data
|
||||
}
|
||||
|
||||
return data['hydra:member'] ?? []
|
||||
}
|
||||
|
||||
export async function getUser(id: number) {
|
||||
const api = useApi()
|
||||
return api.get<UserData>(`users/${id}`, {}, {
|
||||
toastErrorKey: 'errors.auth.user'
|
||||
})
|
||||
}
|
||||
|
||||
export async function createUser(payload: UserPayload = {}) {
|
||||
const api = useApi()
|
||||
return api.post<UserData>('users', payload, {
|
||||
toastErrorKey: 'errors.auth.create',
|
||||
toastSuccessKey : 'success.auth.create'
|
||||
})
|
||||
}
|
||||
|
||||
export async function updateUser(id : number, playload: UserPayload = {}){
|
||||
const api = useApi()
|
||||
return api.patch<UserData>(`users/${id}`, playload, {
|
||||
toastErrorKey: 'errors.auth.update',
|
||||
toastSuccessKey: 'success.auth.update'
|
||||
})
|
||||
}
|
||||
export async function getCurrentUser() {
|
||||
const api = useApi()
|
||||
return api.get<UserData>('me', {}, {
|
||||
|
||||
50
frontend/services/bovin-shipment.ts
Normal file
50
frontend/services/bovin-shipment.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
import { useApi } from '~/composables/useApi'
|
||||
import type { BovinShipmentData } from '~/services/dto/bovin-shipment-data'
|
||||
import type { ShipmentBovinePayload, BovinShipmentListResponse } from '~/services/dto/bovin-shipment-data'
|
||||
|
||||
export async function getBovinShipmentList(
|
||||
shipmentIri: string
|
||||
): Promise<BovinShipmentData[]> {
|
||||
const api = useApi()
|
||||
const response = await api.get<BovinShipmentListResponse>(
|
||||
'bovin_shipments',
|
||||
{ shipment: shipmentIri },
|
||||
{
|
||||
toastErrorKey: 'errors.shipmentBovine.list'
|
||||
}
|
||||
)
|
||||
|
||||
if (Array.isArray(response)) {
|
||||
return response
|
||||
}
|
||||
if (response && typeof response === 'object' && Array.isArray(response['hydra:member'])) {
|
||||
return response['hydra:member']
|
||||
}
|
||||
return []
|
||||
}
|
||||
|
||||
export async function createShipmentBovine(
|
||||
payload: ShipmentBovinePayload
|
||||
): Promise<BovinShipmentData> {
|
||||
const api = useApi()
|
||||
return api.post<BovinShipmentData>('bovin_shipments', payload, {
|
||||
toastErrorKey: 'errors.shipmentBovine.create'
|
||||
})
|
||||
}
|
||||
|
||||
export async function deleteShipmentBovine(id: number): Promise<void> {
|
||||
const api = useApi()
|
||||
await api.delete<void>(`bovin_shipments/${id}`, {}, {
|
||||
toastErrorKey: 'errors.shipmentBovine.delete'
|
||||
})
|
||||
}
|
||||
|
||||
export async function updateShipmentBovine(
|
||||
id: number,
|
||||
payload: Partial<ShipmentBovinePayload>
|
||||
): Promise<BovinShipmentData> {
|
||||
const api = useApi()
|
||||
return api.patch<BovinShipmentData>(`bovin_shipments/${id}`, payload, {
|
||||
toastErrorKey: 'errors.shipmentBovine.update'
|
||||
})
|
||||
}
|
||||
23
frontend/services/bovine-type.ts
Normal file
23
frontend/services/bovine-type.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { useApi } from '~/composables/useApi'
|
||||
import type {BovineTypeData} from "~/services/dto/bovine-type-data";
|
||||
|
||||
export type BovineTypeListResponse =
|
||||
| BovineTypeData[]
|
||||
| { 'hydra:member'?: BovineTypeData[] }
|
||||
|
||||
export async function getBovineTypeList(): Promise<BovineTypeData[]> {
|
||||
const api = useApi()
|
||||
const response = await api.get<BovineTypeListResponse>('bovine_types', {}, {
|
||||
toastErrorKey: 'errors.bovin.list'
|
||||
})
|
||||
|
||||
if (Array.isArray(response)) {
|
||||
return response
|
||||
}
|
||||
|
||||
if (response && typeof response === 'object' && Array.isArray(response['hydra:member'])) {
|
||||
return response['hydra:member']
|
||||
}
|
||||
|
||||
return []
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
import { useApi } from '~/composables/useApi'
|
||||
import type { CarrierData } from '~/services/dto/carrier-data'
|
||||
import type {CarrierData, CarrierPayload} from "~/services/dto/carrier-data";
|
||||
|
||||
export type CarrierListResponse =
|
||||
| CarrierData[]
|
||||
@@ -21,3 +21,26 @@ export async function getCarrierList(): Promise<CarrierData[]> {
|
||||
|
||||
return []
|
||||
}
|
||||
|
||||
export async function getCarrier(id: number) {
|
||||
const api = useApi()
|
||||
return api.get<CarrierData>(`carriers/${id}`, {}, {
|
||||
toastErrorKey: 'errors.carrier.fetch'
|
||||
})
|
||||
}
|
||||
|
||||
export async function updateCarrier(id: number, payload: CarrierPayload) {
|
||||
const api = useApi()
|
||||
return api.patch<CarrierData>(`carriers/${id}`, payload, {
|
||||
toastErrorKey: 'errors.carrier.update',
|
||||
toastSuccessKey: 'success.carrier.update'
|
||||
})
|
||||
}
|
||||
|
||||
export async function createCarrier(payload: CarrierPayload = {}) {
|
||||
const api = useApi()
|
||||
return api.post<CarrierData>('carriers', payload, {
|
||||
toastErrorKey: 'errors.carrier.create',
|
||||
toastSuccessKey: 'success.carrier.update'
|
||||
})
|
||||
}
|
||||
|
||||
43
frontend/services/customer.ts
Normal file
43
frontend/services/customer.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
import { useApi } from "~/composables/useApi"
|
||||
import type { CustomerData, CustomerPayload } from "~/services/dto/customer-data"
|
||||
|
||||
export type CustomerListResponse =
|
||||
| CustomerData[]
|
||||
| { "hydra:member"?: CustomerData[] }
|
||||
|
||||
export async function getCustomerList(): Promise<CustomerData[]> {
|
||||
const api = useApi()
|
||||
const response = await api.get<CustomerListResponse>("customers", {}, {
|
||||
toastErrorKey: "errors.customer.list",
|
||||
})
|
||||
|
||||
if (Array.isArray(response)) return response
|
||||
if (response && typeof response === "object" && Array.isArray(response["hydra:member"])) {
|
||||
return response["hydra:member"]
|
||||
}
|
||||
return []
|
||||
}
|
||||
|
||||
export async function getCustomer(id: number): Promise<CustomerData> {
|
||||
const api = useApi()
|
||||
return api.get<CustomerData>(`customers/${id}`, {}, {
|
||||
toastErrorKey: "errors.customer.fetch",
|
||||
})
|
||||
}
|
||||
|
||||
export async function updateCustomer(id: number, payload: Partial<CustomerPayload>): Promise<CustomerData> {
|
||||
const api = useApi()
|
||||
return api.patch<CustomerData>(`customers/${id}`, payload, {
|
||||
toastErrorKey: "errors.customer.update",
|
||||
toastSuccessKey: "success.customer.update",
|
||||
})
|
||||
}
|
||||
|
||||
export async function createCustomer(payload: CustomerPayload): Promise<CustomerData> {
|
||||
const api = useApi()
|
||||
return api.post<CustomerData>("customers", payload, {
|
||||
toastErrorKey: "errors.customer.create",
|
||||
toastSuccessKey: "success.customer.create",
|
||||
})
|
||||
}
|
||||
|
||||
@@ -6,5 +6,14 @@ export interface AddressData {
|
||||
postalCode: string
|
||||
city: string
|
||||
countryCode: string
|
||||
fullAddress?: string
|
||||
}
|
||||
|
||||
export interface AddressFormData {
|
||||
id?: number | null
|
||||
label: string
|
||||
street: string
|
||||
street2?: string | null
|
||||
postalCode: string
|
||||
city: string
|
||||
countryCode: string
|
||||
}
|
||||
|
||||
18
frontend/services/dto/bovin-shipment-data.ts
Normal file
18
frontend/services/dto/bovin-shipment-data.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import type {ShipmentTypeData} from "~/services/dto/shipment-type-data";
|
||||
|
||||
export interface BovinShipmentData {
|
||||
id: number
|
||||
nbBovinSend: number | null
|
||||
shipment?: string | null
|
||||
shipmentType?: ShipmentTypeData | null
|
||||
}
|
||||
|
||||
export type ShipmentBovinePayload = {
|
||||
nbBovinSend: number
|
||||
shipment: string
|
||||
shipmentType: string
|
||||
}
|
||||
|
||||
export type BovinShipmentListResponse =
|
||||
| BovinShipmentData[]
|
||||
| { 'hydra:member'?: BovinShipmentData[] }
|
||||
5
frontend/services/dto/bovine-type-data.ts
Normal file
5
frontend/services/dto/bovine-type-data.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
export interface BovineTypeData{
|
||||
id: number
|
||||
label: string
|
||||
code: string
|
||||
}
|
||||
@@ -3,3 +3,13 @@ export interface CarrierData {
|
||||
name: string
|
||||
code: string
|
||||
}
|
||||
|
||||
export interface CarrierFormData {
|
||||
name: string
|
||||
code: string
|
||||
}
|
||||
|
||||
export type CarrierPayload = {
|
||||
name?: string | null
|
||||
code?: string
|
||||
}
|
||||
|
||||
22
frontend/services/dto/customer-data.ts
Normal file
22
frontend/services/dto/customer-data.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import type { AddressFormData } from "~/services/dto/address-data"
|
||||
|
||||
export type CustomerAddresses = AddressFormData[] | string[]
|
||||
|
||||
export interface CustomerData {
|
||||
id: number
|
||||
label: string
|
||||
code?: string | null
|
||||
addresses: CustomerAddresses
|
||||
}
|
||||
|
||||
export interface CustomerFormData {
|
||||
label: string
|
||||
code?: string
|
||||
addresses: AddressFormData[]
|
||||
}
|
||||
|
||||
export type CustomerPayload = {
|
||||
label: string
|
||||
code?: string | null
|
||||
addresses?: string[]
|
||||
}
|
||||
8
frontend/services/dto/reception-bovine-data.ts
Normal file
8
frontend/services/dto/reception-bovine-data.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import type {BovineTypeData} from "~/services/dto/bovine-type-data";
|
||||
|
||||
export interface ReceptionBovineTypeData{
|
||||
id: number
|
||||
quantity : number
|
||||
reception?: string
|
||||
bovineType: BovineTypeData
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import type { AddressData } from '~/services/dto/address-data'
|
||||
import type { TruckData } from '~/services/dto/truck-data'
|
||||
import type { CarrierData } from '~/services/dto/carrier-data'
|
||||
import type { DriverData } from '~/services/dto/driver-data'
|
||||
import type {BovineTypeData} from "~/services/dto/bovine-type-data";
|
||||
|
||||
export interface ReceptionData {
|
||||
id: number
|
||||
@@ -20,7 +21,9 @@ export interface ReceptionData {
|
||||
receptionType?: ReceptionTypeData | null
|
||||
merchandiseType?: MerchandiseTypeData | null
|
||||
merchandiseDetail?: string | null
|
||||
bovineDetail?: string | null
|
||||
buildings?: BuildingData[] | null
|
||||
bovinesTypes?: BovineTypeData[] | null
|
||||
pelletBuildings?: ReceptionPelletBuildingData[] | null
|
||||
user?: UserData | null
|
||||
supplier?: SupplierData | null
|
||||
@@ -38,6 +41,14 @@ export interface WeightEntryData {
|
||||
weighedAt: string | null
|
||||
}
|
||||
|
||||
export interface WeightFormData {
|
||||
id: number
|
||||
weight: number
|
||||
type: 'gross' | 'tare'
|
||||
}
|
||||
|
||||
|
||||
|
||||
export type ReceptionPayload = {
|
||||
licensePlate?: string | null
|
||||
receptionDate?: string
|
||||
@@ -46,7 +57,9 @@ export type ReceptionPayload = {
|
||||
receptionType?: string | null
|
||||
merchandiseType?: string | null
|
||||
merchandiseDetail?: string | null
|
||||
bovineDetail?: string | null
|
||||
buildings?: string[] | null
|
||||
bovinesTypes?: string[] | null
|
||||
user?: string | null
|
||||
supplier?: string | null
|
||||
address?: string | null
|
||||
@@ -54,3 +67,27 @@ export type ReceptionPayload = {
|
||||
carrier?: string | null
|
||||
driver?: string | null
|
||||
}
|
||||
|
||||
export type ReceptionFormData = {
|
||||
licensePlate: string
|
||||
receptionDate: string
|
||||
receptionTypeId: string
|
||||
userId: string
|
||||
supplierId: string
|
||||
addressId: string
|
||||
truckId: string
|
||||
carrierId: string
|
||||
driverId: string
|
||||
vehicleId: string
|
||||
}
|
||||
|
||||
export type ReceptionFormWeight = {
|
||||
weights: WeightFormData[]
|
||||
}
|
||||
|
||||
export interface ReceptionUpdatePayload {
|
||||
weights: {
|
||||
id: number
|
||||
weight: number
|
||||
}[]
|
||||
}
|
||||
|
||||
67
frontend/services/dto/shipment-data.ts
Normal file
67
frontend/services/dto/shipment-data.ts
Normal file
@@ -0,0 +1,67 @@
|
||||
import type {CarrierData} from '~/services/dto/carrier-data'
|
||||
import type {TruckData} from '~/services/dto/truck-data'
|
||||
import type {CustomerData} from '~/services/dto/customer-data'
|
||||
import type {AddressData} from "~/services/dto/address-data";
|
||||
|
||||
export interface ShipmentTypeData {
|
||||
id: number
|
||||
label: string
|
||||
code: string
|
||||
}
|
||||
|
||||
export interface BovinShipmentData {
|
||||
id?: number
|
||||
shipmentType?: ShipmentTypeData | string | null
|
||||
nbBovinSend: number | null
|
||||
}
|
||||
|
||||
export type ShipmentData = {
|
||||
id: number
|
||||
identificationNumber?: string | null
|
||||
licencePlate: string | null
|
||||
shipmentDate: string
|
||||
currentStep: number
|
||||
isValid: boolean
|
||||
address?: AddressData | null
|
||||
carrier?: CarrierData | null
|
||||
truck?: TruckData | null
|
||||
customer?: CustomerData | null
|
||||
bovinShipments?: BovinShipmentData[] | null
|
||||
weights?: WeightShipmentEntryData[] | null
|
||||
|
||||
}
|
||||
|
||||
export interface WeightShipmentEntryData {
|
||||
id?: number
|
||||
type: 'gross' | 'tare'
|
||||
dsd: number | null
|
||||
weight: number | null
|
||||
weighedAt: string | null
|
||||
}
|
||||
|
||||
export type ShipmentFormData = {
|
||||
userId: string,
|
||||
shipmentDate: string,
|
||||
customerId: string,
|
||||
addressId: string,
|
||||
truckId: string,
|
||||
carrierId: string,
|
||||
driverId: string,
|
||||
vehicleId: string,
|
||||
licencePlate: string,
|
||||
}
|
||||
|
||||
export type ShipmentPayload = {
|
||||
licencePlate?: string | null
|
||||
shipmentDate?: string
|
||||
currentStep?: number
|
||||
isValid?: boolean
|
||||
carrier?: string | null
|
||||
truck?: string | null
|
||||
customer?: string | null
|
||||
bovinShipments?: string[] | null
|
||||
address?: string | null
|
||||
user?: string | null
|
||||
driver?: string | null
|
||||
|
||||
}
|
||||
5
frontend/services/dto/shipment-type-data.ts
Normal file
5
frontend/services/dto/shipment-type-data.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
export interface ShipmentTypeData {
|
||||
id: number
|
||||
label: string
|
||||
code: string
|
||||
}
|
||||
@@ -1,9 +1,25 @@
|
||||
import type { AddressData } from '~/services/dto/address-data'
|
||||
import type { AddressFormData } from "~/services/dto/address-data"
|
||||
|
||||
export type SupplierAddresses = AddressFormData[] | string[]
|
||||
|
||||
export interface SupplierData {
|
||||
id: number
|
||||
name: string
|
||||
email?: string | null
|
||||
phone?: string | null
|
||||
addresses?: AddressData[] | null
|
||||
addresses: SupplierAddresses
|
||||
}
|
||||
|
||||
export interface SupplierFormData {
|
||||
name: string
|
||||
email?: string
|
||||
phone?: string
|
||||
addresses: AddressFormData[]
|
||||
}
|
||||
|
||||
export type SupplierPayload = {
|
||||
name: string
|
||||
email?: string | null
|
||||
phone?: string | null
|
||||
addresses?: string[]
|
||||
}
|
||||
|
||||
@@ -1,4 +1,17 @@
|
||||
export interface UserData {
|
||||
id: number
|
||||
username: string
|
||||
roles: string[]
|
||||
}
|
||||
|
||||
export type UserPayload = {
|
||||
username?: string
|
||||
password?: string
|
||||
roles?: string[]
|
||||
}
|
||||
|
||||
export type UserFormData = {
|
||||
username: string
|
||||
password: string
|
||||
role: string
|
||||
}
|
||||
|
||||
@@ -2,4 +2,5 @@ export interface WeightData {
|
||||
weight: number | null
|
||||
dsd: number | null
|
||||
weighedAt: string | null
|
||||
type : string | null
|
||||
}
|
||||
|
||||
59
frontend/services/reception-bovine.ts
Normal file
59
frontend/services/reception-bovine.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
import { useApi } from '~/composables/useApi'
|
||||
import type { ReceptionBovineTypeData } from '~/services/dto/reception-bovine-data'
|
||||
|
||||
export type ReceptionBovineListResponse =
|
||||
| ReceptionBovineTypeData[]
|
||||
| { 'hydra:member'?: ReceptionBovineTypeData[] }
|
||||
|
||||
export type ReceptionBovinePayload = {
|
||||
quantity: number
|
||||
reception: string
|
||||
bovineType: string
|
||||
}
|
||||
|
||||
export async function getReceptionBovineList(
|
||||
receptionIri: string
|
||||
): Promise<ReceptionBovineTypeData[]> {
|
||||
const api = useApi()
|
||||
const response = await api.get<ReceptionBovineListResponse>(
|
||||
'reception_bovines',
|
||||
{ reception: receptionIri },
|
||||
{
|
||||
toastErrorKey: 'errors.receptionBovine.list'
|
||||
}
|
||||
)
|
||||
|
||||
if (Array.isArray(response)) {
|
||||
return response
|
||||
}
|
||||
if (response && typeof response === 'object' && Array.isArray(response['hydra:member'])) {
|
||||
return response['hydra:member']
|
||||
}
|
||||
return []
|
||||
}
|
||||
|
||||
export async function createReceptionBovine(
|
||||
payload: ReceptionBovinePayload
|
||||
): Promise<ReceptionBovineTypeData> {
|
||||
const api = useApi()
|
||||
return api.post<ReceptionBovineTypeData>('reception_bovines', payload, {
|
||||
toastErrorKey: 'errors.receptionBovine.create'
|
||||
})
|
||||
}
|
||||
|
||||
export async function deleteReceptionBovine(id: number): Promise<void> {
|
||||
const api = useApi()
|
||||
await api.delete<void>(`reception_bovines/${id}`, {}, {
|
||||
toastErrorKey: 'errors.receptionBovine.delete'
|
||||
})
|
||||
}
|
||||
|
||||
export async function updateReceptionBovine(
|
||||
id: number,
|
||||
payload: Partial<ReceptionBovinePayload>
|
||||
): Promise<ReceptionBovineTypeData> {
|
||||
const api = useApi()
|
||||
return api.patch<ReceptionBovineTypeData>(`reception_bovines/${id}`, payload, {
|
||||
toastErrorKey: 'errors.receptionBovine.update'
|
||||
})
|
||||
}
|
||||
@@ -2,13 +2,15 @@ import {useApi} from '~/composables/useApi'
|
||||
import type {ReceptionData, ReceptionPayload} from '~/services/dto/reception-data'
|
||||
import type {WeightData} from '~/services/dto/weight-data'
|
||||
|
||||
export async function getReceptionList() {
|
||||
export async function getReceptionList(isValid: boolean|null = null) {
|
||||
const api = useApi()
|
||||
return api.get<ReceptionData>(`receptions`, {}, {
|
||||
const query = isValid !== null ? { isValid: isValid} : {}
|
||||
return api.get<ReceptionData[]>('receptions', query, {
|
||||
toastErrorKey: 'errors.reception.list'
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
export async function getReception(id: number) {
|
||||
const api = useApi()
|
||||
return api.get<ReceptionData>(`receptions/${id}`, {}, {
|
||||
|
||||
24
frontend/services/shipment-type.ts
Normal file
24
frontend/services/shipment-type.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import { useApi } from '~/composables/useApi'
|
||||
import type {ShipmentTypeData} from "~/services/dto/shipment-type-data";
|
||||
|
||||
export type ShipmentTypeListResponse =
|
||||
| ShipmentTypeData[]
|
||||
| { 'hydra:member'?: ShipmentTypeData[] }
|
||||
|
||||
|
||||
export async function getShipmentTypeList(): Promise<ShipmentTypeData[]> {
|
||||
const api = useApi()
|
||||
const response = await api.get<ShipmentTypeListResponse>('shipment_types', {}, {
|
||||
toastErrorKey: 'errors.shipmentType.list'
|
||||
})
|
||||
|
||||
if (Array.isArray(response)) {
|
||||
return response
|
||||
}
|
||||
|
||||
if (response && typeof response === 'object' && Array.isArray(response['hydra:member'])) {
|
||||
return response['hydra:member']
|
||||
}
|
||||
|
||||
return []
|
||||
}
|
||||
40
frontend/services/shipment.ts
Normal file
40
frontend/services/shipment.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import {useApi} from '~/composables/useApi'
|
||||
import type {ShipmentData, ShipmentPayload} from '~/services/dto/shipment-data'
|
||||
import type {WeightData} from '~/services/dto/weight-data'
|
||||
|
||||
export async function getShipmentList(isValid: boolean|null = null) {
|
||||
const api = useApi()
|
||||
const query = isValid !== null ? { isValid: isValid} : {}
|
||||
return api.get<ShipmentData[]>('shipments', query, {
|
||||
toastErrorKey: 'errors.shipment.list'
|
||||
})
|
||||
}
|
||||
|
||||
export async function getShipment(id: number) {
|
||||
const api = useApi()
|
||||
return api.get<ShipmentData>(`shipments/${id}`, {}, {
|
||||
toastErrorKey: 'errors.shipment.fetch'
|
||||
})
|
||||
}
|
||||
|
||||
export async function createShipment(payload: ShipmentPayload = {}) {
|
||||
const api = useApi()
|
||||
return api.post<ShipmentData>('shipments', payload, {
|
||||
toastErrorKey: 'errors.shipment.create'
|
||||
})
|
||||
}
|
||||
|
||||
export async function updateShipment(id: number, payload: ShipmentPayload) {
|
||||
const api = useApi()
|
||||
return api.patch<ShipmentData>(`shipments/${id}`, payload, {
|
||||
toastErrorKey: 'errors.shipment.update',
|
||||
toastSuccessKey: 'success.shipment.update'
|
||||
})
|
||||
}
|
||||
|
||||
export async function getWeightShipment(): Promise<WeightData> {
|
||||
const api = useApi()
|
||||
return api.get<WeightData>('shipments/weigh', {}, {
|
||||
toastErrorKey: 'errors.shipment.weigh'
|
||||
})
|
||||
}
|
||||
@@ -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<SupplierData[]> {
|
||||
const api = useApi()
|
||||
const response = await api.get<SupplierListResponse>('suppliers', {}, {
|
||||
toastErrorKey: 'errors.supplier.list'
|
||||
const response = await api.get<SupplierListResponse>("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<SupplierData> {
|
||||
const api = useApi()
|
||||
return api.get<SupplierData>(`suppliers/${id}`, {}, {
|
||||
toastErrorKey: "errors.supplier.fetch",
|
||||
})
|
||||
}
|
||||
|
||||
export async function updateSupplier(id: number, payload: Partial<SupplierPayload>): Promise<SupplierData> {
|
||||
const api = useApi()
|
||||
return api.patch<SupplierData>(`suppliers/${id}`, payload, {
|
||||
toastErrorKey: "errors.supplier.update",
|
||||
toastSuccessKey: "success.supplier.update",
|
||||
})
|
||||
}
|
||||
|
||||
export async function createSupplier(payload: SupplierPayload): Promise<SupplierData> {
|
||||
const api = useApi()
|
||||
return api.post<SupplierData>("suppliers", payload, {
|
||||
toastErrorKey: "errors.supplier.create",
|
||||
toastSuccessKey: "success.supplier.create",
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
import { useApi } from '~/composables/useApi'
|
||||
import type { WeightEntryData } from '~/services/dto/reception-data'
|
||||
import type {ReceptionData, ReceptionPayload, WeightEntryData} from '~/services/dto/reception-data'
|
||||
import type {Ref} from "vue";
|
||||
import type {ShipmentData, ShipmentPayload} from "~/services/dto/shipment-data";
|
||||
import type {WeighingMode} from "~/composables/useWeighing";
|
||||
|
||||
export type WeightPayload = {
|
||||
reception: string
|
||||
reception?: string
|
||||
shipment?: string
|
||||
type: 'gross' | 'tare'
|
||||
dsd: number | null
|
||||
weight: number | null
|
||||
@@ -16,5 +20,22 @@ export async function createWeight(payload: WeightPayload) {
|
||||
|
||||
export async function updateWeight(id: number, payload: Partial<WeightPayload>) {
|
||||
const api = useApi()
|
||||
return api.patch<WeightEntryData>(`weights/${id}`, payload)
|
||||
return api.patch<WeightEntryData>(`weights/${id}`, payload,{
|
||||
toastErrorKey: 'errors.weight.update',
|
||||
toastSuccessKey: 'success.weight.update'
|
||||
})
|
||||
}
|
||||
|
||||
export type UseWeighingShipmentOptions = {
|
||||
modeShipment: WeighingMode
|
||||
shipment: Ref<ShipmentData | null>
|
||||
updateShipment: (id: number, payload: ShipmentPayload) => Promise<ShipmentData | null>
|
||||
loadShipment?: (id: number) => Promise<ShipmentData | null>
|
||||
}
|
||||
|
||||
export type UseWeighingOptions = {
|
||||
mode: WeighingMode
|
||||
reception: Ref<ReceptionData | null>
|
||||
updateReception: (id: number, payload: ReceptionPayload) => Promise<ReceptionData | null>
|
||||
loadReception?: (id: number) => Promise<ReceptionData | null>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user