using System;
using System.Collections.Generic;
using System.Web.Mvc;
using Kreta.BusinessLogic.Extensions;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.BusinessLogic.Security;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Web.Areas.Orarend.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Security;

namespace Kreta.Web.Areas.Orarend.Controllers
{
    [MvcRoleClaimsAuthorize(true)]
    [MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue)]
    [MvcRolePackageAuthorize(TanevEnum.AktEsKovTanev, KretaClaimPackages.Tanar.ClaimValue)]
    public class TanariOrarendKeresoController : Controller
    {
        public ActionResult Index()
        {
            var systemSettingsHelper = new SystemSettingsHelper(ConnectionTypeExtensions.GetSystemConnectionType());

            var sysParamList = systemSettingsHelper.GetSystemSettingValue<List<string>>(RendszerBeallitasTipusEnum.Tanar_Feluleten_Orarend_Lathatosag);
            if (sysParamList.Contains("TanariOrarendKereso"))
            {
                return Redirect(Url.Content(CommonExtensions.GetDefaultPage()));
            }

            var model = new OrarendKeresoModel();

            var orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType());

            model.HetirendJson = orarendHelper.GetHetirendek();
            model.NaptariHetekHetirendJson = orarendHelper.GetNaptariHetekHetirendek();

            var co = orarendHelper.GetCalendarMinMax();
            model.CalendarMinTime = co.CalendarMin.Subtract(new TimeSpan(0, 15, 0)); // "15 perccel legyen előbb"
            model.CalendarMaxTime = co.CalendarMax.Add(new TimeSpan(0, 15, 0)); // "15 perccel legyen később"

            model.CsengetesiRendMinTime = new TimeSpan();
            model.CsengetesiRendMaxTime = new TimeSpan(0, 25, 0);

            ViewBag.napirendStart = systemSettingsHelper.GetSystemSettingValue<TimeSpan>(RendszerBeallitasTipusEnum.Az_elektronikus_naplo_megjelenesenek_kezdoidopontja).RoundDownToNearestTargetMinute(15).ToString();
            ViewBag.napirendEnd = systemSettingsHelper.GetSystemSettingValue<string>(RendszerBeallitasTipusEnum.Az_elektronikus_naplo_megjelenesenek_zaroidopontja);

            return View(model);
        }
    }
}