feat(orders): implement updateOrder functionality with comprehensive validation tests
- Added updateOrder method in OrdersService with checks for permissions, order state, and datetime validation. - Implemented tests for various scenarios including successful updates, permission errors, and validation failures. - Enhanced error handling for overlapping time and invalid state changes. - Updated GraphQL operations to support sorting in GetOrders query.
This commit is contained in:
parent
5451fe79ed
commit
269dabe067
@ -808,4 +808,657 @@ describe('OrdersService', () => {
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('updateOrder', () => {
|
||||
const mockVariables = {
|
||||
data: {
|
||||
datetime_end: now.add(2, 'hour').toISOString(),
|
||||
datetime_start: now.add(1, 'hour').toISOString(),
|
||||
state: GQL.Enum_Order_State.Approved,
|
||||
},
|
||||
documentId: 'order-123',
|
||||
};
|
||||
|
||||
const mockMutationResult = {
|
||||
data: {
|
||||
updateOrder: {
|
||||
...mockOrder,
|
||||
...mockVariables.data,
|
||||
},
|
||||
},
|
||||
errors: undefined,
|
||||
};
|
||||
|
||||
it('should successfully update order by master', async () => {
|
||||
const mockMutate = vi.fn().mockResolvedValue(mockMutationResult);
|
||||
const mockQuery = vi.fn().mockImplementation(({ query }) => {
|
||||
if (query === GQL.GetOrderDocument) {
|
||||
return Promise.resolve({
|
||||
data: {
|
||||
order: {
|
||||
...mockOrder,
|
||||
slot: { ...mockSlot, master: mockMaster },
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
if (query === GQL.GetOrdersDocument) {
|
||||
return Promise.resolve({ data: { orders: [] } });
|
||||
}
|
||||
|
||||
return Promise.resolve({ data: {} });
|
||||
});
|
||||
|
||||
mockGetClientWithToken.mockResolvedValue({
|
||||
mutate: mockMutate,
|
||||
query: mockQuery,
|
||||
});
|
||||
|
||||
// Мокаем _getUser для мастера
|
||||
vi.spyOn(ordersService, '_getUser').mockResolvedValue({
|
||||
customer: mockMaster,
|
||||
});
|
||||
|
||||
const result = await ordersService.updateOrder(mockVariables);
|
||||
|
||||
expect(result).toBe(mockMutationResult.data);
|
||||
expect(mockMutate).toHaveBeenCalledWith({
|
||||
mutation: GQL.UpdateOrderDocument,
|
||||
variables: {
|
||||
...mockVariables,
|
||||
data: {
|
||||
...mockVariables.data,
|
||||
order_number: undefined,
|
||||
},
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it('should successfully update order by client (cancelling)', async () => {
|
||||
const mockMutate = vi.fn().mockResolvedValue(mockMutationResult);
|
||||
const mockQuery = vi.fn().mockImplementation(({ query }) => {
|
||||
if (query === GQL.GetOrderDocument) {
|
||||
return Promise.resolve({
|
||||
data: {
|
||||
order: {
|
||||
...mockOrder,
|
||||
client: mockCustomer,
|
||||
slot: { ...mockSlot, master: mockMaster },
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
return Promise.resolve({ data: {} });
|
||||
});
|
||||
|
||||
mockGetClientWithToken.mockResolvedValue({
|
||||
mutate: mockMutate,
|
||||
query: mockQuery,
|
||||
});
|
||||
|
||||
// Мокаем _getUser для клиента
|
||||
vi.spyOn(ordersService, '_getUser').mockResolvedValue({
|
||||
customer: mockCustomer,
|
||||
});
|
||||
|
||||
const clientVariables = {
|
||||
...mockVariables,
|
||||
data: {
|
||||
state: GQL.Enum_Order_State.Cancelling,
|
||||
},
|
||||
};
|
||||
|
||||
const result = await ordersService.updateOrder(clientVariables);
|
||||
|
||||
expect(result).toBe(mockMutationResult.data);
|
||||
});
|
||||
|
||||
it('should throw error when order is not found', async () => {
|
||||
const mockQuery = vi.fn().mockResolvedValue({
|
||||
data: { order: null },
|
||||
});
|
||||
|
||||
mockGetClientWithToken.mockResolvedValue({
|
||||
mutate: vi.fn(),
|
||||
query: mockQuery,
|
||||
});
|
||||
|
||||
// Мокаем _getUser для мастера
|
||||
vi.spyOn(ordersService, '_getUser').mockResolvedValue({
|
||||
customer: mockMaster,
|
||||
});
|
||||
|
||||
const result = ordersService.updateOrder(mockVariables);
|
||||
|
||||
await expect(result).rejects.toThrow(ERRORS.MISSING_ORDER);
|
||||
});
|
||||
|
||||
it('should throw error when user has no permission', async () => {
|
||||
const unauthorizedUser = {
|
||||
...mockCustomer,
|
||||
documentId: 'unauthorized-user',
|
||||
};
|
||||
|
||||
const mockQuery = vi.fn().mockResolvedValue({
|
||||
data: {
|
||||
order: {
|
||||
...mockOrder,
|
||||
client: mockCustomer,
|
||||
slot: { ...mockSlot, master: mockMaster },
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
mockGetClientWithToken.mockResolvedValue({
|
||||
mutate: vi.fn(),
|
||||
query: mockQuery,
|
||||
});
|
||||
|
||||
// Мокаем _getUser для неавторизованного пользователя
|
||||
vi.spyOn(ordersService, '_getUser').mockResolvedValue({
|
||||
customer: unauthorizedUser,
|
||||
});
|
||||
|
||||
const result = ordersService.updateOrder(mockVariables);
|
||||
|
||||
await expect(result).rejects.toThrow(ERRORS.NO_PERMISSION);
|
||||
});
|
||||
|
||||
it('should throw error when client tries to change more than one field', async () => {
|
||||
const mockQuery = vi.fn().mockResolvedValue({
|
||||
data: {
|
||||
order: {
|
||||
...mockOrder,
|
||||
client: mockCustomer,
|
||||
slot: { ...mockSlot, master: mockMaster },
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
mockGetClientWithToken.mockResolvedValue({
|
||||
mutate: vi.fn(),
|
||||
query: mockQuery,
|
||||
});
|
||||
|
||||
// Мокаем _getUser для клиента
|
||||
vi.spyOn(ordersService, '_getUser').mockResolvedValue({
|
||||
customer: mockCustomer,
|
||||
});
|
||||
|
||||
const clientVariables = {
|
||||
...mockVariables,
|
||||
data: {
|
||||
datetime_start: now.add(1, 'hour').toISOString(),
|
||||
state: GQL.Enum_Order_State.Cancelling,
|
||||
},
|
||||
};
|
||||
|
||||
const result = ordersService.updateOrder(clientVariables);
|
||||
|
||||
await expect(result).rejects.toThrow(ERRORS.NO_PERMISSION);
|
||||
});
|
||||
|
||||
it('should throw error when client tries to change state to non-cancelling', async () => {
|
||||
const mockQuery = vi.fn().mockResolvedValue({
|
||||
data: {
|
||||
order: {
|
||||
...mockOrder,
|
||||
client: mockCustomer,
|
||||
slot: { ...mockSlot, master: mockMaster },
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
mockGetClientWithToken.mockResolvedValue({
|
||||
mutate: vi.fn(),
|
||||
query: mockQuery,
|
||||
});
|
||||
|
||||
// Мокаем _getUser для клиента
|
||||
vi.spyOn(ordersService, '_getUser').mockResolvedValue({
|
||||
customer: mockCustomer,
|
||||
});
|
||||
|
||||
const clientVariables = {
|
||||
...mockVariables,
|
||||
data: {
|
||||
state: GQL.Enum_Order_State.Approved,
|
||||
},
|
||||
};
|
||||
|
||||
const result = ordersService.updateOrder(clientVariables);
|
||||
|
||||
await expect(result).rejects.toThrow(ERRORS.NO_PERMISSION);
|
||||
});
|
||||
|
||||
it('should throw error when trying to change client', async () => {
|
||||
const mockQuery = vi.fn().mockResolvedValue({
|
||||
data: {
|
||||
order: {
|
||||
...mockOrder,
|
||||
slot: { ...mockSlot, master: mockMaster },
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
mockGetClientWithToken.mockResolvedValue({
|
||||
mutate: vi.fn(),
|
||||
query: mockQuery,
|
||||
});
|
||||
|
||||
// Мокаем _getUser для мастера
|
||||
vi.spyOn(ordersService, '_getUser').mockResolvedValue({
|
||||
customer: mockMaster,
|
||||
});
|
||||
|
||||
const variablesWithClient = {
|
||||
...mockVariables,
|
||||
data: {
|
||||
...mockVariables.data,
|
||||
client: 'new-client-id',
|
||||
},
|
||||
};
|
||||
|
||||
const result = ordersService.updateOrder(variablesWithClient);
|
||||
|
||||
await expect(result).rejects.toThrow(ERRORS.NO_PERMISSION);
|
||||
});
|
||||
|
||||
it('should throw error when trying to change services', async () => {
|
||||
const mockQuery = vi.fn().mockResolvedValue({
|
||||
data: {
|
||||
order: {
|
||||
...mockOrder,
|
||||
slot: { ...mockSlot, master: mockMaster },
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
mockGetClientWithToken.mockResolvedValue({
|
||||
mutate: vi.fn(),
|
||||
query: mockQuery,
|
||||
});
|
||||
|
||||
// Мокаем _getUser для мастера
|
||||
vi.spyOn(ordersService, '_getUser').mockResolvedValue({
|
||||
customer: mockMaster,
|
||||
});
|
||||
|
||||
const variablesWithServices = {
|
||||
...mockVariables,
|
||||
data: {
|
||||
...mockVariables.data,
|
||||
services: ['new-service-id'],
|
||||
},
|
||||
};
|
||||
|
||||
const result = ordersService.updateOrder(variablesWithServices);
|
||||
|
||||
await expect(result).rejects.toThrow(ERRORS.NO_PERMISSION);
|
||||
});
|
||||
|
||||
it('should throw error when trying to change slot', async () => {
|
||||
const mockQuery = vi.fn().mockResolvedValue({
|
||||
data: {
|
||||
order: {
|
||||
...mockOrder,
|
||||
slot: { ...mockSlot, master: mockMaster },
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
mockGetClientWithToken.mockResolvedValue({
|
||||
mutate: vi.fn(),
|
||||
query: mockQuery,
|
||||
});
|
||||
|
||||
// Мокаем _getUser для мастера
|
||||
vi.spyOn(ordersService, '_getUser').mockResolvedValue({
|
||||
customer: mockMaster,
|
||||
});
|
||||
|
||||
const variablesWithSlot = {
|
||||
...mockVariables,
|
||||
data: {
|
||||
...mockVariables.data,
|
||||
slot: 'new-slot-id',
|
||||
},
|
||||
};
|
||||
|
||||
const result = ordersService.updateOrder(variablesWithSlot);
|
||||
|
||||
await expect(result).rejects.toThrow(ERRORS.NO_PERMISSION);
|
||||
});
|
||||
|
||||
it('should throw error when order slot is not found', async () => {
|
||||
const mockQuery = vi.fn().mockResolvedValue({
|
||||
data: {
|
||||
order: {
|
||||
...mockOrder,
|
||||
client: mockCustomer,
|
||||
slot: null,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
mockGetClientWithToken.mockResolvedValue({
|
||||
mutate: vi.fn(),
|
||||
query: mockQuery,
|
||||
});
|
||||
|
||||
// Мокаем _getUser для клиента заказа
|
||||
vi.spyOn(ordersService, '_getUser').mockResolvedValue({
|
||||
customer: mockCustomer,
|
||||
});
|
||||
|
||||
const variablesWithSingleField = {
|
||||
...mockVariables,
|
||||
data: {
|
||||
state: GQL.Enum_Order_State.Cancelling,
|
||||
},
|
||||
};
|
||||
|
||||
const result = ordersService.updateOrder(variablesWithSingleField);
|
||||
|
||||
await expect(result).rejects.toThrow(ERRORS.NOT_FOUND_ORDER_SLOT);
|
||||
});
|
||||
|
||||
it('should throw error when trying to change completed order state', async () => {
|
||||
const completedOrder = {
|
||||
...mockOrder,
|
||||
state: GQL.Enum_Order_State.Completed,
|
||||
};
|
||||
|
||||
const mockQuery = vi.fn().mockResolvedValue({
|
||||
data: {
|
||||
order: completedOrder,
|
||||
},
|
||||
});
|
||||
|
||||
mockGetClientWithToken.mockResolvedValue({
|
||||
mutate: vi.fn(),
|
||||
query: mockQuery,
|
||||
});
|
||||
|
||||
// Мокаем _getUser для мастера
|
||||
vi.spyOn(ordersService, '_getUser').mockResolvedValue({
|
||||
customer: mockMaster,
|
||||
});
|
||||
|
||||
const result = ordersService.updateOrder(mockVariables);
|
||||
|
||||
await expect(result).rejects.toThrow(ERRORS.NO_CHANGE_STATE_COMPLETED);
|
||||
});
|
||||
|
||||
it('should throw error when time is invalid', async () => {
|
||||
const mockQuery = vi.fn().mockImplementation(({ query }) => {
|
||||
if (query === GQL.GetOrderDocument) {
|
||||
return Promise.resolve({
|
||||
data: {
|
||||
order: {
|
||||
...mockOrder,
|
||||
slot: { ...mockSlot, master: mockMaster },
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
return Promise.resolve({ data: {} });
|
||||
});
|
||||
|
||||
mockGetClientWithToken.mockResolvedValue({
|
||||
mutate: vi.fn(),
|
||||
query: mockQuery,
|
||||
});
|
||||
|
||||
// Мокаем _getUser для мастера
|
||||
vi.spyOn(ordersService, '_getUser').mockResolvedValue({
|
||||
customer: mockMaster,
|
||||
});
|
||||
|
||||
const variablesWithInvalidTime = {
|
||||
...mockVariables,
|
||||
data: {
|
||||
datetime_end: now.add(1, 'hour').toISOString(),
|
||||
datetime_start: now.add(2, 'hour').toISOString(), // конец раньше начала
|
||||
},
|
||||
};
|
||||
|
||||
const result = ordersService.updateOrder(variablesWithInvalidTime);
|
||||
|
||||
await expect(result).rejects.toThrow(ERRORS.INVALID_TIME);
|
||||
});
|
||||
|
||||
it('should throw error when time overlaps with other orders', async () => {
|
||||
const overlappingOrder = {
|
||||
...mockOrder,
|
||||
documentId: 'order-456',
|
||||
};
|
||||
|
||||
const mockQuery = vi.fn().mockImplementation(({ query }) => {
|
||||
if (query === GQL.GetOrderDocument) {
|
||||
return Promise.resolve({
|
||||
data: {
|
||||
order: {
|
||||
...mockOrder,
|
||||
slot: { ...mockSlot, master: mockMaster },
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
if (query === GQL.GetOrdersDocument) {
|
||||
return Promise.resolve({
|
||||
data: { orders: [overlappingOrder] },
|
||||
});
|
||||
}
|
||||
|
||||
return Promise.resolve({ data: {} });
|
||||
});
|
||||
|
||||
mockGetClientWithToken.mockResolvedValue({
|
||||
mutate: vi.fn(),
|
||||
query: mockQuery,
|
||||
});
|
||||
|
||||
// Мокаем _getUser для мастера
|
||||
vi.spyOn(ordersService, '_getUser').mockResolvedValue({
|
||||
customer: mockMaster,
|
||||
});
|
||||
|
||||
const result = ordersService.updateOrder(mockVariables);
|
||||
|
||||
await expect(result).rejects.toThrow(ERRORS.OVERLAPPING_TIME);
|
||||
});
|
||||
|
||||
it('should successfully complete order and set order number', async () => {
|
||||
const mockMutate = vi.fn().mockResolvedValue(mockMutationResult);
|
||||
const mockQuery = vi.fn().mockImplementation(({ query }) => {
|
||||
if (query === GQL.GetOrderDocument) {
|
||||
return Promise.resolve({
|
||||
data: {
|
||||
order: {
|
||||
...mockOrder,
|
||||
client: mockCustomer,
|
||||
slot: { ...mockSlot, master: mockMaster },
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
if (query === GQL.GetOrdersDocument) {
|
||||
return Promise.resolve({
|
||||
data: {
|
||||
orders: [
|
||||
{
|
||||
...mockOrder,
|
||||
order_number: 5,
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
return Promise.resolve({ data: {} });
|
||||
});
|
||||
|
||||
mockGetClientWithToken.mockResolvedValue({
|
||||
mutate: mockMutate,
|
||||
query: mockQuery,
|
||||
});
|
||||
|
||||
// Мокаем _getUser для мастера
|
||||
vi.spyOn(ordersService, '_getUser').mockResolvedValue({
|
||||
customer: mockMaster,
|
||||
});
|
||||
|
||||
const completeVariables = {
|
||||
...mockVariables,
|
||||
data: {
|
||||
state: GQL.Enum_Order_State.Completed,
|
||||
},
|
||||
};
|
||||
|
||||
const result = await ordersService.updateOrder(completeVariables);
|
||||
|
||||
expect(result).toBe(mockMutationResult.data);
|
||||
expect(mockMutate).toHaveBeenCalledWith({
|
||||
mutation: GQL.UpdateOrderDocument,
|
||||
variables: {
|
||||
...completeVariables,
|
||||
data: {
|
||||
...completeVariables.data,
|
||||
order_number: 6, // 5 + 1
|
||||
},
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it('should successfully complete order and set order number to 1 when no previous completed orders', async () => {
|
||||
const mockMutate = vi.fn().mockResolvedValue(mockMutationResult);
|
||||
const mockQuery = vi.fn().mockImplementation(({ query }) => {
|
||||
if (query === GQL.GetOrderDocument) {
|
||||
return Promise.resolve({
|
||||
data: {
|
||||
order: {
|
||||
...mockOrder,
|
||||
client: mockCustomer,
|
||||
slot: { ...mockSlot, master: mockMaster },
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
if (query === GQL.GetOrdersDocument) {
|
||||
return Promise.resolve({
|
||||
data: {
|
||||
orders: [], // нет других завершенных заказов
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
return Promise.resolve({ data: {} });
|
||||
});
|
||||
|
||||
mockGetClientWithToken.mockResolvedValue({
|
||||
mutate: mockMutate,
|
||||
query: mockQuery,
|
||||
});
|
||||
|
||||
// Мокаем _getUser для мастера
|
||||
vi.spyOn(ordersService, '_getUser').mockResolvedValue({
|
||||
customer: mockMaster,
|
||||
});
|
||||
|
||||
const completeVariables = {
|
||||
...mockVariables,
|
||||
data: {
|
||||
state: GQL.Enum_Order_State.Completed,
|
||||
},
|
||||
};
|
||||
|
||||
const result = await ordersService.updateOrder(completeVariables);
|
||||
|
||||
expect(result).toBe(mockMutationResult.data);
|
||||
expect(mockMutate).toHaveBeenCalledWith({
|
||||
mutation: GQL.UpdateOrderDocument,
|
||||
variables: {
|
||||
...completeVariables,
|
||||
data: {
|
||||
...completeVariables.data,
|
||||
order_number: undefined,
|
||||
},
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it('should throw error when trying to complete order before start time', async () => {
|
||||
const pastOrder = {
|
||||
...mockOrder,
|
||||
datetime_start: now.subtract(1, 'hour').toISOString(),
|
||||
};
|
||||
|
||||
const mockQuery = vi.fn().mockResolvedValue({
|
||||
data: {
|
||||
order: pastOrder,
|
||||
},
|
||||
});
|
||||
|
||||
mockGetClientWithToken.mockResolvedValue({
|
||||
mutate: vi.fn(),
|
||||
query: mockQuery,
|
||||
});
|
||||
|
||||
// Мокаем _getUser для мастера
|
||||
vi.spyOn(ordersService, '_getUser').mockResolvedValue({
|
||||
customer: mockMaster,
|
||||
});
|
||||
|
||||
const completeVariables = {
|
||||
...mockVariables,
|
||||
data: {
|
||||
state: GQL.Enum_Order_State.Completed,
|
||||
},
|
||||
};
|
||||
|
||||
const result = ordersService.updateOrder(completeVariables);
|
||||
|
||||
await expect(result).rejects.toThrow(ERRORS.CANNOT_COMPLETE_BEFORE_START);
|
||||
});
|
||||
|
||||
it('should return early when no datetime changes are provided', async () => {
|
||||
const mockMutate = vi.fn().mockResolvedValue(mockMutationResult);
|
||||
const mockQuery = vi.fn().mockResolvedValue({
|
||||
data: {
|
||||
order: {
|
||||
...mockOrder,
|
||||
slot: { ...mockSlot, master: mockMaster },
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
mockGetClientWithToken.mockResolvedValue({
|
||||
mutate: mockMutate,
|
||||
query: mockQuery,
|
||||
});
|
||||
|
||||
// Мокаем _getUser для мастера
|
||||
vi.spyOn(ordersService, '_getUser').mockResolvedValue({
|
||||
customer: mockMaster,
|
||||
});
|
||||
|
||||
const variablesWithoutTime = {
|
||||
...mockVariables,
|
||||
data: {
|
||||
state: GQL.Enum_Order_State.Approved,
|
||||
},
|
||||
};
|
||||
|
||||
const result = await ordersService.updateOrder(variablesWithoutTime);
|
||||
|
||||
expect(result).toBe(mockMutationResult.data);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@ -12,6 +12,7 @@ import { getMinutes, isBeforeNow } from '@repo/utils/datetime-format';
|
||||
import dayjs from 'dayjs';
|
||||
|
||||
export const ERRORS = {
|
||||
CANNOT_COMPLETE_BEFORE_START: 'Нельзя завершить запись до её наступления',
|
||||
INACTIVE_CLIENT: 'Клиент не активен',
|
||||
INACTIVE_MASTER: 'Мастер не активен',
|
||||
INVALID_MASTER: 'Некорректный мастер',
|
||||
@ -25,16 +26,21 @@ export const ERRORS = {
|
||||
MISSING_SLOT: 'Не указан слот',
|
||||
MISSING_START_TIME: 'Не указано время начала',
|
||||
MISSING_TIME: 'Не указано время',
|
||||
NO_CHANGE_STATE_COMPLETED: 'Нельзя изменить статус завершенного заказа',
|
||||
NO_MASTER_SELF_BOOK: 'Нельзя записать к самому себе',
|
||||
NO_ORDER_IN_PAST: 'Нельзя создать запись на время в прошлом',
|
||||
NO_ORDER_OUT_OF_SLOT: 'Время заказа выходит за пределы слота',
|
||||
NO_PERMISSION: 'Нет доступа',
|
||||
NOT_FOUND_CLIENT: 'Клиент не найден',
|
||||
NOT_FOUND_MASTER: 'Мастер не найден',
|
||||
NOT_FOUND_CLIENT: 'Клиент не найден',
|
||||
NOT_FOUND_MASTER: 'Мастер не найден',
|
||||
NOT_FOUND_ORDER: 'Заказ не найден',
|
||||
NOT_FOUND_ORDER_SLOT: 'Слот заказа не найден',
|
||||
OVERLAPPING_TIME: 'Время пересекается с другими заказами',
|
||||
SLOT_CLOSED: 'Слот закрыт',
|
||||
};
|
||||
|
||||
const DEFAULT_ORDERS_SORT = ['slot.datetime_start:desc', 'datetime_start:asc'];
|
||||
|
||||
export class OrdersService extends BaseService {
|
||||
async createOrder(variables: VariablesOf<typeof GQL.CreateOrderDocument>) {
|
||||
await this.checkBeforeCreate(variables);
|
||||
@ -97,7 +103,10 @@ export class OrdersService extends BaseService {
|
||||
|
||||
const result = await query({
|
||||
query: GQL.GetOrdersDocument,
|
||||
variables,
|
||||
variables: {
|
||||
sort: DEFAULT_ORDERS_SORT,
|
||||
...variables,
|
||||
},
|
||||
});
|
||||
|
||||
return result.data;
|
||||
@ -105,6 +114,7 @@ export class OrdersService extends BaseService {
|
||||
|
||||
async updateOrder(variables: VariablesOf<typeof GQL.UpdateOrderDocument>) {
|
||||
await this.checkUpdatePermission(variables);
|
||||
await this.checkBeforeUpdate(variables);
|
||||
|
||||
const { customer } = await this._getUser();
|
||||
|
||||
@ -137,9 +147,17 @@ export class OrdersService extends BaseService {
|
||||
|
||||
const { mutate } = await getClientWithToken();
|
||||
|
||||
const lastOrderNumber = await this.getLastOrderNumber(variables);
|
||||
|
||||
const mutationResult = await mutate({
|
||||
mutation: GQL.UpdateOrderDocument,
|
||||
variables,
|
||||
variables: {
|
||||
...variables,
|
||||
data: {
|
||||
...variables.data,
|
||||
order_number: lastOrderNumber ? lastOrderNumber + 1 : undefined,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const error = mutationResult.errors?.at(0);
|
||||
@ -268,6 +286,58 @@ export class OrdersService extends BaseService {
|
||||
}
|
||||
}
|
||||
|
||||
private async checkBeforeUpdate(variables: VariablesOf<typeof GQL.UpdateOrderDocument>) {
|
||||
if (variables.data.client || variables.data.services?.length || variables.data.slot) {
|
||||
throw new Error(ERRORS.NO_PERMISSION);
|
||||
}
|
||||
|
||||
const { order: existingOrder } = await this.getOrder({ documentId: variables.documentId });
|
||||
|
||||
if (!existingOrder) {
|
||||
throw new Error(ERRORS.NOT_FOUND_ORDER);
|
||||
}
|
||||
|
||||
if (!existingOrder.slot) {
|
||||
throw new Error(ERRORS.NOT_FOUND_ORDER_SLOT);
|
||||
}
|
||||
|
||||
if (existingOrder.state === GQL.Enum_Order_State.Completed && variables.data.state) {
|
||||
throw new Error(ERRORS.NO_CHANGE_STATE_COMPLETED);
|
||||
}
|
||||
|
||||
const { datetime_end, datetime_start } = variables.data;
|
||||
|
||||
if (!datetime_start || !datetime_end) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (new Date(datetime_end) <= new Date(datetime_start)) {
|
||||
throw new Error(ERRORS.INVALID_TIME);
|
||||
}
|
||||
|
||||
const slotId = existingOrder.slot.documentId;
|
||||
|
||||
const { orders: overlappingEntities } = await this.getOrders({
|
||||
filters: {
|
||||
datetime_end: { gt: datetime_start },
|
||||
datetime_start: { lt: datetime_end },
|
||||
documentId: { ne: variables.documentId },
|
||||
slot: {
|
||||
documentId: { eq: slotId },
|
||||
},
|
||||
state: {
|
||||
not: {
|
||||
eq: GQL.Enum_Order_State.Cancelled,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
if (overlappingEntities?.length) {
|
||||
throw new Error(ERRORS.OVERLAPPING_TIME);
|
||||
}
|
||||
}
|
||||
|
||||
private async checkUpdatePermission(variables: VariablesOf<typeof GQL.UpdateOrderDocument>) {
|
||||
const { customer } = await this._getUser();
|
||||
|
||||
@ -294,4 +364,53 @@ export class OrdersService extends BaseService {
|
||||
throw new Error(ERRORS.NO_PERMISSION);
|
||||
}
|
||||
}
|
||||
|
||||
private async getLastOrderNumber(variables: VariablesOf<typeof GQL.UpdateOrderDocument>) {
|
||||
const { datetime_end, datetime_start, state } = variables.data;
|
||||
|
||||
const { order: existingOrder } = await this.getOrder({ documentId: variables.documentId });
|
||||
|
||||
if (!existingOrder) {
|
||||
throw new Error(ERRORS.NOT_FOUND_ORDER);
|
||||
}
|
||||
|
||||
if (state !== GQL.Enum_Order_State.Completed || datetime_start || datetime_end) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
if (
|
||||
state === GQL.Enum_Order_State.Completed &&
|
||||
existingOrder?.datetime_start &&
|
||||
isBeforeNow(existingOrder?.datetime_start, 'minute')
|
||||
) {
|
||||
throw new Error(ERRORS.CANNOT_COMPLETE_BEFORE_START);
|
||||
}
|
||||
|
||||
let lastOrderNumber: number | undefined;
|
||||
|
||||
if (state === GQL.Enum_Order_State.Completed) {
|
||||
const clientId = existingOrder?.client?.documentId;
|
||||
|
||||
const {
|
||||
orders: [lastOrder],
|
||||
} = await this.getOrders({
|
||||
filters: {
|
||||
client: {
|
||||
documentId: { eq: clientId },
|
||||
},
|
||||
state: {
|
||||
eq: GQL.Enum_Order_State.Completed,
|
||||
},
|
||||
},
|
||||
pagination: {
|
||||
limit: 1,
|
||||
},
|
||||
sort: ['order_number:desc'],
|
||||
});
|
||||
|
||||
lastOrderNumber = lastOrder?.order_number || undefined;
|
||||
}
|
||||
|
||||
return lastOrderNumber;
|
||||
}
|
||||
}
|
||||
|
||||
@ -15,10 +15,10 @@ fragment OrderFields on Order {
|
||||
}
|
||||
}
|
||||
|
||||
query GetOrders($filters: OrderFiltersInput, $pagination: PaginationArg) {
|
||||
query GetOrders($filters: OrderFiltersInput, $pagination: PaginationArg, $sort: [String!]) {
|
||||
orders(
|
||||
filters: $filters
|
||||
sort: ["slot.datetime_start:desc", "datetime_start:asc"]
|
||||
sort: $sort
|
||||
pagination: $pagination
|
||||
) {
|
||||
...OrderFields
|
||||
|
||||
@ -665,29 +665,30 @@ export type UpdateCustomerMutationVariables = Exact<{
|
||||
|
||||
export type UpdateCustomerMutation = { __typename?: 'Mutation', updateCustomer?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined };
|
||||
|
||||
export type OrderFieldsFragment = { __typename?: 'Order', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Order_State | null | undefined, order_number?: number | null | undefined, services: Array<{ __typename?: 'Service', documentId: string, name?: string | null | undefined, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined>, client?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined, slot?: { __typename?: 'Slot', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Slot_State | null | undefined, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined };
|
||||
export type OrderFieldsFragment = { __typename?: 'Order', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Order_State | null | undefined, order_number?: number | null | undefined, services: Array<{ __typename?: 'Service', documentId: string, name: string, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined>, client?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined, slot?: { __typename?: 'Slot', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Slot_State | null | undefined, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined };
|
||||
|
||||
export type GetOrdersQueryVariables = Exact<{
|
||||
filters?: InputMaybe<OrderFiltersInput>;
|
||||
pagination?: InputMaybe<PaginationArg>;
|
||||
sort?: InputMaybe<Array<Scalars['String']['input']> | Scalars['String']['input']>;
|
||||
}>;
|
||||
|
||||
|
||||
export type GetOrdersQuery = { __typename?: 'Query', orders: Array<{ __typename?: 'Order', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Order_State | null | undefined, order_number?: number | null | undefined, services: Array<{ __typename?: 'Service', documentId: string, name?: string | null | undefined, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined>, client?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined, slot?: { __typename?: 'Slot', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Slot_State | null | undefined, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined } | null | undefined> };
|
||||
export type GetOrdersQuery = { __typename?: 'Query', orders: Array<{ __typename?: 'Order', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Order_State | null | undefined, order_number?: number | null | undefined, services: Array<{ __typename?: 'Service', documentId: string, name: string, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined>, client?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined, slot?: { __typename?: 'Slot', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Slot_State | null | undefined, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined } | null | undefined> };
|
||||
|
||||
export type GetOrderQueryVariables = Exact<{
|
||||
documentId: Scalars['ID']['input'];
|
||||
}>;
|
||||
|
||||
|
||||
export type GetOrderQuery = { __typename?: 'Query', order?: { __typename?: 'Order', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Order_State | null | undefined, order_number?: number | null | undefined, services: Array<{ __typename?: 'Service', documentId: string, name?: string | null | undefined, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined>, client?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined, slot?: { __typename?: 'Slot', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Slot_State | null | undefined, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined } | null | undefined };
|
||||
export type GetOrderQuery = { __typename?: 'Query', order?: { __typename?: 'Order', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Order_State | null | undefined, order_number?: number | null | undefined, services: Array<{ __typename?: 'Service', documentId: string, name: string, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined>, client?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined, slot?: { __typename?: 'Slot', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Slot_State | null | undefined, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined } | null | undefined };
|
||||
|
||||
export type CreateOrderMutationVariables = Exact<{
|
||||
input: OrderInput;
|
||||
}>;
|
||||
|
||||
|
||||
export type CreateOrderMutation = { __typename?: 'Mutation', createOrder?: { __typename?: 'Order', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Order_State | null | undefined, order_number?: number | null | undefined, services: Array<{ __typename?: 'Service', documentId: string, name?: string | null | undefined, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined>, client?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined, slot?: { __typename?: 'Slot', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Slot_State | null | undefined, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined } | null | undefined };
|
||||
export type CreateOrderMutation = { __typename?: 'Mutation', createOrder?: { __typename?: 'Order', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Order_State | null | undefined, order_number?: number | null | undefined, services: Array<{ __typename?: 'Service', documentId: string, name: string, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined>, client?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined, slot?: { __typename?: 'Slot', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Slot_State | null | undefined, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined } | null | undefined };
|
||||
|
||||
export type UpdateOrderMutationVariables = Exact<{
|
||||
documentId: Scalars['ID']['input'];
|
||||
@ -695,30 +696,30 @@ export type UpdateOrderMutationVariables = Exact<{
|
||||
}>;
|
||||
|
||||
|
||||
export type UpdateOrderMutation = { __typename?: 'Mutation', updateOrder?: { __typename?: 'Order', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Order_State | null | undefined, order_number?: number | null | undefined, services: Array<{ __typename?: 'Service', documentId: string, name?: string | null | undefined, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined>, client?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined, slot?: { __typename?: 'Slot', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Slot_State | null | undefined, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined } | null | undefined };
|
||||
export type UpdateOrderMutation = { __typename?: 'Mutation', updateOrder?: { __typename?: 'Order', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Order_State | null | undefined, order_number?: number | null | undefined, services: Array<{ __typename?: 'Service', documentId: string, name: string, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined>, client?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined, slot?: { __typename?: 'Slot', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Slot_State | null | undefined, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined } | null | undefined };
|
||||
|
||||
export type ServiceFieldsFragment = { __typename?: 'Service', documentId: string, name?: string | null | undefined, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined };
|
||||
export type ServiceFieldsFragment = { __typename?: 'Service', documentId: string, name: string, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined };
|
||||
|
||||
export type GetServicesQueryVariables = Exact<{
|
||||
filters?: InputMaybe<ServiceFiltersInput>;
|
||||
}>;
|
||||
|
||||
|
||||
export type GetServicesQuery = { __typename?: 'Query', services: Array<{ __typename?: 'Service', documentId: string, name?: string | null | undefined, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined> };
|
||||
export type GetServicesQuery = { __typename?: 'Query', services: Array<{ __typename?: 'Service', documentId: string, name: string, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined> };
|
||||
|
||||
export type GetServiceQueryVariables = Exact<{
|
||||
documentId: Scalars['ID']['input'];
|
||||
}>;
|
||||
|
||||
|
||||
export type GetServiceQuery = { __typename?: 'Query', service?: { __typename?: 'Service', documentId: string, name?: string | null | undefined, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined };
|
||||
export type GetServiceQuery = { __typename?: 'Query', service?: { __typename?: 'Service', documentId: string, name: string, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined };
|
||||
|
||||
export type CreateServiceMutationVariables = Exact<{
|
||||
data: ServiceInput;
|
||||
}>;
|
||||
|
||||
|
||||
export type CreateServiceMutation = { __typename?: 'Mutation', createService?: { __typename?: 'Service', documentId: string, name?: string | null | undefined, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined };
|
||||
export type CreateServiceMutation = { __typename?: 'Mutation', createService?: { __typename?: 'Service', documentId: string, name: string, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined };
|
||||
|
||||
export type UpdateServiceMutationVariables = Exact<{
|
||||
documentId: Scalars['ID']['input'];
|
||||
@ -726,7 +727,7 @@ export type UpdateServiceMutationVariables = Exact<{
|
||||
}>;
|
||||
|
||||
|
||||
export type UpdateServiceMutation = { __typename?: 'Mutation', updateService?: { __typename?: 'Service', documentId: string, name?: string | null | undefined, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined };
|
||||
export type UpdateServiceMutation = { __typename?: 'Mutation', updateService?: { __typename?: 'Service', documentId: string, name: string, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined };
|
||||
|
||||
export type SlotFieldsFragment = { __typename?: 'Slot', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Slot_State | null | undefined, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined };
|
||||
|
||||
@ -749,14 +750,14 @@ export type GetSlotsOrdersQueryVariables = Exact<{
|
||||
}>;
|
||||
|
||||
|
||||
export type GetSlotsOrdersQuery = { __typename?: 'Query', slots: Array<{ __typename?: 'Slot', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Slot_State | null | undefined, orders: Array<{ __typename?: 'Order', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Order_State | null | undefined, order_number?: number | null | undefined, services: Array<{ __typename?: 'Service', documentId: string, name?: string | null | undefined, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined>, client?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined, slot?: { __typename?: 'Slot', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Slot_State | null | undefined, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined } | null | undefined>, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined> };
|
||||
export type GetSlotsOrdersQuery = { __typename?: 'Query', slots: Array<{ __typename?: 'Slot', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Slot_State | null | undefined, orders: Array<{ __typename?: 'Order', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Order_State | null | undefined, order_number?: number | null | undefined, services: Array<{ __typename?: 'Service', documentId: string, name: string, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined>, client?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined, slot?: { __typename?: 'Slot', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Slot_State | null | undefined, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined } | null | undefined>, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined> };
|
||||
|
||||
export type GetSlotQueryVariables = Exact<{
|
||||
documentId: Scalars['ID']['input'];
|
||||
}>;
|
||||
|
||||
|
||||
export type GetSlotQuery = { __typename?: 'Query', slot?: { __typename?: 'Slot', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Slot_State | null | undefined, orders: Array<{ __typename?: 'Order', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Order_State | null | undefined, order_number?: number | null | undefined, services: Array<{ __typename?: 'Service', documentId: string, name?: string | null | undefined, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined>, client?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined, slot?: { __typename?: 'Slot', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Slot_State | null | undefined, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined } | null | undefined>, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined };
|
||||
export type GetSlotQuery = { __typename?: 'Query', slot?: { __typename?: 'Slot', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Slot_State | null | undefined, orders: Array<{ __typename?: 'Order', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Order_State | null | undefined, order_number?: number | null | undefined, services: Array<{ __typename?: 'Service', documentId: string, name: string, active?: boolean | null | undefined, duration: string, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined>, client?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined, slot?: { __typename?: 'Slot', documentId: string, datetime_start: string, datetime_end: string, state?: Enum_Slot_State | null | undefined, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined } | null | undefined>, master?: { __typename?: 'Customer', active?: boolean | null | undefined, documentId: string, name: string, phone: string, photoUrl?: string | null | undefined, role: Enum_Customer_Role, telegramId?: number | null | undefined } | null | undefined } | null | undefined };
|
||||
|
||||
export type UpdateSlotMutationVariables = Exact<{
|
||||
documentId: Scalars['ID']['input'];
|
||||
@ -784,7 +785,7 @@ export const GetCustomerDocument = {"kind":"Document","definitions":[{"kind":"Op
|
||||
export const GetMastersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetMasters"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"phone"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"telegramId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Long"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"documentId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"customers"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filters"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"or"},"value":{"kind":"ListValue","values":[{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"phone"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"eq"},"value":{"kind":"Variable","name":{"kind":"Name","value":"phone"}}}]}}]},{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"telegramId"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"eq"},"value":{"kind":"Variable","name":{"kind":"Name","value":"telegramId"}}}]}}]},{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"documentId"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"eq"},"value":{"kind":"Variable","name":{"kind":"Name","value":"documentId"}}}]}}]}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"masters"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CustomerFields"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CustomerFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Customer"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"active"}},{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"phone"}},{"kind":"Field","name":{"kind":"Name","value":"photoUrl"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"telegramId"}}]}}]} as unknown as DocumentNode<GetMastersQuery, GetMastersQueryVariables>;
|
||||
export const GetClientsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetClients"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"phone"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"telegramId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Long"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"customers"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filters"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"or"},"value":{"kind":"ListValue","values":[{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"phone"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"eq"},"value":{"kind":"Variable","name":{"kind":"Name","value":"phone"}}}]}}]},{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"telegramId"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"eq"},"value":{"kind":"Variable","name":{"kind":"Name","value":"telegramId"}}}]}}]}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"clients"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CustomerFields"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CustomerFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Customer"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"active"}},{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"phone"}},{"kind":"Field","name":{"kind":"Name","value":"photoUrl"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"telegramId"}}]}}]} as unknown as DocumentNode<GetClientsQuery, GetClientsQueryVariables>;
|
||||
export const UpdateCustomerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateCustomer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"documentId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"data"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"CustomerInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateCustomer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"documentId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"documentId"}}},{"kind":"Argument","name":{"kind":"Name","value":"data"},"value":{"kind":"Variable","name":{"kind":"Name","value":"data"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CustomerFields"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CustomerFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Customer"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"active"}},{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"phone"}},{"kind":"Field","name":{"kind":"Name","value":"photoUrl"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"telegramId"}}]}}]} as unknown as DocumentNode<UpdateCustomerMutation, UpdateCustomerMutationVariables>;
|
||||
export const GetOrdersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetOrders"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"filters"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"OrderFiltersInput"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"pagination"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"PaginationArg"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"orders"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filters"},"value":{"kind":"Variable","name":{"kind":"Name","value":"filters"}}},{"kind":"Argument","name":{"kind":"Name","value":"sort"},"value":{"kind":"ListValue","values":[{"kind":"StringValue","value":"slot.datetime_start:desc","block":false},{"kind":"StringValue","value":"datetime_start:asc","block":false}]}},{"kind":"Argument","name":{"kind":"Name","value":"pagination"},"value":{"kind":"Variable","name":{"kind":"Name","value":"pagination"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"OrderFields"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CustomerFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Customer"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"active"}},{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"phone"}},{"kind":"Field","name":{"kind":"Name","value":"photoUrl"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"telegramId"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ServiceFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Service"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"active"}},{"kind":"Field","name":{"kind":"Name","value":"duration"}},{"kind":"Field","name":{"kind":"Name","value":"master"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CustomerFields"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"SlotFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Slot"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"datetime_start"}},{"kind":"Field","name":{"kind":"Name","value":"datetime_end"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"master"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CustomerFields"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"OrderFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Order"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"datetime_start"}},{"kind":"Field","name":{"kind":"Name","value":"datetime_end"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"order_number"}},{"kind":"Field","name":{"kind":"Name","value":"services"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ServiceFields"}}]}},{"kind":"Field","name":{"kind":"Name","value":"client"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CustomerFields"}}]}},{"kind":"Field","name":{"kind":"Name","value":"slot"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"SlotFields"}}]}}]}}]} as unknown as DocumentNode<GetOrdersQuery, GetOrdersQueryVariables>;
|
||||
export const GetOrdersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetOrders"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"filters"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"OrderFiltersInput"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"pagination"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"PaginationArg"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"sort"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"orders"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filters"},"value":{"kind":"Variable","name":{"kind":"Name","value":"filters"}}},{"kind":"Argument","name":{"kind":"Name","value":"sort"},"value":{"kind":"Variable","name":{"kind":"Name","value":"sort"}}},{"kind":"Argument","name":{"kind":"Name","value":"pagination"},"value":{"kind":"Variable","name":{"kind":"Name","value":"pagination"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"OrderFields"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CustomerFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Customer"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"active"}},{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"phone"}},{"kind":"Field","name":{"kind":"Name","value":"photoUrl"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"telegramId"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ServiceFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Service"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"active"}},{"kind":"Field","name":{"kind":"Name","value":"duration"}},{"kind":"Field","name":{"kind":"Name","value":"master"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CustomerFields"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"SlotFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Slot"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"datetime_start"}},{"kind":"Field","name":{"kind":"Name","value":"datetime_end"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"master"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CustomerFields"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"OrderFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Order"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"datetime_start"}},{"kind":"Field","name":{"kind":"Name","value":"datetime_end"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"order_number"}},{"kind":"Field","name":{"kind":"Name","value":"services"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ServiceFields"}}]}},{"kind":"Field","name":{"kind":"Name","value":"client"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CustomerFields"}}]}},{"kind":"Field","name":{"kind":"Name","value":"slot"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"SlotFields"}}]}}]}}]} as unknown as DocumentNode<GetOrdersQuery, GetOrdersQueryVariables>;
|
||||
export const GetOrderDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetOrder"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"documentId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"order"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"documentId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"documentId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"OrderFields"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CustomerFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Customer"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"active"}},{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"phone"}},{"kind":"Field","name":{"kind":"Name","value":"photoUrl"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"telegramId"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ServiceFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Service"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"active"}},{"kind":"Field","name":{"kind":"Name","value":"duration"}},{"kind":"Field","name":{"kind":"Name","value":"master"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CustomerFields"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"SlotFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Slot"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"datetime_start"}},{"kind":"Field","name":{"kind":"Name","value":"datetime_end"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"master"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CustomerFields"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"OrderFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Order"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"datetime_start"}},{"kind":"Field","name":{"kind":"Name","value":"datetime_end"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"order_number"}},{"kind":"Field","name":{"kind":"Name","value":"services"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ServiceFields"}}]}},{"kind":"Field","name":{"kind":"Name","value":"client"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CustomerFields"}}]}},{"kind":"Field","name":{"kind":"Name","value":"slot"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"SlotFields"}}]}}]}}]} as unknown as DocumentNode<GetOrderQuery, GetOrderQueryVariables>;
|
||||
export const CreateOrderDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateOrder"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"OrderInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createOrder"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"data"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"OrderFields"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CustomerFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Customer"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"active"}},{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"phone"}},{"kind":"Field","name":{"kind":"Name","value":"photoUrl"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"telegramId"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ServiceFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Service"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"active"}},{"kind":"Field","name":{"kind":"Name","value":"duration"}},{"kind":"Field","name":{"kind":"Name","value":"master"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CustomerFields"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"SlotFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Slot"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"datetime_start"}},{"kind":"Field","name":{"kind":"Name","value":"datetime_end"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"master"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CustomerFields"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"OrderFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Order"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"datetime_start"}},{"kind":"Field","name":{"kind":"Name","value":"datetime_end"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"order_number"}},{"kind":"Field","name":{"kind":"Name","value":"services"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ServiceFields"}}]}},{"kind":"Field","name":{"kind":"Name","value":"client"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CustomerFields"}}]}},{"kind":"Field","name":{"kind":"Name","value":"slot"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"SlotFields"}}]}}]}}]} as unknown as DocumentNode<CreateOrderMutation, CreateOrderMutationVariables>;
|
||||
export const UpdateOrderDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateOrder"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"documentId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"data"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"OrderInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateOrder"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"documentId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"documentId"}}},{"kind":"Argument","name":{"kind":"Name","value":"data"},"value":{"kind":"Variable","name":{"kind":"Name","value":"data"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"OrderFields"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CustomerFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Customer"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"active"}},{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"phone"}},{"kind":"Field","name":{"kind":"Name","value":"photoUrl"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"telegramId"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ServiceFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Service"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"active"}},{"kind":"Field","name":{"kind":"Name","value":"duration"}},{"kind":"Field","name":{"kind":"Name","value":"master"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CustomerFields"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"SlotFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Slot"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"datetime_start"}},{"kind":"Field","name":{"kind":"Name","value":"datetime_end"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"master"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CustomerFields"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"OrderFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Order"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"documentId"}},{"kind":"Field","name":{"kind":"Name","value":"datetime_start"}},{"kind":"Field","name":{"kind":"Name","value":"datetime_end"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"order_number"}},{"kind":"Field","name":{"kind":"Name","value":"services"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ServiceFields"}}]}},{"kind":"Field","name":{"kind":"Name","value":"client"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CustomerFields"}}]}},{"kind":"Field","name":{"kind":"Name","value":"slot"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"SlotFields"}}]}}]}}]} as unknown as DocumentNode<UpdateOrderMutation, UpdateOrderMutationVariables>;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user