// import './quickaccess.scss';
// import React, {useContext, useState} from 'react';
// import Modal from "../../UI/Modal/Modal";
// import QuickAccessModalApp from './QuickAccessModalApp';
// import AuthContext from '../../../context/auth-context';
// import {toastInfo} from "../../../services/toaster";
// import {normaliseGreek} from '../../../helpers/functions';
// import timer from "../../../assets/images/qa-timer.svg";
// import useTranslations from "../../../hooks/useTranslations";
// import {Microservice} from "../../../models/EgovUser";
// import ClearButton from "../../UI/ClearButton/ClearButton";
// import useRole from "../../../hooks/useRole";
//
// type QuickAccessProps = {
//     appNumber?: number
//     closeModal: () => void
// }
//
//
// const QuickAccessModal = ({closeModal}: QuickAccessProps) => {
//
//     const context = useContext(AuthContext);
//     const [searchValue, setSearchValue] = useState('');
//     const {translateModule, translateMicroservice, translatePermission, translateRole} = useTranslations()
//     const workRelationId = context.currentUser?.work_relation_id
// const roles = context.currentUser?.roles;
//     const handleAddClick = (message: string) => {
//         toastInfo('Η εφαρμογή προστεθηκε με επιτυχία.');
//     };
//
//     const handleChange = (e: any) => {
//         setSearchValue(e.target.value);
//     };
//
//     return (
//         <Modal close={closeModal} containerClass={'qa-modal-overlay'} closeBtn={true}
//                modalHeaderTitle={'Quick Access'} modalHeaderImg={timer}>
//
//             <div className="modal-searchbar-container">
//                 <input id="modal-search-bar" type="text" value={searchValue}
//                        placeholder="Πληκτρολογήστε εδώ για γρήγορη αναζήτηση υπηρεσίας" onChange={handleChange}/>
//                 <ClearButton term={searchValue} clear={() => setSearchValue("")}/>
//             </div>
//
//             <div id="modal-apps" className="qa-modal-content-container">
//                 {
//                     context.currentUser && (
//                         context.currentUser.quickAccess.length === 10 ?
//                             <p className={'text-center'}>Δεν μπορείτε να προσθέσετε άλλες υπηρεσίες</p>
//                             :
//                             context.currentUser.roles.map((role) => {
//                                 const role_per = context.currentUser?.permissions[role];
//                                 return role_per && Object.entries(role_per).map(([permission, {quick, default_view}]) => {
//
//                                     const [application, service] = permission.split('.')
//
//                                     if (
//                                         (application === "difo" && workRelationId === 1 && service === "personal_folder") ||
//                                         // (application === "difo" && workRelationId === 1 && service === "alfa_ena") ||
//                                         (application === "hr_support" && workRelationId === 2 && service === "personal_folder")
//                                     ) {
//                                         return null;
//                                     }
//                                     if (
//                                         application === "hr_support" &&
//                                         !roles?.includes('hr_manager')
//                                     ) {
//                                         return null;
//                                     }
//
//                                     const s = normaliseGreek(searchValue).toLowerCase();
//
//                                     const applicationSearch = normaliseGreek(translateMicroservice(application as Microservice) as string).toLowerCase();
//                                     const serviceSearch = normaliseGreek(translateModule(application + '.' + service) as string).toLowerCase();
//                                     const roleSearch = normaliseGreek(translateRole(role) as string).toLowerCase();
//
//                                     const isFav = context.currentUser!.quickAccess.includes(role + '.' + application + '.' + service)
//
//                                     return (
//                                         <>
//                                             {(applicationSearch.includes(s) || serviceSearch.includes(s) || roleSearch.includes(s)) && !isFav &&
//                                                 <QuickAccessModalApp key={permission} application={application}
//                                                                      service={service}
//                                                                      role={role} addQuickAccess={() => {
//                                                     context.addQuickAccess(role, permission)
//                                                 }} handleAddClick={handleAddClick}/>
//                                             }
//
//                                             {/**
//                                              second loop is for subpages of modules that can be added in QA
//                                              */}
//
//                                             {quick.filter(q => q !== default_view).map(quick => {
//                                                 // @ts-ignore
//                                                 const permissionSearch = normaliseGreek(translatePermission(application + '.' + service + '.' + quick)).toLowerCase();
//                                                 const isFavP = context.currentUser!.quickAccess.includes(role + '.' + application + '.' + service + '.' + quick)
//                                                 if ((applicationSearch.includes(s) || permissionSearch.includes(s)) && !isFavP) {
//                                                     return (<QuickAccessModalApp key={permission + "." + quick}
//                                                                                  application={application}
//                                                                                  service={service}
//                                                                                  role={role}
//                                                                                  permission={quick}
//                                                                                  addQuickAccess={() => {
//                                                                                      context.addQuickAccess(role, permission + "." + quick)
//                                                                                  }} handleAddClick={handleAddClick}/>
//                                                     )
//                                                 }
//                                             })}
//                                         </>
//                                     )
//                                 })
//                             })
//                     )
//                 }
//             </div>
//         </Modal>
//     );
// }
//
// export default QuickAccessModal;
import './quickaccess.scss';
import React, {useContext, useState} from 'react';
import Modal from "../../UI/Modal/Modal";
import QuickAccessModalApp from './QuickAccessModalApp';
import AuthContext from '../../../context/auth-context';
import {toastInfo} from "../../../services/toaster";
import {normaliseGreek} from '../../../helpers/functions';
import timer from "../../../assets/images/qa-timer.svg";
import useTranslations from "../../../hooks/useTranslations";
import {Microservice} from "../../../models/EgovUser";
import ClearButton from "../../UI/ClearButton/ClearButton";
import useRole from "../../../hooks/useRole";

