feat: clients page

This commit is contained in:
2025-10-04 18:18:17 +04:00
parent f641e9ef8c
commit e9bfd39ab4
20 changed files with 1141 additions and 3 deletions

View File

@ -13,6 +13,7 @@ import {
addKitToDealProduct,
createBarcodeTemplate,
createBoard,
createClient,
createDeal,
createDealProduct,
createDealProductService,
@ -25,6 +26,7 @@ import {
createStatus,
deleteBarcodeTemplate,
deleteBoard,
deleteClient,
deleteDeal,
deleteDealProduct,
deleteDealProductService,
@ -41,6 +43,7 @@ import {
getBarcodeTemplateSizes,
getBoards,
getBuiltInModules,
getClients,
getDealProducts,
getDeals,
getDealServices,
@ -53,6 +56,7 @@ import {
getStatusHistory,
updateBarcodeTemplate,
updateBoard,
updateClient,
updateDeal,
updateDealProduct,
updateDealProductService,
@ -78,6 +82,9 @@ import type {
CreateBoardData,
CreateBoardError,
CreateBoardResponse2,
CreateClientData,
CreateClientError,
CreateClientResponse2,
CreateDealData,
CreateDealError,
CreateDealProductData,
@ -114,6 +121,9 @@ import type {
DeleteBoardData,
DeleteBoardError,
DeleteBoardResponse2,
DeleteClientData,
DeleteClientError,
DeleteClientResponse2,
DeleteDealData,
DeleteDealError,
DeleteDealProductData,
@ -152,6 +162,7 @@ import type {
GetBarcodeTemplateSizesData,
GetBoardsData,
GetBuiltInModulesData,
GetClientsData,
GetDealProductsData,
GetDealsData,
GetDealsError,
@ -172,6 +183,9 @@ import type {
UpdateBoardData,
UpdateBoardError,
UpdateBoardResponse2,
UpdateClientData,
UpdateClientError,
UpdateClientResponse2,
UpdateDealData,
UpdateDealError,
UpdateDealProductData,
@ -865,6 +879,129 @@ export const getStatusHistoryOptions = (
});
};
export const getClientsQueryKey = (options?: Options<GetClientsData>) =>
createQueryKey("getClients", options);
/**
* Get Clients
*/
export const getClientsOptions = (options?: Options<GetClientsData>) => {
return queryOptions({
queryFn: async ({ queryKey, signal }) => {
const { data } = await getClients({
...options,
...queryKey[0],
signal,
throwOnError: true,
});
return data;
},
queryKey: getClientsQueryKey(options),
});
};
export const createClientQueryKey = (options: Options<CreateClientData>) =>
createQueryKey("createClient", options);
/**
* Create Client
*/
export const createClientOptions = (options: Options<CreateClientData>) => {
return queryOptions({
queryFn: async ({ queryKey, signal }) => {
const { data } = await createClient({
...options,
...queryKey[0],
signal,
throwOnError: true,
});
return data;
},
queryKey: createClientQueryKey(options),
});
};
/**
* Create Client
*/
export const createClientMutation = (
options?: Partial<Options<CreateClientData>>
): UseMutationOptions<
CreateClientResponse2,
AxiosError<CreateClientError>,
Options<CreateClientData>
> => {
const mutationOptions: UseMutationOptions<
CreateClientResponse2,
AxiosError<CreateClientError>,
Options<CreateClientData>
> = {
mutationFn: async localOptions => {
const { data } = await createClient({
...options,
...localOptions,
throwOnError: true,
});
return data;
},
};
return mutationOptions;
};
/**
* Delete Product
*/
export const deleteClientMutation = (
options?: Partial<Options<DeleteClientData>>
): UseMutationOptions<
DeleteClientResponse2,
AxiosError<DeleteClientError>,
Options<DeleteClientData>
> => {
const mutationOptions: UseMutationOptions<
DeleteClientResponse2,
AxiosError<DeleteClientError>,
Options<DeleteClientData>
> = {
mutationFn: async localOptions => {
const { data } = await deleteClient({
...options,
...localOptions,
throwOnError: true,
});
return data;
},
};
return mutationOptions;
};
/**
* Update Client
*/
export const updateClientMutation = (
options?: Partial<Options<UpdateClientData>>
): UseMutationOptions<
UpdateClientResponse2,
AxiosError<UpdateClientError>,
Options<UpdateClientData>
> => {
const mutationOptions: UseMutationOptions<
UpdateClientResponse2,
AxiosError<UpdateClientError>,
Options<UpdateClientData>
> = {
mutationFn: async localOptions => {
const { data } = await updateClient({
...options,
...localOptions,
throwOnError: true,
});
return data;
},
};
return mutationOptions;
};
export const getBarcodeTemplatesQueryKey = (
options?: Options<GetBarcodeTemplatesData>
) => createQueryKey("getBarcodeTemplates", options);

View File

@ -15,6 +15,9 @@ import type {
CreateBoardData,
CreateBoardErrors,
CreateBoardResponses,
CreateClientData,
CreateClientErrors,
CreateClientResponses,
CreateDealData,
CreateDealErrors,
CreateDealProductData,
@ -51,6 +54,9 @@ import type {
DeleteBoardData,
DeleteBoardErrors,
DeleteBoardResponses,
DeleteClientData,
DeleteClientErrors,
DeleteClientResponses,
DeleteDealData,
DeleteDealErrors,
DeleteDealProductData,
@ -95,6 +101,8 @@ import type {
GetBoardsResponses,
GetBuiltInModulesData,
GetBuiltInModulesResponses,
GetClientsData,
GetClientsResponses,
GetDealProductsData,
GetDealProductsErrors,
GetDealProductsResponses,
@ -127,6 +135,9 @@ import type {
UpdateBoardData,
UpdateBoardErrors,
UpdateBoardResponses,
UpdateClientData,
UpdateClientErrors,
UpdateClientResponses,
UpdateDealData,
UpdateDealErrors,
UpdateDealProductData,
@ -167,6 +178,8 @@ import {
zCreateBarcodeTemplateResponse2,
zCreateBoardData,
zCreateBoardResponse2,
zCreateClientData,
zCreateClientResponse2,
zCreateDealData,
zCreateDealProductData,
zCreateDealProductResponse2,
@ -191,6 +204,8 @@ import {
zDeleteBarcodeTemplateResponse2,
zDeleteBoardData,
zDeleteBoardResponse2,
zDeleteClientData,
zDeleteClientResponse2,
zDeleteDealData,
zDeleteDealProductData,
zDeleteDealProductResponse2,
@ -223,6 +238,8 @@ import {
zGetBoardsResponse2,
zGetBuiltInModulesData,
zGetBuiltInModulesResponse,
zGetClientsData,
zGetClientsResponse2,
zGetDealProductsData,
zGetDealProductsResponse2,
zGetDealsData,
@ -247,6 +264,8 @@ import {
zUpdateBarcodeTemplateResponse2,
zUpdateBoardData,
zUpdateBoardResponse2,
zUpdateClientData,
zUpdateClientResponse2,
zUpdateDealData,
zUpdateDealProductData,
zUpdateDealProductResponse2,
@ -732,6 +751,106 @@ export const getStatusHistory = <ThrowOnError extends boolean = false>(
});
};
/**
* Get Clients
*/
export const getClients = <ThrowOnError extends boolean = false>(
options?: Options<GetClientsData, ThrowOnError>
) => {
return (options?.client ?? _heyApiClient).get<
GetClientsResponses,
unknown,
ThrowOnError
>({
requestValidator: async data => {
return await zGetClientsData.parseAsync(data);
},
responseType: "json",
responseValidator: async data => {
return await zGetClientsResponse2.parseAsync(data);
},
url: "/modules/clients/client/",
...options,
});
};
/**
* Create Client
*/
export const createClient = <ThrowOnError extends boolean = false>(
options: Options<CreateClientData, ThrowOnError>
) => {
return (options.client ?? _heyApiClient).post<
CreateClientResponses,
CreateClientErrors,
ThrowOnError
>({
requestValidator: async data => {
return await zCreateClientData.parseAsync(data);
},
responseType: "json",
responseValidator: async data => {
return await zCreateClientResponse2.parseAsync(data);
},
url: "/modules/clients/client/",
...options,
headers: {
"Content-Type": "application/json",
...options.headers,
},
});
};
/**
* Delete Product
*/
export const deleteClient = <ThrowOnError extends boolean = false>(
options: Options<DeleteClientData, ThrowOnError>
) => {
return (options.client ?? _heyApiClient).delete<
DeleteClientResponses,
DeleteClientErrors,
ThrowOnError
>({
requestValidator: async data => {
return await zDeleteClientData.parseAsync(data);
},
responseType: "json",
responseValidator: async data => {
return await zDeleteClientResponse2.parseAsync(data);
},
url: "/modules/clients/client/{pk}",
...options,
});
};
/**
* Update Client
*/
export const updateClient = <ThrowOnError extends boolean = false>(
options: Options<UpdateClientData, ThrowOnError>
) => {
return (options.client ?? _heyApiClient).patch<
UpdateClientResponses,
UpdateClientErrors,
ThrowOnError
>({
requestValidator: async data => {
return await zUpdateClientData.parseAsync(data);
},
responseType: "json",
responseValidator: async data => {
return await zUpdateClientResponse2.parseAsync(data);
},
url: "/modules/clients/client/{pk}",
...options,
headers: {
"Content-Type": "application/json",
...options.headers,
},
});
};
/**
* Get Barcode Templates
*/

View File

@ -171,6 +171,51 @@ export type BuiltInModuleTabSchema = {
device: string;
};
/**
* ClientDetailsSchema
*/
export type ClientDetailsSchema = {
/**
* Telegram
*/
telegram: string;
/**
* Phonenumber
*/
phoneNumber: string;
/**
* Inn
*/
inn: string;
/**
* Email
*/
email: string;
};
/**
* ClientSchema
*/
export type ClientSchema = {
/**
* Name
*/
name: string;
/**
* Companyname
*/
companyName: string;
/**
* Comment
*/
comment?: string | null;
details: ClientDetailsSchema;
/**
* Id
*/
id: number;
};
/**
* CreateBarcodeTemplateRequest
*/
@ -244,6 +289,42 @@ export type CreateBoardSchema = {
lexorank: string;
};
/**
* CreateClientRequest
*/
export type CreateClientRequest = {
entity: CreateClientSchema;
};
/**
* CreateClientResponse
*/
export type CreateClientResponse = {
/**
* Message
*/
message: string;
};
/**
* CreateClientSchema
*/
export type CreateClientSchema = {
/**
* Name
*/
name: string;
/**
* Companyname
*/
companyName: string;
/**
* Comment
*/
comment?: string | null;
details: ClientDetailsSchema;
};
/**
* CreateDealProductRequest
*/
@ -799,6 +880,16 @@ export type DeleteBoardResponse = {
message: string;
};
/**
* DeleteClientResponse
*/
export type DeleteClientResponse = {
/**
* Message
*/
message: string;
};
/**
* DeleteDealProductResponse
*/
@ -949,6 +1040,16 @@ export type GetBoardsResponse = {
items: Array<BoardSchema>;
};
/**
* GetClientsResponse
*/
export type GetClientsResponse = {
/**
* Items
*/
items: Array<ClientSchema>;
};
/**
* GetDealProductsResponse
*/
@ -1419,6 +1520,42 @@ export type UpdateBoardSchema = {
lexorank?: string | null;
};
/**
* UpdateClientRequest
*/
export type UpdateClientRequest = {
entity: UpdateClientSchema;
};
/**
* UpdateClientResponse
*/
export type UpdateClientResponse = {
/**
* Message
*/
message: string;
};
/**
* UpdateClientSchema
*/
export type UpdateClientSchema = {
/**
* Name
*/
name?: string | null;
/**
* Companyname
*/
companyName?: string | null;
/**
* Comment
*/
comment?: string | null;
details?: ClientDetailsSchema | null;
};
/**
* UpdateDealProductRequest
*/
@ -2357,6 +2494,111 @@ export type GetStatusHistoryResponses = {
export type GetStatusHistoryResponse2 =
GetStatusHistoryResponses[keyof GetStatusHistoryResponses];
export type GetClientsData = {
body?: never;
path?: never;
query?: never;
url: "/modules/clients/client/";
};
export type GetClientsResponses = {
/**
* Successful Response
*/
200: GetClientsResponse;
};
export type GetClientsResponse2 =
GetClientsResponses[keyof GetClientsResponses];
export type CreateClientData = {
body: CreateClientRequest;
path?: never;
query?: never;
url: "/modules/clients/client/";
};
export type CreateClientErrors = {
/**
* Validation Error
*/
422: HttpValidationError;
};
export type CreateClientError = CreateClientErrors[keyof CreateClientErrors];
export type CreateClientResponses = {
/**
* Successful Response
*/
200: CreateClientResponse;
};
export type CreateClientResponse2 =
CreateClientResponses[keyof CreateClientResponses];
export type DeleteClientData = {
body?: never;
path: {
/**
* Pk
*/
pk: number;
};
query?: never;
url: "/modules/clients/client/{pk}";
};
export type DeleteClientErrors = {
/**
* Validation Error
*/
422: HttpValidationError;
};
export type DeleteClientError = DeleteClientErrors[keyof DeleteClientErrors];
export type DeleteClientResponses = {
/**
* Successful Response
*/
200: DeleteClientResponse;
};
export type DeleteClientResponse2 =
DeleteClientResponses[keyof DeleteClientResponses];
export type UpdateClientData = {
body: UpdateClientRequest;
path: {
/**
* Pk
*/
pk: number;
};
query?: never;
url: "/modules/clients/client/{pk}";
};
export type UpdateClientErrors = {
/**
* Validation Error
*/
422: HttpValidationError;
};
export type UpdateClientError = UpdateClientErrors[keyof UpdateClientErrors];
export type UpdateClientResponses = {
/**
* Successful Response
*/
200: UpdateClientResponse;
};
export type UpdateClientResponse2 =
UpdateClientResponses[keyof UpdateClientResponses];
export type GetBarcodeTemplatesData = {
body?: never;
path?: never;

View File

@ -89,6 +89,27 @@ export const zBuiltInModuleSchemaOutput = z.object({
tabs: z.array(zBuiltInModuleTabSchema),
});
/**
* ClientDetailsSchema
*/
export const zClientDetailsSchema = z.object({
telegram: z.string(),
phoneNumber: z.string(),
inn: z.string(),
email: z.string(),
});
/**
* ClientSchema
*/
export const zClientSchema = z.object({
name: z.string(),
companyName: z.string(),
comment: z.optional(z.union([z.string(), z.null()])),
details: zClientDetailsSchema,
id: z.int(),
});
/**
* CreateBarcodeTemplateSchema
*/
@ -138,6 +159,30 @@ export const zCreateBoardResponse = z.object({
entity: zBoardSchema,
});
/**
* CreateClientSchema
*/
export const zCreateClientSchema = z.object({
name: z.string(),
companyName: z.string(),
comment: z.optional(z.union([z.string(), z.null()])),
details: zClientDetailsSchema,
});
/**
* CreateClientRequest
*/
export const zCreateClientRequest = z.object({
entity: zCreateClientSchema,
});
/**
* CreateClientResponse
*/
export const zCreateClientResponse = z.object({
message: z.string(),
});
/**
* CreateDealProductSchema
*/
@ -563,6 +608,13 @@ export const zDeleteBoardResponse = z.object({
message: z.string(),
});
/**
* DeleteClientResponse
*/
export const zDeleteClientResponse = z.object({
message: z.string(),
});
/**
* DeleteDealProductResponse
*/
@ -668,6 +720,13 @@ export const zGetBoardsResponse = z.object({
items: z.array(zBoardSchema),
});
/**
* GetClientsResponse
*/
export const zGetClientsResponse = z.object({
items: z.array(zClientSchema),
});
/**
* GetDealProductsResponse
*/
@ -851,6 +910,30 @@ export const zUpdateBoardResponse = z.object({
message: z.string(),
});
/**
* UpdateClientSchema
*/
export const zUpdateClientSchema = z.object({
name: z.optional(z.union([z.string(), z.null()])),
companyName: z.optional(z.union([z.string(), z.null()])),
comment: z.optional(z.union([z.string(), z.null()])),
details: z.optional(z.union([zClientDetailsSchema, z.null()])),
});
/**
* UpdateClientRequest
*/
export const zUpdateClientRequest = z.object({
entity: zUpdateClientSchema,
});
/**
* UpdateClientResponse
*/
export const zUpdateClientResponse = z.object({
message: z.string(),
});
/**
* UpdateDealProductSchema
*/
@ -1323,6 +1406,54 @@ export const zGetStatusHistoryData = z.object({
*/
export const zGetStatusHistoryResponse2 = zGetStatusHistoryResponse;
export const zGetClientsData = z.object({
body: z.optional(z.never()),
path: z.optional(z.never()),
query: z.optional(z.never()),
});
/**
* Successful Response
*/
export const zGetClientsResponse2 = zGetClientsResponse;
export const zCreateClientData = z.object({
body: zCreateClientRequest,
path: z.optional(z.never()),
query: z.optional(z.never()),
});
/**
* Successful Response
*/
export const zCreateClientResponse2 = zCreateClientResponse;
export const zDeleteClientData = z.object({
body: z.optional(z.never()),
path: z.object({
pk: z.int(),
}),
query: z.optional(z.never()),
});
/**
* Successful Response
*/
export const zDeleteClientResponse2 = zDeleteClientResponse;
export const zUpdateClientData = z.object({
body: zUpdateClientRequest,
path: z.object({
pk: z.int(),
}),
query: z.optional(z.never()),
});
/**
* Successful Response
*/
export const zUpdateClientResponse2 = zUpdateClientResponse;
export const zGetBarcodeTemplatesData = z.object({
body: z.optional(z.never()),
path: z.optional(z.never()),