diff --git a/src/client/index.ts b/src/client/index.ts index 1bb8ce0..5029cf8 100644 --- a/src/client/index.ts +++ b/src/client/index.ts @@ -70,8 +70,12 @@ export type { DealUpdateGeneralInfoRequest } from './models/DealUpdateGeneralInf export type { DealUpdateGeneralInfoResponse } from './models/DealUpdateGeneralInfoResponse'; export type { DealUpdateProductQuantityRequest } from './models/DealUpdateProductQuantityRequest'; export type { DealUpdateProductQuantityResponse } from './models/DealUpdateProductQuantityResponse'; +export type { DealUpdateProductRequest } from './models/DealUpdateProductRequest'; +export type { DealUpdateProductResponse } from './models/DealUpdateProductResponse'; export type { DealUpdateServiceQuantityRequest } from './models/DealUpdateServiceQuantityRequest'; export type { DealUpdateServiceQuantityResponse } from './models/DealUpdateServiceQuantityResponse'; +export type { DealUpdateServiceRequest } from './models/DealUpdateServiceRequest'; +export type { DealUpdateServiceResponse } from './models/DealUpdateServiceResponse'; export type { GetAllBarcodeTemplateAttributesResponse } from './models/GetAllBarcodeTemplateAttributesResponse'; export type { GetAllBarcodeTemplateSizesResponse } from './models/GetAllBarcodeTemplateSizesResponse'; export type { GetAllBarcodeTemplatesResponse } from './models/GetAllBarcodeTemplatesResponse'; diff --git a/src/client/models/DealAddServiceRequest.ts b/src/client/models/DealAddServiceRequest.ts index c580abb..2d985c2 100644 --- a/src/client/models/DealAddServiceRequest.ts +++ b/src/client/models/DealAddServiceRequest.ts @@ -6,5 +6,6 @@ export type DealAddServiceRequest = { dealId: number; serviceId: number; quantity: number; + price: number; }; diff --git a/src/client/models/DealUpdateProductRequest.ts b/src/client/models/DealUpdateProductRequest.ts new file mode 100644 index 0000000..2f69f28 --- /dev/null +++ b/src/client/models/DealUpdateProductRequest.ts @@ -0,0 +1,10 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { DealProductSchema } from './DealProductSchema'; +export type DealUpdateProductRequest = { + dealId: number; + product: DealProductSchema; +}; + diff --git a/src/client/models/DealUpdateProductResponse.ts b/src/client/models/DealUpdateProductResponse.ts new file mode 100644 index 0000000..b71cfcb --- /dev/null +++ b/src/client/models/DealUpdateProductResponse.ts @@ -0,0 +1,9 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +export type DealUpdateProductResponse = { + ok: boolean; + message: string; +}; + diff --git a/src/client/models/DealUpdateServiceRequest.ts b/src/client/models/DealUpdateServiceRequest.ts new file mode 100644 index 0000000..7d4c4eb --- /dev/null +++ b/src/client/models/DealUpdateServiceRequest.ts @@ -0,0 +1,10 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { DealServiceSchema } from './DealServiceSchema'; +export type DealUpdateServiceRequest = { + dealId: number; + service: DealServiceSchema; +}; + diff --git a/src/client/models/DealUpdateServiceResponse.ts b/src/client/models/DealUpdateServiceResponse.ts new file mode 100644 index 0000000..21dcbdf --- /dev/null +++ b/src/client/models/DealUpdateServiceResponse.ts @@ -0,0 +1,9 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +export type DealUpdateServiceResponse = { + ok: boolean; + message: string; +}; + diff --git a/src/client/services/DealService.ts b/src/client/services/DealService.ts index 6febd3f..1c149e4 100644 --- a/src/client/services/DealService.ts +++ b/src/client/services/DealService.ts @@ -31,8 +31,12 @@ import type { DealUpdateGeneralInfoRequest } from '../models/DealUpdateGeneralIn import type { DealUpdateGeneralInfoResponse } from '../models/DealUpdateGeneralInfoResponse'; import type { DealUpdateProductQuantityRequest } from '../models/DealUpdateProductQuantityRequest'; import type { DealUpdateProductQuantityResponse } from '../models/DealUpdateProductQuantityResponse'; +import type { DealUpdateProductRequest } from '../models/DealUpdateProductRequest'; +import type { DealUpdateProductResponse } from '../models/DealUpdateProductResponse'; import type { DealUpdateServiceQuantityRequest } from '../models/DealUpdateServiceQuantityRequest'; import type { DealUpdateServiceQuantityResponse } from '../models/DealUpdateServiceQuantityResponse'; +import type { DealUpdateServiceRequest } from '../models/DealUpdateServiceRequest'; +import type { DealUpdateServiceResponse } from '../models/DealUpdateServiceResponse'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; import { request as __request } from '../core/request'; @@ -241,7 +245,7 @@ export class DealService { }); } /** - * Services Update + * Services Update Quantity * @returns DealUpdateServiceQuantityResponse Successful Response * @throws ApiError */ @@ -260,6 +264,26 @@ export class DealService { }, }); } + /** + * Services Update + * @returns DealUpdateServiceResponse Successful Response + * @throws ApiError + */ + public static updateDealService({ + requestBody, + }: { + requestBody: DealUpdateServiceRequest, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/deal/services/update', + body: requestBody, + mediaType: 'application/json', + errors: { + 422: `Validation Error`, + }, + }); + } /** * Services Delete * @returns DealDeleteServiceResponse Successful Response @@ -380,4 +404,24 @@ export class DealService { }, }); } + /** + * Products Update + * @returns DealUpdateProductResponse Successful Response + * @throws ApiError + */ + public static updateDealProduct({ + requestBody, + }: { + requestBody: DealUpdateProductRequest, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/deal/product/update', + body: requestBody, + mediaType: 'application/json', + errors: { + 422: `Validation Error`, + }, + }); + } } diff --git a/src/components/Dnd/DealSummaryCard/DealSummaryCard.tsx b/src/components/Dnd/DealSummaryCard/DealSummaryCard.tsx index 253e573..e3486a7 100644 --- a/src/components/Dnd/DealSummaryCard/DealSummaryCard.tsx +++ b/src/components/Dnd/DealSummaryCard/DealSummaryCard.tsx @@ -24,6 +24,8 @@ const DealSummaryCard: FC = ({dealSummary}) => { const currentDate = new Date(); const diff = deadlineDate.getTime() - currentDate.getTime(); const diffDays = Math.ceil(diff / (1000 * 3600 * 24)); + if (diffDays < 0) + return 'grey.8'; // for past deadlines if (diffDays === 1) { return 'yellow.8'; } diff --git a/src/components/ObjectSelect/ObjectSelect.tsx b/src/components/ObjectSelect/ObjectSelect.tsx index bd5aaca..d1013e9 100644 --- a/src/components/ObjectSelect/ObjectSelect.tsx +++ b/src/components/ObjectSelect/ObjectSelect.tsx @@ -1,7 +1,7 @@ import {Select, SelectProps} from "@mantine/core"; import {useEffect, useMemo, useState} from "react"; import {ObjectWithNameAndId} from "../../types/utils.ts"; -import {groupBy} from "lodash"; +import {groupBy, omit} from "lodash"; export type SelectObjectType = T; @@ -16,6 +16,7 @@ type RestProps = { onChange: (value: SelectObjectType) => void; data: SelectObjectType[]; groupBy?: (item: SelectObjectType) => string; + filterBy?: (item: SelectObjectType) => boolean; } export type ObjectSelectProps = @@ -30,8 +31,10 @@ const ObjectSelect = (props: ObjectSelectProps< const value = isControlled ? props.value : internalValue; const data = useMemo(() => { + const propsData = props.filterBy ? props.data.filter(props.filterBy) : props.data; if (props.groupBy) { - const groupedData = groupBy(props.data, props.groupBy); + + const groupedData = groupBy(propsData, props.groupBy); return Object.entries(groupedData).map(([group, items]) => ({ group, items: items.map(item => ({ @@ -40,7 +43,7 @@ const ObjectSelect = (props: ObjectSelectProps< })) })); } else { - return props.data.map(item => ({ + return propsData.map(item => ({ label: item.name, value: item.id.toString() })); @@ -62,10 +65,10 @@ const ObjectSelect = (props: ObjectSelectProps< if (isControlled || !internalValue) return; props.onChange(internalValue); }, [internalValue]); - + const restProps = omit(props, ['filterBy', 'groupBy']); return (