using System; using System.Collections.Generic; using System.Web.Mvc; using Kreta.BusinessLogic.Extensions; using Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Helpers.SystemSettings; using Kreta.BusinessLogic.Interfaces; using Kreta.BusinessLogic.Security; using Kreta.Core.FeatureToggle; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Resources; using Kreta.Web.Areas.Alkalmazott.Models; using Kreta.Web.Areas.Intezmeny.Models; using Kreta.Web.Areas.Orarend.Models; using Kreta.Web.Areas.OsztalyCsoport.Models; using Kreta.Web.Areas.Tanulo.Models; using Kreta.Web.Helpers; using Kreta.Web.Helpers.TabStrip; using Kreta.Web.Security; namespace Kreta.Web.Areas.DualisKepzes.Controllers { [MvcRoleClaimsAuthorize(true)] [MvcRolePackageDenyAuthorize(KretaClaimPackages.IsDefaultAdminUser.ClaimValue)] [MvcRolePackageAuthorize(KretaClaimPackages.Dualis_Admin.ClaimValue, KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.IsSzakiranyuOktatasertFelelos.ClaimValue)] [Attributes.KretaGlobalLanguageChangeActionFilter(LanguageCode = "hu-Dualis")] public class DualisAdminController : BaseDualisSzerzodesController { public bool IsDualisKepzesEnabled => new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType()).GetIntezmenyConfig(IntezmenyConfigModulEnum.DualisKepzes, IntezmenyConfigTipusEnum.IsEnabled); private readonly IFeatureContext _featureContext; private IKretaAuthorization Authorization { get; } public DualisAdminController(IFeatureContext featureContext, IFileServiceHelper fileServiceHelper, IKretaAuthorization authorization) : base(fileServiceHelper) { Authorization = authorization; _featureContext = featureContext; } public ActionResult DualisTanulok() { if (!Authorization.IsValidDualisTanulok()) { return Redirect(Url.Action("AccessDenied", "ErrorHandler", new { area = string.Empty })); } var model = new TanuloSearchModel { FeladatKategoriaId = Constants.MindenErteke.FeladatKategoria, IsFromSzervezet = IsDualisKepzesEnabled, TanuloHozzaferesGeneralasaGombLathato = false }; if (ClaimData.FelhasznaloSzerepkor != Kreta.Enums.SzerepkorTipusEnum.Adminisztrator) { model.SzervezetId = new SzervezetHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetAlkalmazottSzervezetId(ClaimData.FelhasznaloId); } return View("~/Areas/Tanulo/Views/Tanulo/Index.cshtml", model); } public ActionResult DualisTanulokBesorolas() { if (!Authorization.IsValidDualisTanuloSorolas()) { return Redirect(Url.Action("AccessDenied", "ErrorHandler", new { area = string.Empty })); } var helper = new TanevHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); var data = helper.GetTanevInfo(); var model = new AktTanevCsoportBesorolasModel() { IsFromSzervezet = IsDualisKepzesEnabled, FromUrl = Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = "GetEmptyData" }), FromChangeEvent = "", FromPlaceholder = BesorolasResource.TanulokCsoportbaSorolasaElsoAlkalommal, ToUrl = Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = "GetDualisCsoportokList" }), ToChangeEvent = "AktTanevCsoportBesorolasHelper.changeToCsoport", ToPlaceholder = BesorolasResource.ValasszaKiACelcsoportot, Zaradek = new SorolasZaradek(ConnectionTypeExtensions.GetSessionConnectionType(), false, Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = "GetZaradekList" })), MinDatum = data.KezdoNap.ToString(), MaxDatum = data.UtolsoNap.ToString(), TanevElsoNapja = data.KezdoNap.Date, GetTanulokListFromUrl = Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = "GetAktivTanevDualisTanulok" }), GetTanulokListToUrl = Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = "GetAktivTanevCsoportTanuloi" }), SaveUrl = Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "AktTanevSorolasApi", action = "CsoportBesorolas" }) }; if (ClaimData.FelhasznaloSzerepkor != Kreta.Enums.SzerepkorTipusEnum.Adminisztrator) { model.SzervezetId = new SzervezetHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetAlkalmazottSzervezetId(ClaimData.FelhasznaloId); } return View("~/Areas/OsztalyCsoport/Views/AktTanevSorolas/CsoportBesorolas.cshtml", model); } public ActionResult DualisTanuloAthelyezes() { if (!Authorization.IsValidDualisTanuloSorolas()) { return Redirect(Url.Action("AccessDenied", "ErrorHandler", new { area = string.Empty })); } var helper = new TanevHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); var data = helper.GetTanevInfo(); var model = new AktTanevCsoportAtsorolasModel() { IsFromSzervezet = IsDualisKepzesEnabled, FromUrl = Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = "GetDualisCsoportokList" }), FromChangeEvent = "AktTanevCsoportAtsorolasHelper.changeFromCsoport", FromPlaceholder = BesorolasResource.ValasszaKiAForrascsoportot, ToUrl = Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = "GetDualisCsoportokList" }), ToChangeEvent = "AktTanevCsoportAtsorolasHelper.changeToCsoport", ToPlaceholder = BesorolasResource.ValasszaKiACelcsoportot, Zaradek = new SorolasZaradek(ConnectionTypeExtensions.GetSessionConnectionType(), true, Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = "GetZaradekList" })), MinDatum = data.KezdoNap.ToString(), MaxDatum = data.UtolsoNap.ToString(), TanevElsoNapja = data.KezdoNap.Date, GetTanulokListFromUrl = Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = "GetAktivTanevCsoportTanuloi" }), GetTanulokListToUrl = Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = "GetAktivTanevCsoportTanuloi" }), SaveUrl = Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "AktTanevSorolasApi", action = "CsoportAtsorolas" }) }; if (ClaimData.FelhasznaloSzerepkor != Kreta.Enums.SzerepkorTipusEnum.Adminisztrator) { model.SzervezetId = new SzervezetHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetAlkalmazottSzervezetId(ClaimData.FelhasznaloId); } model.Zaradek.IsZaradekKotelezo = false; return View("~/Areas/OsztalyCsoport/Views/AktTanevSorolas/CsoportAtsorolas.cshtml", model); } public ActionResult DualisTanuloBesorolasJavitas() { if (!Authorization.IsValidDualisTanuloSorolas()) { return Redirect(Url.Action("AccessDenied", "ErrorHandler", new { area = string.Empty })); } var model = new AktTanevCsoportTevesBesorolasJavitasModel() { IsFromSzervezet = IsDualisKepzesEnabled, FromUrl = Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = "GetDualisCsoportokList" }), FromChangeEvent = "AktTanevCsoportTevesBesorolasJavitasHelper.changeFromCsoport", FromPlaceholder = BesorolasResource.ValasszaKiAForrascsoportot, ToUrl = Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = "GetDualisCsoportokList" }), ToChangeEvent = "AktTanevCsoportTevesBesorolasJavitasHelper.changeToCsoport", ToPlaceholder = BesorolasResource.ValasszaKiACelcsoportot, Zaradek = new SorolasZaradek(ConnectionTypeExtensions.GetSessionConnectionType(), false, Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = "GetZaradekList" })), GetTanulokListFromUrl = Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = "GetAktivTanevCsoportTanuloi" }), GetTanulokListToUrl = Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = "GetAktivTanevCsoportTanuloi" }), SaveUrl = Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "AktTanevSorolasApi", action = "CsoportTevesBesorolasJavitas" }) }; if (ClaimData.FelhasznaloSzerepkor != Kreta.Enums.SzerepkorTipusEnum.Adminisztrator) { model.SzervezetId = new SzervezetHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetAlkalmazottSzervezetId(ClaimData.FelhasznaloId); } return View("~/Areas/OsztalyCsoport/Views/AktTanevSorolas/CsoportTevesBesorolasJavitas.cshtml", model); } public ActionResult DualisTanuloKileptetes() { if (!Authorization.IsValidDualisTanuloSorolas()) { return Redirect(Url.Action("AccessDenied", "ErrorHandler", new { area = string.Empty })); } var helper = new TanevHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); var data = helper.GetTanevInfo(); var model = new AktTanevCsoportKisorolasModel() { IsFromSzervezet = IsDualisKepzesEnabled, FromUrl = Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = "GetDualisCsoportokList" }), FromChangeEvent = "AktTanevCsoportKisorolasHelper.changeFromCsoport", FromPlaceholder = BesorolasResource.ValasszaKiAForrascsoportot, ToUrl = Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = "GetEmptyData" }), ToChangeEvent = "", ToPlaceholder = "", Zaradek = new SorolasZaradek(ConnectionTypeExtensions.GetSessionConnectionType(), true, Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = "GetZaradekList" })), MinDatum = data.KezdoNap.ToString(), MaxDatum = data.UtolsoNap.ToString(), TanevElsoNapja = data.KezdoNap.Date, GetTanulokListFromUrl = Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = "GetAktivTanevCsoportTanuloi" }), GetTanulokListToUrl = string.Empty, SaveUrl = Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "AktTanevSorolasApi", action = "CsoportKisorolas" }) }; model.Zaradek.IsZaradekKotelezo = false; return View("~/Areas/OsztalyCsoport/Views/AktTanevSorolas/CsoportKisorolas.cshtml", model); } public ActionResult DualisAdminTanariOrarend() { if (!Authorization.IsValidDualisAdminOrarend()) { return Redirect(Url.Action("AccessDenied", "ErrorHandler", new { area = string.Empty })); } var controllerName = Constants.Controllers.AdminTanariOrarend; var systemSettingsHelper = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var model = new AdminTanariOrarendModel { TabList = GetDualisAdminOrarendTabs(controllerName) }; model.IsFromSzervezet = IsDualisKepzesEnabled; var orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); model.HetirendJson = orarendHelper.GetHetirendek(); model.NaptariHetekHetirendJson = orarendHelper.GetNaptariHetekHetirendek(IsDualisKepzesEnabled); model.CalendarMinTime = new TimeSpan(0, 0, 0); model.CalendarMaxTime = new TimeSpan(23, 59, 59); model.CsengetesiRendMinTime = new TimeSpan(); model.CsengetesiRendMaxTime = new TimeSpan(0, 25, 0); ViewBag.napirendStart = model.CalendarMinTime; ViewBag.napirendEnd = model.CalendarMaxTime; model.IsOravegeBeallitasOrahosszAlapjan = systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Orarendi_Elem_Hossz); return View("~/Areas/Orarend/Views/" + controllerName + "/Index.cshtml", model); } public ActionResult DualisAdminOsztalyOrarend() { if (!Authorization.IsValidDualisAdminOrarend()) { return Redirect(Url.Action("AccessDenied", "ErrorHandler", new { area = string.Empty })); } var controllerName = Constants.Controllers.AdminOsztalyOrarend; var model = new AdminOsztalyOrarendModel { TabList = GetDualisAdminOrarendTabs(controllerName) }; model.IsFromSzervezet = IsDualisKepzesEnabled; var orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); model.HetirendJson = orarendHelper.GetHetirendek(); model.NaptariHetekHetirendJson = orarendHelper.GetNaptariHetekHetirendek(IsDualisKepzesEnabled); model.CalendarMinTime = new TimeSpan(0, 0, 0); model.CalendarMaxTime = new TimeSpan(23, 59, 59); model.CsengetesiRendMinTime = new TimeSpan(); model.CsengetesiRendMaxTime = new TimeSpan(0, 25, 0); var systemSettingsHelper = new SystemSettingsHelper(ConnectionTypeExtensions.GetSystemConnectionType()); ViewBag.napirendStart = model.CalendarMinTime; ViewBag.napirendEnd = model.CalendarMaxTime; model.IsOravegeBeallitasOrahosszAlapjan = systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Orarendi_Elem_Hossz); return View("~/Areas/Orarend/Views/" + controllerName + "/Index.cshtml", model); } public ActionResult DualisAdminTeremOrarend() { if (!Authorization.IsValidDualisAdminOrarend()) { return Redirect(Url.Action("AccessDenied", "ErrorHandler", new { area = string.Empty })); } var controllerName = Constants.Controllers.AdminTeremOrarend; var model = new AdminTeremOrarendModel { TabList = GetDualisAdminOrarendTabs(controllerName) }; model.IsFromSzervezet = IsDualisKepzesEnabled; var orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); model.HetirendJson = orarendHelper.GetHetirendek(); model.NaptariHetekHetirendJson = orarendHelper.GetNaptariHetekHetirendek(IsDualisKepzesEnabled); model.CalendarMinTime = new TimeSpan(0, 0, 0); model.CalendarMaxTime = new TimeSpan(23, 59, 59); model.CsengetesiRendMinTime = new TimeSpan(); model.CsengetesiRendMaxTime = new TimeSpan(0, 25, 0); var systemSettingsHelper = new SystemSettingsHelper(ConnectionTypeExtensions.GetSystemConnectionType()); ViewBag.napirendStart = model.CalendarMinTime; ViewBag.napirendEnd = model.CalendarMaxTime; model.IsOravegeBeallitasOrahosszAlapjan = systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Orarendi_Elem_Hossz); return View("~/Areas/Orarend/Views/" + controllerName + "/Index.cshtml", model); } public ActionResult DualisAlkalmazottak() { if (!Authorization.IsValidDualisAlkalmazottak()) { return Redirect(Url.Action("AccessDenied", "ErrorHandler", new { area = string.Empty })); } var model = new AlkalmazottSearchModel { IsFromSzervezet = IsDualisKepzesEnabled, ControllerName = Constants.Controllers.DualisAdminAlkalmazott, ApiControllerName = Constants.ApiControllers.DualisAdminAlkalmazottApi, }; if (ClaimData.FelhasznaloSzerepkor != Kreta.Enums.SzerepkorTipusEnum.Adminisztrator) { model.SzervezetId = new SzervezetHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetAlkalmazottSzervezetId(ClaimData.FelhasznaloId); } model.MunkaugyiAdatokKlebelsbergOrNSZFH = _featureContext.IsEnabled(Core.Constants.FeatureName.MunkaugyiAdatokKlebelsberg) || _featureContext.IsEnabled(Core.Constants.FeatureName.MunkaugyiAdatokNSZFH); model.FeladatEllatasiHelyId = ClaimData.FelhelySzuro; return View("~/Areas/Alkalmazott/Views/Alkalmazott/Index.cshtml", model); } public ActionResult DualisCsoportok(string filter) { if (!Authorization.IsValidDualisCsoportok()) { return Redirect(Url.Action("AccessDenied", "ErrorHandler", new { area = string.Empty })); } var model = CsoportSearchModel.SetFilterCsoportSearchModel(filter); model.SearchFeladatEllatasiHelyId = ClaimData.FelhelySzuro; model.IsFromSzervezet = IsDualisKepzesEnabled; model.ControllerName = Constants.Controllers.DualisAdminCsoport; model.ApiControllerName = Constants.ApiControllers.DualisAdminCsoportApi; model.SearchCsoportTipusId = (int)CsoportTipusEnum.dualis_kepzesi_csoport; if (ClaimData.FelhasznaloSzerepkor != Kreta.Enums.SzerepkorTipusEnum.Adminisztrator) { model.SzervezetId = new SzervezetHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetAlkalmazottSzervezetId(ClaimData.FelhasznaloId); } return View("~/Areas/OsztalyCsoport/Views/Csoport/Index.cshtml", model); } [MvcRolePackageDenyAuthorize(KretaClaimPackages.IsSzakiranyuOktatasertFelelos.ClaimValue)] public ActionResult DualisSzerzodes() { return View("DualisAdminSzerzodes"); } public ActionResult Helyszinek() { if (!Authorization.IsValidDualisHelyszinek()) { return Redirect(Url.Action("AccessDenied", "ErrorHandler", new { area = string.Empty })); } var model = new TeremSearchModel { IsFromSzervezet = IsDualisKepzesEnabled, ControllerName = Constants.Controllers.DualisAdminTerem, ApiControllerName = Constants.ApiControllers.DualisAdminTeremApi, }; if (ClaimData.FelhasznaloSzerepkor != Kreta.Enums.SzerepkorTipusEnum.Adminisztrator) { model.SzervezetId = new SzervezetHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetAlkalmazottSzervezetId(ClaimData.FelhasznaloId); } return View("~/Areas/Intezmeny/Views/Terem/Index.cshtml", model); } public List GetDualisAdminOrarendTabs(string controllerName, CalendarModel calendarModel = null) { var list = new List { new TabStripItemModel { ItemId = "0", ItemName = AdminisztracioResource.Tanorak, Area = "Orarend", Controller = "Dualis" + controllerName, Action = "GetOrarendiOrak", RouteParameters = new Dictionary { { "index", "0" } } }, new TabStripItemModel { ItemId = "1", ItemName = AdminisztracioResource.Napirend, Area = "Orarend", Controller = "Dualis" + controllerName, Action = "GetTanoranKivuliFoglalkozasok", RouteParameters = new Dictionary { { "index", "1" } } }, }; return list; } } }