using System.Collections.Generic;
using System.Web.Mvc;
using Kreta.BusinessLogic.Security;
using Kreta.Core.FeatureToggle;
using Kreta.Resources;
using Kreta.Web.Areas.Nyomtatvanyok.Models;
using Kreta.Web.Models.EditorTemplates;
using Kreta.Web.Security;

namespace Kreta.Web.Areas.Nyomtatvanyok.Controllers
{
    [MvcRoleClaimsAuthorize(true)]
    [MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue)]
    [MvcRolePackageAuthorize(new string[] { KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Tanar.ClaimValue })]
    public class TermekportalController : Controller
    {
        private IFeatureContext FeatureContext { get; }

        public TermekportalController(IFeatureContext featureContext)
        {
            FeatureContext = featureContext;
        }

        // GET: Nyomtatvanyok/Termekportal
        public ActionResult Index()
        {
            var model = new PanelBarBaseModel();
            model.PanelName = Constants.Termekportal.PANELNAME;
            model.ChildModels = ChildModelsFeltoltes();

            return View("Index", model);
        }

        private List<PanelBarChildModel> ChildModelsFeltoltes()
        {
            List<PanelBarChildModel> panelBarChildModels = new List<PanelBarChildModel>();

            List<object> data;
            var isAdmin = ClaimData.FelhasznaloSzerepCsomagok.Contains(KretaClaimPackages.Adminisztrator.ClaimValue);

            #region GINOP 6.2.3 

            var HOIdb = FeatureContext.IsEnabled(Core.Constants.FeatureName.HOIAdatbazis);
            if (isAdmin && HOIdb)
            {
                data = new List<object>();

                data.Add(new TermekportalModel
                {
                    Name = NyomtatvanyokResource.GINOPEszkozspecifikacio,
                    DocumentType = Constants.Termekportal.LINK,
                    ActionLink = Constants.Termekportal.GINOP_ESZKOZSPECIFIKACIO
                });
                data.Add(new TermekportalModel
                {
                    Name = NyomtatvanyokResource.IKTSegedlet,
                    DocumentType = Constants.Termekportal.PDF,
                    ActionLink = Constants.Termekportal.IKT_SEGEDLET
                });
                data.Add(new TermekportalModel
                {
                    Name = NyomtatvanyokResource.EszkozSpecJavaslat,
                    DocumentType = Constants.Termekportal.XLS,
                    ActionLink = Constants.Termekportal.ESZKOZ_SPECIFIKACIO_JAVASLAT
                });
                panelBarChildModels.Add(new PanelBarChildModel
                {
                    PartialViewName = Constants.Termekportal.PARTIALVIEWNAME,
                    PartialViewTitle = NyomtatvanyokResource.GINOP623,
                    Data = data
                });
            }

            #endregion

            #region Tudásbázis csoport 

            if (isAdmin)
            {
                data = new List<object>();

                data.Add(new TermekportalModel
                {
                    Name = NyomtatvanyokResource.TudasbazisLeiras,
                    DocumentType = Constants.Termekportal.LINK,
                    ActionLink = Constants.Termekportal.TUDASBAZIS
                });
                panelBarChildModels.Add(new PanelBarChildModel()
                {
                    PartialViewName = Constants.Termekportal.PARTIALVIEWNAME,
                    PartialViewTitle = NyomtatvanyokResource.TudasbazisCsoport,
                    Data = data
                });
            }

            #endregion

            #region Adatszolgáltatások csoport 

            if (isAdmin)
            {
                data = new List<object>();

                data.Add(new TermekportalModel
                {
                    Name = TermekportalResource.KRETAElozetesTantargyfelosztasSegedlet,
                    DocumentType = Constants.Termekportal.PDF,
                    ActionLink = Constants.Termekportal.ETTF
                });
                data.Add(new TermekportalModel
                {
                    Name = NyomtatvanyokResource.AdatszolgGyorsAttekintesSegedlet,
                    DocumentType = Constants.Termekportal.PDF,
                    ActionLink = Constants.Termekportal.ADATSZOLG_GYORSATTEKINTES
                });
                data.Add(new TermekportalModel
                {
                    Name = NyomtatvanyokResource.PedagogusIktKompetencia,
                    DocumentType = Constants.Termekportal.PDF,
                    ActionLink = Constants.Termekportal.PEDAGOGUS_IKT
                });
                data.Add(new TermekportalModel
                {
                    Name = NyomtatvanyokResource.BeiratkozasAdatszolg,
                    DocumentType = Constants.Termekportal.PDF,
                    ActionLink = Constants.Termekportal.BEIRATKOZAS_ADATASZOLG
                });
                panelBarChildModels.Add(new PanelBarChildModel()
                {
                    PartialViewName = Constants.Termekportal.PARTIALVIEWNAME,
                    PartialViewTitle = NyomtatvanyokResource.AdatszolgCsoport,
                    Data = data
                });
            }

            #endregion

            #region E-learning csoport 
            data = new List<object>();

            data.Add(new TermekportalModel
            {
                Name = NyomtatvanyokResource.FelkszeszitesKRETAPedagogusmodulKepzes,
                DocumentType = Constants.Termekportal.LINK,
                ActionLink = Constants.Termekportal.FELKESZITES_A_KRETAHOZ
            });
            if (isAdmin)
            {
                data.Add(new TermekportalModel
                {
                    Name = NyomtatvanyokResource.KretaAdminKepzes,
                    DocumentType = Constants.Termekportal.LINK,
                    ActionLink = Constants.Termekportal.KRETA_ADMIN
                });
            }
            panelBarChildModels.Add(new PanelBarChildModel()
            {
                PartialViewName = Constants.Termekportal.PARTIALVIEWNAME,
                PartialViewTitle = NyomtatvanyokResource.ELearningCsoport,
                Data = data
            });
            #endregion

            #region Felhasználói kézikönyvek csoport 
            data = new List<object>();
            if (isAdmin)
            {
                data.Add(new TermekportalModel
                {
                    Name = NyomtatvanyokResource.ENaploGyorsAttekintesSegedlet,
                    DocumentType = Constants.Termekportal.PDF,
                    ActionLink = Constants.Termekportal.ENAPLO_GYORSATTEKINTES
                });
            }
            data.Add(new TermekportalModel
            {
                Name = NyomtatvanyokResource.PedagogusFelhasznaloiKezikonyv,
                DocumentType = Constants.Termekportal.PDF,
                ActionLink = Constants.Termekportal.PEDAGOGUS_KEZIKONYV
            });
            panelBarChildModels.Add(new PanelBarChildModel()
            {
                PartialViewName = Constants.Termekportal.PARTIALVIEWNAME,
                PartialViewTitle = NyomtatvanyokResource.FelhasznaloiKezikonyvekCsoport,
                Data = data
            });
            #endregion

            #region KRÉTA Poszeidon iktatórendszer modul

            if (isAdmin)
            {
                data = new List<object>();

                data.Add(new TermekportalModel
                {
                    Name = NyomtatvanyokResource.IntezmenyiUgyiratkezeloiSegedlet,
                    DocumentType = Constants.Termekportal.PDF,
                    ActionLink = Constants.Termekportal.INTEZMENYI_UGYIRAT
                });
                data.Add(new TermekportalModel
                {
                    Name = NyomtatvanyokResource.PoszeidonWebesFelhasznaloiDokumentacio,
                    DocumentType = Constants.Termekportal.PDF,
                    ActionLink = Constants.Termekportal.POSZEIDON_WEBES_KEZIKONYV
                });
                panelBarChildModels.Add(new PanelBarChildModel()
                {
                    PartialViewName = Constants.Termekportal.PARTIALVIEWNAME,
                    PartialViewTitle = TermekportalResource.KRETAPoszeidonIratkezeloModulCIM,
                    Data = data
                });
            }

            #endregion

            #region Egyéb dokumentumok csoport

            if (isAdmin)
            {
                data = new List<object>();

                data.Add(new TermekportalModel
                {
                    Name = NyomtatvanyokResource.IntezmenyiBemutatoanyag,
                    DocumentType = Constants.Termekportal.PDF,
                    ActionLink = Constants.Termekportal.INTEZMENYI_BEMUTATO
                });
                panelBarChildModels.Add(new PanelBarChildModel()
                {
                    PartialViewName = Constants.Termekportal.PARTIALVIEWNAME,
                    PartialViewTitle = NyomtatvanyokResource.EgyebDokumentumokCsoport,
                    Data = data
                });
            }

            #endregion

            #region Kréta rendszer moduljainak leírása

            if (isAdmin)
            {
                data = new List<object>();

                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETAIntezmenyiAdminisztraciosRendszerModulCIM,
                    Description = TermekportalResource.KRETAIntezmenyiAdminisztraciosRendszerModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETAElektronikusNaploModulCIM,
                    Description = TermekportalResource.KRETAElektronikusNaploModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETAElektronikusEllenorzoModulCIM,
                    Description = TermekportalResource.KRETAElektronikusEllenorzoModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETATantargyfelosztasModulCIM,
                    Description = TermekportalResource.KRETATantargyfelosztasModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETAKozpontiRendszerModulCIM,
                    Description = TermekportalResource.KRETAKozpontiRendszerModulSZOVEG
                });

                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETAAdatszolgaltatasModulCIM,
                    Description = TermekportalResource.KRETAAdatszolgaltatasModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETAKozmuAdatszolgaltatasModulCIM,
                    Description = TermekportalResource.KRETAKozmuAdatszolgaltatasModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETABeiratkozasModulCIM,
                    Description = TermekportalResource.KRETABeiratkozasModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETABeleptetoModulCIM,
                    Description = TermekportalResource.KRETABeleptetoModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETADualisKepzesModulCIM,
                    Description = TermekportalResource.KRETADualisKepzesModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETAPoszeidonIratkezeloModulCIM,
                    Description = TermekportalResource.KRETAPoszeidonIratkezeloModulSZOVEG
                });

                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETAKlebelsbergOsztondijModulCIM,
                    Description = TermekportalResource.KRETAKlebelsbergOsztondijModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETASzuloiModulCIM,
                    Description = TermekportalResource.KRETASzuloiModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETAPenzugyiModulCIM,
                    Description = TermekportalResource.KRETAPenzugyiModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETAGazdalkodasiModulCIM,
                    Description = TermekportalResource.KRETAGazdalkodasiModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETAHumaneroforrasModulCIM,
                    Description = TermekportalResource.KRETAHumaneroforrasModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETAeUgyintezesiModulCIM,
                    Description = TermekportalResource.KRETAeUgyintezesiModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETAIntezmenyiMonitoringModulCIM,
                    Description = TermekportalResource.KRETAIntezmenyiMonitoringModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETAPedagogusMonitoringModulCIM,
                    Description = TermekportalResource.KRETAPedagogusMonitoringModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETASzakkepzesiModulCIM,
                    Description = TermekportalResource.KRETASzakkepzesiModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETAFelnottkepzesiModulCIM,
                    Description = TermekportalResource.KRETAFelnottkepzesiModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETASzakkepzesiJelentkezesModulCIM,
                    Description = TermekportalResource.KRETASzakkepzesiJelentkezesModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETATanuloMonitoringModulCIM,
                    Description = TermekportalResource.KRETATanuloMonitoringModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETAEszkozNyilvantartoModulCIM,
                    Description = TermekportalResource.KRETAEszkozNyilvantartoModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETAProjektNyilvantartoModulCIM,
                    Description = TermekportalResource.KRETAProjektNyilvantartoModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETASzakkepzesiFelnottkepzesiModulCIM,
                    Description = TermekportalResource.KRETASzakkepzesiFelnottkepzesiModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KRETADigitalisKollaboraciosTerModulCIM,
                    Description = TermekportalResource.KRETADigitalisKollaboraciosTerModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.KretaFenntartoiEllenorzesModulCIM,
                    Description = TermekportalResource.KretaFenntartoiEllenorzesModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.PedagogusokPalyazatbanTortenoReszvetelenekNyomonkovetesiEllenorzesiModulCIM,
                    Description = TermekportalResource.PedagogusokPalyazatbanTortenoReszvetelenekNyomonkovetesiEllenorzesiModulSZOVEG
                });
                data.Add(new TermekLeirasModel()
                {
                    Title = TermekportalResource.UzletiTervezesModulCIM,
                    Description = TermekportalResource.UzletiTervezesModulSZOVEG
                });
                data.Add(new TermekLeirasModel
                {
                    Title = TermekportalResource.KRETAIFMModulCIM,
                    Description = TermekportalResource.KRETAIFMModulSZOVEG,
                });
                data.Add(new TermekLeirasModel
                {
                    Title = TermekportalResource.FeltarModulCIM,
                    Description = TermekportalResource.FeltarModulSZOVEG,
                });
                panelBarChildModels.Add(new PanelBarChildModel()
                {
                    PartialViewName = Constants.Termekportal.PARTIALVIEWNAME,
                    PartialViewTitle = TermekportalResource.KRETARendszerModuljainakLeirasa,
                    Data = data
                });
            }

            #endregion

            return panelBarChildModels;
        }
    }
}