using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.BusinessLogic.Security;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Web.Areas.Hianyzas.Models;
using Kreta.Web.Areas.Hianyzas.Models.Mulasztasok;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.TabStrip;
using Kreta.Web.Models.EditorTemplates;
using Kreta.Web.Security;

namespace Kreta.Web.Areas.Hianyzas.Controllers
{
    [MvcRoleClaimsAuthorize(true)]
    [MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue)]
    [MvcRolePackageAuthorize(KretaClaimPackages.Osztalyfonok.ClaimValue,
        KretaClaimPackages.SzuperOsztalyfonok.ClaimValue,
        KretaClaimPackages.Evfolyamfelelos.ClaimValue)]
    public class MulasztasokController : BaseMulasztasokController
    {
        public ActionResult Index()
        {
            var model = new MulasztasIndexModel
            {
                OsztalyCsoportList = GetOsztalyCsoportList(true),

                TabList = GetMulasztasokTabs(Constants.Controllers.Mulasztasok),
                IgazolasNaploZarasDatum = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetIgazolasokNaplozarasDatuma(),
            };

            if (ClaimData.FelhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.Naplo))
            {
                model.OsztalyCsoportId = new OsztalyCsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetOsztalyfonokElsonekMegtalaltOsztalya(ClaimData.FelhasznaloId);
            }

            return View("Index", model);
        }

        public ActionResult GetMulasztasokDatumNezetTab()
        {
            return base.GetMulasztasokDatumNezetTab(Constants.Controllers.Mulasztasok, Constants.ApiControllers.MulasztasokApi);
        }

        public ActionResult GetMulasztasokDatumNezetDetailGrid(MulasztasokDatumNezetGridModel dateModel)
        {
            var igazolasNaplozarasDatuma = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetIgazolasokNaplozarasDatuma();
            dateModel.IsMulasztasKezelheto = dateModel.MulasztasDatuma > igazolasNaplozarasDatuma;
            return base.GetMulasztasokDatumNezetDetailGrid(dateModel);
        }

        public ActionResult GetMulasztasokTanuloNezetTab()
        {
            return base.GetMulasztasokTanuloNezetTab(Constants.Controllers.Mulasztasok, Constants.ApiControllers.MulasztasokApi);
        }

        public ActionResult GetMulasztasokTanuloNezetDetailGrid(MulasztasokTanuloNezetGridModel tanuloModel, bool GridHasDelete)
        {
            return base.GetMulasztasokTanuloNezetDetailGrid(tanuloModel, GridHasDelete);
        }

        public ActionResult GetMulasztasokNaploNezetTab()
        {
            return base.GetMulasztasokNaploNezetTab(Constants.Controllers.Mulasztasok, Constants.ApiControllers.MulasztasokApi);
        }

        public ActionResult OpenTanuloMulasztasaiPopup(int tanuloId, int osztalyCsoportId, string apiControllerName = null)
        {
            return base.OpenTanuloMulasztasaiPopup(tanuloId, osztalyCsoportId, apiControllerName);
        }

        public ActionResult TanuloKezeletlenMulasztasaiDetailGrid(TanuloMulasztasaiPopupModel gridModel, string apiControllerName = null)
        {
            return base.TanuloKezeletlenMulasztasaiDetailGrid(gridModel, apiControllerName);
        }

        public ActionResult TanuloKezeltMulasztasaiDetailGrid(TanuloMulasztasaiPopupModel gridModel, string apiControllerName = null)
        {
            return base.TanuloKezeltMulasztasaiDetailGrid(gridModel, apiControllerName);
        }
    }
}