import { Box, Button, Dialog, IconButton, Typography } from "@mui/material" import { enqueueSnackbar } from "notistack" import CloseSmallIcon from "@root/components/icons/CloseSmallIcon" import { closeDocumentsDialog, setDocument, useUserStore, } from "@root/stores/user" import DocumentUploadItem from "./DocumentUploadItem" import DocumentItem from "./DocumentItem" import { verify } from "../helper" import { VerificationStatus } from "@root/model/account" import { sendDocuments, updateDocuments } from "@root/api/verification" import { readFile } from "@root/utils/readFile" import { deleteEmptyKeys } from "@root/utils/deleteEmptyKeys" import { useState } from "react" import { theme } from "@root/utils/theme" const dialogContainerStyle = { height: "100%", overflowY: "scroll", "::-webkit-scrollbar": { display: "none", }, } export default function NkoDocumentsDialog() { const isOpen = useUserStore((state) => state.isDocumentsDialogOpen) const verificationStatus = useUserStore((state) => state.verificationStatus) const documents = useUserStore((state) => state.documents) const documentsUrl = useUserStore((state) => state.documentsUrl) const userId = useUserStore((state) => state.userId) ?? "" const sendUploadedDocuments = async () => { if ( documents["ИНН"].file && documents["Устав"].file && documents["Свидетельство о регистрации НКО"].file && !documentsUrl["ИНН"] && !documentsUrl["Устав"] && !documentsUrl["Свидетельство о регистрации НКО"] ) { closeDocumentsDialog() //Пользователь заполнил все поля и на беке пусто const inn = await readFile(documents["ИНН"].file, "binary") const rule = await readFile(documents["Устав"].file, "binary") const certificate = await readFile( documents["Свидетельство о регистрации НКО"].file, "binary" ) const [_, sendDocumentsError] = await sendDocuments({ status: "nko", inn, rule, certificate, }) if (sendDocumentsError) { enqueueSnackbar(sendDocumentsError) return } if (_ === "OK") { enqueueSnackbar("Информация доставлена") } setDocument("ИНН", null) setDocument("Устав", null) setDocument("Свидетельство о регистрации НКО", null) await verify(userId) } else { //Пользователь заполнил не все, или на беке что-то есть if ((documents["ИНН"].file || documents["Устав"].file || documents["Свидетельство о регистрации НКО"].file) && (documentsUrl["ИНН"] || documentsUrl["Устав"] || documentsUrl["Свидетельство о регистрации НКО"])) { //минимум 1 поле заполнено на фронте и минимум 1 поле на беке записано closeDocumentsDialog() const inn = documents["ИНН"].file ? await readFile(documents["ИНН"].file, "binary") : undefined const rule = documents["Устав"].file ? await readFile(documents["Устав"].file, "binary") : undefined const certificate = documents["Свидетельство о регистрации НКО"].file ? await readFile( documents["Свидетельство о регистрации НКО"].file, "binary" ) : undefined const [_, updateDocumentsError] = await updateDocuments( deleteEmptyKeys({ status: "org", inn, rule, certificate, }) ) if (updateDocumentsError) { enqueueSnackbar(updateDocumentsError) return } if (_ === "OK") { enqueueSnackbar("Информация доставлена") } setDocument("ИНН", null) setDocument("Устав", null) setDocument("Свидетельство о регистрации НКО", null) await verify(userId) } } } const disbutt = () => { if (documents["ИНН"].file && documents["Устав"].file && documents["Свидетельство о регистрации НКО"].file && !documentsUrl["ИНН"] && !documentsUrl["Устав"] && !documentsUrl["Свидетельство о регистрации НКО"]) { //post //все поля заполнены и на беке пусто return false } else {//patch if (documents["ИНН"].file || documents["Устав"].file || documents["Свидетельство о регистрации НКО"].file ) { //минимум одно поле заполнено return false } return true } } const documentElements = verificationStatus === VerificationStatus.VERIFICATED ? ( <> ) : ( <> setDocument( "Свидетельство о регистрации НКО", e.target?.files?.[0] || null ) } /> setDocument("ИНН", e.target?.files?.[0] || null)} /> setDocument("Устав", e.target?.files?.[0] || null) } /> ) return ( {verificationStatus === VerificationStatus.VERIFICATED ? "Ваши документы" : "Загрузите документы"} для верификации НКО в формате PDF {Boolean(!documentsUrl["ИНН"] && !documentsUrl["Устав"] && !documentsUrl["Свидетельство о регистрации НКО"]) && Пожалуйста, заполните все поля! } {documentElements} {verificationStatus === VerificationStatus.NOT_VERIFICATED && ( )} <> ) }