Add POI feature and imporve the overall backend implementation

This commit is contained in:
Urtzi Alfaro
2025-11-12 15:34:10 +01:00
parent e8096cd979
commit 5783c7ed05
173 changed files with 16862 additions and 9078 deletions

View File

@@ -169,11 +169,11 @@ export const useCreateOrder = (
queryKey: ordersKeys.orders(),
predicate: (query) => {
const queryKey = query.queryKey as string[];
return queryKey.includes('list') &&
return queryKey.includes('list') &&
JSON.stringify(queryKey).includes(variables.tenant_id);
},
});
// Invalidate dashboard
queryClient.invalidateQueries({
queryKey: ordersKeys.dashboard(variables.tenant_id),
@@ -189,6 +189,39 @@ export const useCreateOrder = (
});
};
export const useUpdateOrder = (
options?: UseMutationOptions<OrderResponse, ApiError, { tenantId: string; orderId: string; data: OrderUpdate }>
) => {
const queryClient = useQueryClient();
return useMutation<OrderResponse, ApiError, { tenantId: string; orderId: string; data: OrderUpdate }>({
mutationFn: ({ tenantId, orderId, data }) => OrdersService.updateOrder(tenantId, orderId, data),
onSuccess: (data, variables) => {
// Update the specific order in cache
queryClient.setQueryData(
ordersKeys.order(variables.tenantId, variables.orderId),
data
);
// Invalidate orders list for this tenant
queryClient.invalidateQueries({
queryKey: ordersKeys.orders(),
predicate: (query) => {
const queryKey = query.queryKey as string[];
return queryKey.includes('list') &&
JSON.stringify(queryKey).includes(variables.tenantId);
},
});
// Invalidate dashboard
queryClient.invalidateQueries({
queryKey: ordersKeys.dashboard(variables.tenantId),
});
},
...options,
});
};
export const useUpdateOrderStatus = (
options?: UseMutationOptions<OrderResponse, ApiError, UpdateOrderStatusParams>
) => {

View File

@@ -10,7 +10,9 @@ import type {
PurchaseOrderDetail,
PurchaseOrderSearchParams,
PurchaseOrderUpdateData,
PurchaseOrderStatus
PurchaseOrderStatus,
CreateDeliveryInput,
DeliveryResponse
} from '../services/purchase_orders';
import {
listPurchaseOrders,
@@ -21,7 +23,8 @@ import {
approvePurchaseOrder,
rejectPurchaseOrder,
bulkApprovePurchaseOrders,
deletePurchaseOrder
deletePurchaseOrder,
createDelivery
} from '../services/purchase_orders';
// Query Keys
@@ -257,3 +260,33 @@ export const useDeletePurchaseOrder = (
...options,
});
};
/**
* Hook to create a delivery for a purchase order
*/
export const useCreateDelivery = (
options?: UseMutationOptions<
DeliveryResponse,
ApiError,
{ tenantId: string; poId: string; deliveryData: CreateDeliveryInput }
>
) => {
const queryClient = useQueryClient();
return useMutation<
DeliveryResponse,
ApiError,
{ tenantId: string; poId: string; deliveryData: CreateDeliveryInput }
>({
mutationFn: ({ tenantId, poId, deliveryData }) => createDelivery(tenantId, poId, deliveryData),
onSuccess: (data, variables) => {
// Invalidate all PO queries to refresh status
queryClient.invalidateQueries({ queryKey: purchaseOrderKeys.all });
// Invalidate detail for this specific PO
queryClient.invalidateQueries({
queryKey: purchaseOrderKeys.detail(variables.tenantId, variables.poId)
});
},
...options,
});
};