import {useMutation} from "@apollo/client"; import { Drawer, DrawerBody, DrawerCloseButton, DrawerContent, DrawerHeader, DrawerOverlay, Modal, ModalBody, ModalCloseButton, ModalContent, ModalOverlay, Stack, useToast } from "@chakra-ui/react"; import React, {useState} from "react"; import AddEditForm from "./AddEditForm"; import {getSinglePrimaryKey} from "./CustomeTableUtils"; import {addTableRecord, updateTableByPrimaryKey} from "../utils/GenericQueries"; import {AddEditDisplayType} from "../intefaces/interfaces"; import {underScoreToCapitalize} from "../utils/TransformText"; function CustomEditModal(props: any) { const toast = useToast() const { title, open, tablename, col, isUpdate, isModal, panels, addEditDisplayType = 1, recordsDisplayType = 1 } = props const [formdata, setFormData] = useState(props.formdata); const [isSaving, setIsSaving] = useState(false); const updatebyPk = updateTableByPrimaryKey(tablename, col) const [updateByPrimaryKey] = useMutation(updatebyPk); const [addRecord] = useMutation(addTableRecord(tablename, col)); const isFieldRequired = (field: string) => { const item = col?.find((item: any) => item.name === field); return item?.isRequired; } function save() { if (isSaving) { return; } let requiredFields: string[] = [] Object.entries(formdata)?.forEach(([property, value]) => { if (isFieldRequired(property) && !value) { requiredFields.push(underScoreToCapitalize(underScoreToCapitalize(property))) } }); const requiredFieldsLength = requiredFields.length if (requiredFieldsLength > 0) { toast({ title: "Validation Error", description: `${requiredFields.join(", ")} ${requiredFieldsLength === 1 ? 'field is' : 'fields are'} required`, status: "error", duration: 9000, isClosable: true }); return; } setIsSaving(true) if (isUpdate) { console.log("isUpdate ", formdata); updateByPrimaryKey({ variables: formdata }).then(res => { setIsSaving(false) props.refetch(); }).catch(e => { toast({ title: "Error", description: e.message, status: "error", duration: 9000, isClosable: true }) setIsSaving(false) console.log("error ", e) console.log("query ", updatebyPk) }) } else { //remove primary key let singlePrimaryKeyCol = getSinglePrimaryKey(col); delete formdata[singlePrimaryKeyCol]; //ADD RECORD addRecord({ variables: { object: formdata } }).then(r => { setIsSaving(false) props.refetch(); }).catch(e => { setIsSaving(false) console.log("error ", e) toast({ title: "Error", description: e.message, status: "error", duration: 9000, isClosable: true }) }) } } return ( {addEditDisplayType == AddEditDisplayType.Modal && { props.refetch() }} /> } {addEditDisplayType == AddEditDisplayType.Drawer && { console.log("close") }} > { props.close() }} /> {title} { props.refetch() }} /> } {addEditDisplayType == AddEditDisplayType.Simple && { props.refetch() }} /> } ) } export default CustomEditModal