feat: deal product services
This commit is contained in:
		@@ -1,37 +1,53 @@
 | 
			
		||||
import {ContextModalProps} from "@mantine/modals";
 | 
			
		||||
import BaseFormModal, {CreateEditFormProps} from "../../ClientsPage/modals/BaseFormModal/BaseFormModal.tsx";
 | 
			
		||||
import {DealProductSchema} from "../../../client";
 | 
			
		||||
import {DealProductSchema, DealProductServiceSchema} from "../../../client";
 | 
			
		||||
import {useForm} from "@mantine/form";
 | 
			
		||||
import {NumberInput} from "@mantine/core";
 | 
			
		||||
import {Fieldset, NumberInput} from "@mantine/core";
 | 
			
		||||
import ProductSelect from "../../../components/ProductSelect/ProductSelect.tsx";
 | 
			
		||||
import DealProductServiceTable from "../components/DealProductsTable/DealProductServiceTable.tsx";
 | 
			
		||||
import {omit} from "lodash";
 | 
			
		||||
import {BaseFormInputProps} from "../../../types/utils.ts";
 | 
			
		||||
 | 
			
		||||
type RestProps = {
 | 
			
		||||
    clientId: number
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type Props = CreateEditFormProps<Partial<DealProductSchema>> & RestProps;
 | 
			
		||||
type Props = CreateEditFormProps<DealProductSchema> & RestProps;
 | 
			
		||||
const AddDealProductModal = ({
 | 
			
		||||
                                 context,
 | 
			
		||||
                                 id,
 | 
			
		||||
                                 innerProps
 | 
			
		||||
                             }: ContextModalProps<Props>) => {
 | 
			
		||||
    const isEditing = 'element' in innerProps;
 | 
			
		||||
    const restProps = omit(innerProps, ['clientId']);
 | 
			
		||||
 | 
			
		||||
    const validateServices = (services?: DealProductServiceSchema[]) => {
 | 
			
		||||
        if (!services || services.length == 0) return null;
 | 
			
		||||
        console.log("validating...");
 | 
			
		||||
        console.log( services.filter(service => service.service === undefined))
 | 
			
		||||
        return services.find(service => service.service === undefined) ? "Удалите пустые услуги" : null;
 | 
			
		||||
    }
 | 
			
		||||
    const form = useForm<Partial<DealProductSchema>>({
 | 
			
		||||
        initialValues: {
 | 
			
		||||
        initialValues: isEditing ? innerProps.element : {
 | 
			
		||||
            product: undefined,
 | 
			
		||||
            quantity: 0
 | 
			
		||||
            services: [],
 | 
			
		||||
            quantity: 1
 | 
			
		||||
        },
 | 
			
		||||
        validate: {
 | 
			
		||||
            product: (product?: DealProductSchema['product']) => product !== undefined ? null : "Необходимо выбрать товар",
 | 
			
		||||
            quantity: (quantity?: number) => (quantity && quantity > 0) ? null : "Количество должно быть больше 0"
 | 
			
		||||
            quantity: (quantity?: number) => (quantity && quantity > 0) ? null : "Количество должно быть больше 0",
 | 
			
		||||
            services: validateServices
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    const onClose = () => {
 | 
			
		||||
        context.closeContextModal(id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    console.log(form.values)
 | 
			
		||||
    return (
 | 
			
		||||
 | 
			
		||||
        <BaseFormModal
 | 
			
		||||
            {...innerProps}
 | 
			
		||||
            {...restProps as CreateEditFormProps<DealProductSchema>}
 | 
			
		||||
            form={form}
 | 
			
		||||
            closeOnSubmit
 | 
			
		||||
            onClose={onClose}>
 | 
			
		||||
@@ -49,10 +65,19 @@ const AddDealProductModal = ({
 | 
			
		||||
                        min={1}
 | 
			
		||||
                        {...form.getInputProps('quantity')}
 | 
			
		||||
                    />
 | 
			
		||||
                    <Fieldset legend={'Услуги'}>
 | 
			
		||||
                        <DealProductServiceTable
 | 
			
		||||
                            quantity={form.values.quantity || 1}
 | 
			
		||||
                            {...form.getInputProps('services') as
 | 
			
		||||
                                BaseFormInputProps<DealProductServiceSchema[]>}
 | 
			
		||||
                        />
 | 
			
		||||
                    </Fieldset>
 | 
			
		||||
 | 
			
		||||
                </>
 | 
			
		||||
 | 
			
		||||
            </BaseFormModal.Body>
 | 
			
		||||
        </BaseFormModal>
 | 
			
		||||
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user