Skip to content
Extraits de code Groupes Projets
Valider ce3c1b61 rédigé par Mohamed Lemine BAILLAHI's avatar Mohamed Lemine BAILLAHI
Parcourir les fichiers

Merge branch 'feature/MYD-292' into 'develop'

MYD-292/ Integrate ShippingMethods frontend and backend

See merge request !106
parents 7799f111 fb6ed95b
Branches
1 requête de fusion!106MYD-292/ Integrate ShippingMethods frontend and backend
Pipeline #2163 réussi avec les étapes
in 4 minutes et 2 secondes
......@@ -21,7 +21,8 @@ export const shippingMethodTypeLabels = {
export type IShippingAreaItem = {
id: string;
name: string;
region: string[];
order: number;
regionList: string[];
shippingMethodList: ShippingMethod[];
};
......
......@@ -105,7 +105,8 @@ const generateShippingAreas = (): IShippingAreaItem[] => {
zones.push({
id: _mock.id(i),
name: zoneNames[i],
region: selectedCountries.map(country => `${country}`),
order: 1,
regionList: selectedCountries.map(country => country),
shippingMethodList: selectedMethods,
});
}
......
......@@ -86,5 +86,12 @@ export const endpoints = {
edit:(shippingMethodId:string)=> `/shipping/method/mondial-relay/${shippingMethodId}`,
},
},
shippingArea:{
getAll: `/shipping/shipping-area`,
getById:(shippingAreaId:string)=> `/shipping/shipping-area/${shippingAreaId}`,
add: "/shipping/shipping-area",
edit:(shippingAreaId:string)=> `/shipping/shipping-area/${shippingAreaId}`,
delete:(shippingAreaId:string)=> `/shipping/shipping-area/${shippingAreaId}`,
},
}
};
import { Colissimo, FlatRate, FreeShipping, MondialRelay, PointOfSale, ShippingClass, ShippingMethod, ShippingMethodType, ShippingRules } from "@/contexts/types/Shipping";
import { Colissimo, FlatRate, FreeShipping, IShippingAreaItem, MondialRelay, PointOfSale, ShippingClass, ShippingMethod, ShippingMethodType, ShippingRules } from "@/contexts/types/Shipping";
import { useMemo } from "react";
import useSWR from "swr";
import { _orders } from "../_mock";
......@@ -483,3 +483,71 @@ export function useGetMondialRelay(shippingMethodId: string) {
return memoizedValue;
}
///////////////////-----------ShippingArea----------///////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
export function useGetAllShippingArea() {
const URL = [endpoints.shipping.shippingArea.getAll];
const { data, error } = useSWR<IShippingAreaItem[]>(URL, fetcher, options);
const memoizedValue = useMemo(
() => ({
shippingAreaData: (data as IShippingAreaItem[]) || [],
shippingAreaError: error,
}),
[data, error]
);
return memoizedValue;
}
export function useGetShippingArea(shippingAreaId: string) {
const { data, error } = useSWR<IShippingAreaItem>(
shippingAreaId ? endpoints.shipping.shippingArea.getById(shippingAreaId) : null,
fetcher
);
const memoizedValue = useMemo(
() => ({
shippingArea: data,
shippingAreaError: error,
}),
[data, error]
);
return memoizedValue;
}
export async function useAddShippingArea(data: IShippingAreaItem) {
console.log("ship method api : "+data.shippingMethodList)
const formData = {
name: data.name,
regionList: data.regionList,
shippingMethodList: data.shippingMethodList,
}
const response = await axiosInstance.post(endpoints.shipping.shippingArea.add, formData);
const newData: IShippingAreaItem = response.data;
mutate([endpoints.shipping.shippingArea.getAll], (shippingAreas: IShippingAreaItem[] = []) => [...shippingAreas, newData], true);
return newData;
}
export async function useUpdateShippingArea(id: string, updatedShippingArea: IShippingAreaItem) {
const response = await axiosInstance.put(endpoints.shipping.shippingArea.edit(id), updatedShippingArea);
const updatedData: IShippingAreaItem = response.data;
mutate([endpoints.shipping.shippingArea.getAll], (shippingAreas: IShippingAreaItem[] = []) =>
shippingAreas.map((shippingArea) =>
shippingArea.id === id ? updatedData : shippingArea
),
true
);
return response.data as IShippingAreaItem;
}
export async function useDeleteShippingArea(id: string) {
const response = await axiosInstance.delete(endpoints.shipping.shippingArea.delete(id));
mutate(endpoints.shipping.shippingArea.getAll);
return response.status;
}
......@@ -30,7 +30,7 @@ export default function ShippingAreaTableRow({
onEditRow,
onDeleteRow,
}: Props) {
const { name, region, shippingMethodList } = row;
const { name, regionList, shippingMethodList } = row;
const confirm = useBoolean();
const popover = usePopover();
const openDetails = useBoolean();
......@@ -49,12 +49,33 @@ export default function ShippingAreaTableRow({
/>
</TableCell>
<TableCell sx={{ width: '340px' }} >
{region.map((item, index) => (<Button variant="outlined" size="small" key={index} sx={{ margin: '2px' }}>{item}</Button>))}
<TableCell sx={{ width: '340px' }}>
{regionList && regionList.length > 0 ? (
regionList.map((item, index) => (
<Button
variant="outlined"
size="small"
key={index}
sx={{ margin: '2px' }}
>
{item}
</Button>
))
) : (
<p>Aucune région disponible</p>
)}
</TableCell>
<TableCell sx={{width:'400px'}}>
{shippingMethodList.map((item, index) => (<Button variant="outlined" size="small" key={index} sx={{ margin: '2px' }}>{item.type}</Button>))}
<TableCell sx={{ width: '400px' }}>
{shippingMethodList && shippingMethodList.length > 0 ? (
shippingMethodList.map((item, index) => (
<Button variant="outlined" size="small" key={index} sx={{ margin: '2px' }}>
{item.name}
</Button>
))
) : (
<p>Aucun mode de livraison disponible</p>
)}
</TableCell>
<TableCell sx={{ display: 'flex', justifyContent: 'flex-end', alignItems: 'center', px: 1 }}>
......
0% ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter