diff --git a/GomezMorinFrontEnd/src/components/EditModal.jsx b/GomezMorinFrontEnd/src/components/EditModal.jsx index f33b76d..a639e31 100644 --- a/GomezMorinFrontEnd/src/components/EditModal.jsx +++ b/GomezMorinFrontEnd/src/components/EditModal.jsx @@ -10,12 +10,13 @@ import { updateForms } from "../queries/queryRequestForm"; import { useNavigate } from "react-router-dom"; import { useDispatch } from "react-redux"; import { setRows } from "../states/formSlice"; +import { postEmail } from "../queries/queryApi"; /** * A React component that renders a modal with a form * * @returns {Jsx.Element} - A React JSX element representing a modal with a form */ -const EditModal = ({ idForm, folio, estatus, userId }) => { +const EditModal = ({ idForm, folio, estatus, userId, userPtr }) => { const navigate = useNavigate(); const methods = useForm(); const [isOpen, setIsOpen] = useState(false); @@ -26,6 +27,7 @@ const EditModal = ({ idForm, folio, estatus, userId }) => { id: item._id, fecha: item.requestDate, folio: item.folio, + userPtr: item.userPtr, tipo: item.membretatedLetterDoc ? "Persona moral" : "Persona física", evento: item.membretatedLetterDoc ? "-" : item.typeEvent, nombre: item.membretatedLetterDoc @@ -54,6 +56,18 @@ const EditModal = ({ idForm, folio, estatus, userId }) => { alert(err.response.data.message); } setIsOpen(false); + if (estatus != data.estatus) { + try { + const emailData = { + title: "Cambio de estatus", + message: `

El estatus de la solicitud con folio: ${data.folio} ha sido modificado a ${data.estatus}

`, + userId: userPtr, + }; + await postEmail(emailData); + } catch (err) { + alert(err.response.data.message); + } + } }; /** diff --git a/GomezMorinFrontEnd/src/pages/RequestAll/index.jsx b/GomezMorinFrontEnd/src/pages/RequestAll/index.jsx index 5690dbb..9dde69f 100644 --- a/GomezMorinFrontEnd/src/pages/RequestAll/index.jsx +++ b/GomezMorinFrontEnd/src/pages/RequestAll/index.jsx @@ -36,6 +36,7 @@ const RequestAll = () => { folio={row.folio} estatus={row.estatus} userId={userId} + userPtr = {row.userPtr} /> ), }, @@ -63,6 +64,7 @@ const RequestAll = () => { id: item._id, fecha: item.requestDate, folio: item.folio, + userPtr : item.userPtr, tipo: item.membretatedLetterDoc ? "Persona moral" : "Persona física", evento: item.membretatedLetterDoc ? "-" : item.typeEvent, nombre: item.membretatedLetterDoc diff --git a/GomezMorinFrontEnd/src/queries/queryApi.js b/GomezMorinFrontEnd/src/queries/queryApi.js new file mode 100644 index 0000000..8ec83c5 --- /dev/null +++ b/GomezMorinFrontEnd/src/queries/queryApi.js @@ -0,0 +1,27 @@ +import axios from "axios"; +const baseUrl = import.meta.env.VITE_BASE_URL; + +/** + * Sends an email notification. + * + * @param {Object} data - The data object containing title, userId, and message. + * @returns {Promise} - A promise that resolves to the response object. + * @throws {Error} - If an error occurs during the API call. + */ +export const postEmail = async (data) => { + const { title, userId, message } = data; + const user = await axios.get(`${baseUrl}/users/${userId}`); + const email = user.data.email; + + const body = { + title: title, + textBody: message, + recipientEmail: email, + }; + try { + const response = await axios.post(`${baseUrl}/email`, body); + return response; + } catch (err) { + return Promise.reject(err); + } +};