"use client"; import { useEffect, useState } from "react"; import API from "@services/Api.Service"; import { useSessionStore } from "@core/Store/Sesion.Store"; import { useAlert } from "@store/Alert.Store"; export default function CheckPendingInvitations() { const SessionInfo = useSessionStore(); const alert = useAlert(); const [isChecking, setIsChecking] = useState(false); const [pendingOrg, setPendingOrg] = useState(null); const [isProcessing, setIsProcessing] = useState(false); const checkInvitations = async () => { if (!SessionInfo.userId || isChecking) return; setIsChecking(true); try { const response = await API.post("companies/get-by-user", { sessionUser: SessionInfo.userId }); const orgs = response || []; // Buscar la primera organización donde la invitación esté pendiente de aceptación por parte del usuario const foundOrg = orgs.find(org => org.guestOk === false); if (foundOrg) { setPendingOrg(foundOrg); } else { setPendingOrg(null); } } catch (error) { console.error("Error comprobando invitaciones:", error); } finally { setIsChecking(false); } }; useEffect(() => { if (SessionInfo.userId) { checkInvitations(); } }, [SessionInfo.userId]); const handleAccept = async () => { if (!pendingOrg || isProcessing) return; setIsProcessing(true); try { await API.post("employees/validate-guest", { employeeId: pendingOrg.employeeId, sessionUser: SessionInfo.userId }); alert.showSuccess("¡Invitación aceptada exitosamente!"); setPendingOrg(null); setTimeout(() => checkInvitations(), 1000); } catch (e: any) { alert.showError(e.message || "Ocurrió un error al aceptar"); } finally { setIsProcessing(false); } }; const handleReject = async () => { if (!pendingOrg || isProcessing) return; setIsProcessing(true); try { await API.post("employees/reject-guest", { employeeId: pendingOrg.employeeId, sessionUser: SessionInfo.userId }); alert.showInfo("Invitación rechazada."); setPendingOrg(null); setTimeout(() => checkInvitations(), 1000); } catch (e: any) { alert.showError(e.message || "Ocurrió un error al rechazar"); } finally { setIsProcessing(false); } }; const handleLater = () => { setPendingOrg(null); }; if (!pendingOrg) return <>; return ( <> {/* Overlay */}
{/* Modal Container */}
{/* Decorative Background Elements */}
{/* Particles */}
{/* Icon */}

¡Tienes una nueva invitación!

Has sido invitado a formar parte del equipo de colaboradores en:

{/* Company Card */}
{pendingOrg.name.charAt(0).toUpperCase()}
{pendingOrg.name}
Nueva Oportunidad
{/* Buttons */}
); }