import { useRef, useState } from "react"; import RecipientAddCard from "./RecipientAddCard" import RecipientCards from "./RecipientCards" import { useParams } from "react-router-dom"; import { SignTypeEnum } from "../../../utlity/types"; import { useDispatch, useSelector } from "react-redux"; import { AppDispatch, RootState } from "../../../store/store"; import { IoMdClose } from "react-icons/io"; import getMinRoutingOrder from "../../../utlity/commonUtils"; import { addRecipientAsync, recipientType, removeAllRecipients, removeRecipientAsync } from "../../../store/slices/selectedRecipientsSlice"; import { UserState } from "../../../store/slices/userSlice"; import api from "../../../config/api"; import { FormSubmitInt } from "./ProcessStepOne"; interface RecipientsConIntProps { transactionTemplateToggle: string; accountId: string | undefined; transactionId: string | undefined; userData: UserState; isModal: boolean; submitError?: FormSubmitInt; setEditRecipientsModal?: React.Dispatch } const RecipientsCon: React.FC = ({ transactionTemplateToggle, accountId, transactionId, userData, submitError, isModal = true, setEditRecipientsModal }) => { const dispatch = useDispatch() const topRef = useRef(null); const signType = useParams<{ signType: string }>().signType; const [showSelfSignWarnModal, setShowSelfSignWarnModal] = useState(false) const [editRecipient, setEditRecipient] = useState({}) const [editRecipientCurrentEmail, setEditRecipientCurrentEmail] = useState('') const [editCase, setEditCase] = useState("") const selectedRecipients = useSelector((state: RootState) => state.selectedRecipients.recipients) const globalLoader = useSelector((state: RootState) => state.loader) // Handle Recipient Process - START const handleRecipientAdd = async () => { let minRoutingOrder = getMinRoutingOrder({ recipients: selectedRecipients }); const recipientsData = selectedRecipients.map((recipient, index) => ({ id: "id" in recipient ? recipient.id : null, routingOrder: "routingOrder" in recipient && recipient.routingOrder ? recipient.routingOrder : 1, provideOwnTags: userData.email === recipient.email && (recipient.routingOrder ?? 1) === minRoutingOrder ? true : false, type: recipient.type, firstName: recipient.firstName, lastName: recipient.lastName, authType: "NONE", deliveryMethod: "EMAIL", email: recipient.email, hostName: recipient.hostName, hostEmail: recipient.hostEmail, company: "", title: "", website: "", phone: "", accessCode: "", accessCodeDelivery: true, language: "en", name: `${recipient.firstName} ${recipient.lastName}`, roleName: recipient.roleName, allowSenderToEdit: recipient.allowSenderToEdit, allowSenderToDelete: recipient.allowSenderToDelete, })); let recipientsDataTemp = recipientsData; let recipientId = null; if (signType === SignTypeEnum.selfSign) { dispatch(removeAllRecipients()); await Promise.all( selectedRecipients.map((recipient) => dispatch(removeRecipientAsync({ recipientId: recipient.id, accountId, transactionId, email: recipient.email, }))) ); recipientsDataTemp = [{ id: null, routingOrder: 1, provideOwnTags: true, type: recipientType.SIGNER, firstName: userData.firstName, lastName: userData.lastName, authType: "NONE", deliveryMethod: "EMAIL", email: userData.email, hostName: "", hostEmail: "", company: "", title: "", website: "", phone: "", accessCode: "", accessCodeDelivery: true, language: userData.language ? userData.language : "en", name: `${userData.firstName} ${userData.lastName}`, roleName: "", allowSenderToEdit: true, allowSenderToDelete: true, }] try { const basePath = `/api/v1/accounts/${accountId}/transactions/${transactionId}/recipients`; const res = await api.post(basePath, recipientsDataTemp) recipientId = res.data[0].id; } catch (error) { console.log("Error Creating Self Sign Recipient", error.message) } } else { if (!accountId || !transactionId) return; dispatch(addRecipientAsync({ recipientsData: recipientsDataTemp, accountId, transactionId })); } } // Handle Recipient Process - END return ( <> {(signType !== SignTypeEnum.selfSign || showSelfSignWarnModal) && <>
{isModal &&

Recipients

{ handleRecipientAdd() setEditRecipientsModal(false) }} className="text-xl text-slate-400 cursor-pointer" />
}
{submitError && submitError.showError &&

{submitError.duplicateEmailSameRoutingOrder && `Each Signing order must have unique emails, ${submitError && submitError.email}`} {!submitError.recipients && !submitError.duplicateEmailSameRoutingOrder && submitError.invalidRecipientEmail && `Invalid email address, ${submitError && submitError.email}`} {!submitError.recipients && !submitError.duplicateEmailSameRoutingOrder && submitError.invalidRecipientLastName && `Last name cannot be empty.`}

}
{submitError && submitError.showError &&

{submitError.recipients && "At least one recipient is required."}

}
} ) } export default RecipientsCon