feat(inquiries): Add status change functionality to inquiries
- Add useChangeInquiryStatus hook for managing inquiry status mutations - Add STATUS endpoint to inquiries API endpoints configuration - Add changeInquiryStatus method to inquiries service with error handling - Add TChangeInquiryStatusCredentials type with validation schema - Include description, reason, and status fields in status change credentials - Invalidate inquiries query cache on successful status update - Display success toast notification after status change completes
This commit is contained in:
@@ -66,6 +66,7 @@ export const API_ENDPOINTS = {
|
||||
},
|
||||
|
||||
INQUIRIES: {
|
||||
BASE: (id?: string) => (id ? `inquiries/${id}` : "inquiries"),
|
||||
}
|
||||
BASE: (id?: string) => (id ? `inquiries/${id}` : "inquiries"),
|
||||
STATUS: (id: string) => `inquiries/${id}/status`,
|
||||
},
|
||||
} as const;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import api from "../axios";
|
||||
import { API_ENDPOINTS } from "../endpoints";
|
||||
import { TInquiriesResponse } from "../types";
|
||||
import { TChangeInquiryStatusCredentials, TInquiriesResponse } from "../types";
|
||||
|
||||
export const inquiriesService = {
|
||||
getInquiries: async (
|
||||
@@ -17,7 +17,28 @@ export const inquiriesService = {
|
||||
try {
|
||||
return (await api.delete(API_ENDPOINTS.INQUIRIES.BASE(id))).data;
|
||||
} catch (error) {
|
||||
console.error("ERROR caught in inquiries service => deleteInquiry", error);
|
||||
console.error(
|
||||
"ERROR caught in inquiries service => deleteInquiry",
|
||||
error,
|
||||
);
|
||||
throw error;
|
||||
}
|
||||
},
|
||||
changeInquiryStatus: async ({
|
||||
credentials,
|
||||
id,
|
||||
}: {
|
||||
credentials: TChangeInquiryStatusCredentials;
|
||||
id: string;
|
||||
}) => {
|
||||
try {
|
||||
return (await api.put(API_ENDPOINTS.INQUIRIES.STATUS(id), credentials))
|
||||
.data;
|
||||
} catch (error) {
|
||||
console.error(
|
||||
"ERROR caught in inquiries service => changeInquiryStatus",
|
||||
error,
|
||||
);
|
||||
throw error;
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
import { INQUIRY_STATUS } from "@/constants/enums";
|
||||
import { z } from "zod";
|
||||
import { createApiResponseSchema } from "./Factory";
|
||||
|
||||
const changeInquiryStatusCredentials = z.object({
|
||||
description: z.string(),
|
||||
reason: z.string(),
|
||||
status: z.enum(INQUIRY_STATUS),
|
||||
});
|
||||
const inquiriesSchema = z.object({
|
||||
company_name: z.string(),
|
||||
created_at: z.number(),
|
||||
@@ -22,5 +27,8 @@ const inquiriesSchema = z.object({
|
||||
export const inquiriesListResponse = createApiResponseSchema(
|
||||
z.object({ inquiries: z.array(inquiriesSchema) }),
|
||||
);
|
||||
export type TChangeInquiryStatusCredentials = z.infer<
|
||||
typeof changeInquiryStatusCredentials
|
||||
>;
|
||||
export type TInquiries = z.infer<typeof inquiriesSchema>;
|
||||
export type TInquiriesResponse = z.infer<typeof inquiriesListResponse>;
|
||||
|
||||
Reference in New Issue
Block a user