type QuickAccessProps = {
    appNumber?: number
    closeModal: () => void
}


const QuickAccessModal = ({closeModal}: QuickAccessProps) => {

    const context = useContext(AuthContext);
    const [searchValue, setSearchValue] = useState('');
    const {translateModule, translateMicroservice, translatePermission, translateRole} = useTranslations()
    const workRelationId = context.currentUser?.work_relation_id
    const roles = context.currentUser?.roles;
    const handleAddClick = (message: string) => {
        toastInfo('Η εφαρμογή προστεθηκε με επιτυχία.');
    };

    const handleChange = (e: any) => {
        setSearchValue(e.target.value);
    };

    return (
        <Modal close={closeModal} containerClass={'qa-modal-overlay'} closeBtn={true}
               modalHeaderTitle={'Quick Access'} modalHeaderImg={timer}>

            <div className="modal-searchbar-container">
                <input id="modal-search-bar" type="text" value={searchValue}
                       placeholder="Πληκτρολογήστε εδώ για γρήγορη αναζήτηση υπηρεσίας" onChange={handleChange}/>
                <ClearButton term={searchValue} clear={() => setSearchValue("")}/>
            </div>

            <div id="modal-apps" className="qa-modal-content-container">
                {
                    context.currentUser && (
                        context.currentUser.quickAccess.length === 10 ?
                            <p className={'text-center'}>Δεν μπορείτε να προσθέσετε άλλες υπηρεσίες</p>
                            :
                            context.currentUser.roles.map((role) => {
                                const role_per = context.currentUser?.permissions[role];
                                return role_per && Object.entries(role_per).map(([permission, {quick, default_view}]) => {

                                    const [application, service] = permission.split('.')

                                    if (
                                        (application === "difo" && workRelationId === 1 && service === "personal_folder") ||
                                        // (application === "difo" && workRelationId === 1 && service === "alfa_ena") ||
                                        (application === "hr_support" && workRelationId === 2 && service === "personal_folder")
                                    ) {
                                        return null;
                                    }
                                    if (
                                        application === "hr_support" &&
                                        !roles?.includes('hr_manager')
                                    ) {
                                        return null;
                                    }
                                    if (
                                        role === 'dua_user' &&
                                        application === "rescom" &&
                                        (service === "collaborators" || service === "erga")
                                    ) {
                                        return null;
                                    }

                                    const s = normaliseGreek(searchValue).toLowerCase();

                                    const applicationSearch = normaliseGreek(translateMicroservice(application as Microservice) as string).toLowerCase();
                                    const serviceSearch = normaliseGreek(translateModule(application + '.' + service) as string).toLowerCase();
                                    const roleSearch = normaliseGreek(translateRole(role) as string).toLowerCase();

                                    const isFav = context.currentUser!.quickAccess.includes(role + '.' + application + '.' + service)

                                    return (
                                        <>
                                            {(applicationSearch.includes(s) || serviceSearch.includes(s) || roleSearch.includes(s)) && !isFav &&
                                                <QuickAccessModalApp key={permission} application={application}
                                                                     service={service}
                                                                     role={role} addQuickAccess={() => {
                                                    context.addQuickAccess(role, permission)
                                                }} handleAddClick={handleAddClick}/>
                                            }

                                            {/**
                                             second loop is for subpages of modules that can be added in QA
                                             */}

                                            {quick.filter(q => q !== default_view).map(quick => {
                                                // @ts-ignore
                                                const permissionSearch = normaliseGreek(translatePermission(application + '.' + service + '.' + quick)).toLowerCase();
                                                const isFavP = context.currentUser!.quickAccess.includes(role + '.' + application + '.' + service + '.' + quick)
                                                if ((applicationSearch.includes(s) || permissionSearch.includes(s)) && !isFavP) {
                                                    return (<QuickAccessModalApp key={permission + "." + quick}
                                                                                 application={application}
                                                                                 service={service}
                                                                                 role={role}
                                                                                 permission={quick}
                                                                                 addQuickAccess={() => {
                                                                                     context.addQuickAccess(role, permission + "." + quick)
                                                                                 }} handleAddClick={handleAddClick}/>
                                                    )
                                                }
                                            })}
                                        </>
                                    )
                                })
                            })
                    )
                }
            </div>
        </Modal>
    );
}

export default QuickAccessModal;