using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Web.Mvc; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.Extensions; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Helpers.SystemSettings; using Kreta.BusinessLogic.Interfaces; using Kreta.BusinessLogic.Logic.Naplozas; using Kreta.BusinessLogic.Logic.Naplozas.Elokeszites; using Kreta.BusinessLogic.Logic.Naplozas.Validacio; using Kreta.BusinessLogic.Security; using Kreta.Core.Exceptions; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Framework; using Kreta.Web.Areas.Orarend.Logic; using Kreta.Web.Areas.Orarend.Models; using Kreta.Web.Helpers; using Kreta.Web.Helpers.Error; using Kreta.Web.Helpers.TabStrip; using Kreta.Web.Models.EditorTemplates; using Kreta.Web.Security; namespace Kreta.Web.Areas.Orarend.Controllers { [MvcRoleClaimsAuthorize(true)] [MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue, KretaClaimPackages.IsSzirIntezmeny.ClaimValue)] [MvcRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public class AdminNaploEllenorzesController : BaseNaploTanariOrarendController { private readonly IFileServiceHelper fileServiceHelper; public AdminNaploEllenorzesController(IFileServiceHelper fileServiceHelper) { this.fileServiceHelper = fileServiceHelper ?? throw new ArgumentNullException(nameof(fileServiceHelper)); } public ActionResult Index() { var model = new TanariOrarendModelKeresheto(); var orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var tanevHelper = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var systemSettingsHelper = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()); model.IsNemKellNemKotott = systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.kotott_munkaido_nevelesseloktatassal_le_nem_kotott_resz_kezelesenek_tiltasa); var fogadooraMegjelenik = systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Fogadoorak_megjelenitese) && !ClaimData.FelhasznaloSzerepCsomagok.Contains(KretaClaimPackages.IsDualisKepzohelyiOktato.ClaimValue); model.HetirendJson = orarendHelper.GetHetirendek(); model.NaptariHetekHetirendJson = orarendHelper.GetNaptariHetekHetirendek(); model.TanorakServiceAction = "GetAdminNaploEllenorzesTanorakOrarendiOrak"; model.TanoranKivuliFoglalkozasokServiceAction = "GetAdminNaploEllenorzesTanoranKivuliFoglalkozasok"; model.NemKotottMunkaidoServiceAction = "GetAdminNaploEllenorzesNemKotottMunkaido"; model.FogadoorakServiceAction = "GetAdminNaploEllenorzesFogadoora"; model.TanorakCalendarClickJSFunction = "AdminNaploEllenorzesHelper.TanorakCalendarClickEvent"; model.TanoranKivuliFoglalkozasokCalendarClickJSFunction = "AdminNaploEllenorzesHelper.FoglalkozasokCalendarClickEvent"; model.NemKotottMunkaidoCalendarClickJSFunction = "AdminNaploEllenorzesHelper.NemKotottCalendarClickEvent"; model.FogadooraCalendarClickJSFunction = "AdminNaploEllenorzesHelper.FogadooraCalendarClickEvent"; model.TanoranKivuliFoglalkozasokCalendarSelectJSFunction = model.NemKotottMunkaidoCalendarSelectJSFunction = model.FogadooraCalendarSelectJSFunction = "undefined"; var naplozarasLogic = new NaplozarasLogic(ConnectionTypeExtensions.GetSessionConnectionType()); model.LezartOsztalyokEsOsztalybontottCsoportokIdList = naplozarasLogic.GetLezartOsztalyokEsBontottCsoportjaik(); model.RendkivuliTanitasiNapok = tanevHelper.GetTanevRendkivuliNapok(); model.IsShowRogzitottOrak = systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.kotott_munkaido_megjelenitese); #region Calendar megjelenítés 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); #endregion Calendar megjelenítés model.ShowKerdoivPopup = new KerdoivHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetShowKerdoivPopup(ClaimData.IsAlkalmazottPedagogus); model.TabList = GetTanariOrarendTabs(fogadooraMegjelenik); ViewBag.nemKotottMunkaidoStart = systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Nem_kotott_munkaido_megjelenesenek_kezdoidopontja).RoundDownToNearestTargetMinute(15).ToString(); ViewBag.nemKotottMunkaidoEnd = systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Nem_kotott_munkaido_megjelenesenek_zaroidopontja); ViewBag.napirendStart = systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Az_elektronikus_naplo_megjelenesenek_kezdoidopontja).RoundDownToNearestTargetMinute(15).ToString(); ViewBag.napirendEnd = systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Az_elektronikus_naplo_megjelenesenek_zaroidopontja); ViewBag.fogadooraStart = systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Fogado_Ora_Kezdoidopontja).RoundDownToNearestTargetMinute(15).ToString(); ViewBag.fogadooraEnd = systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Fogado_Ora_Zaroidopontja); return View("Index", model); } public ActionResult AdminNaploEllenorzesEvent(CalendarModel calendarModel) { try { var tbm = new TanoraIdBeallitasModel() { calendarModel = calendarModel }; var connectionType = ConnectionTypeExtensions.GetSessionConnectionType(); var tanarSorszamozhat = new SystemSettingsHelper(connectionType).GetSystemSettingValue(RendszerBeallitasTipusEnum.Ora_sorszamozasat_naplozo_pedagogus_eldontheti); var elmaradtTanitasiOraRogzitesenekTiltasa = new SystemSettingsHelper(connectionType).GetSystemSettingValue(RendszerBeallitasTipusEnum.Elmaradt_tanitasi_ora_rogzitesenek_tiltasa); var naploValidacioParameters = new NaploValidacioParameters(calendarModel.Start, ConnectionTypeExtensions.GetSessionConnectionType(), ClaimData.FelhasznaloSzerepkor); var validator = new NaploValidacio(naploValidacioParameters); var co = new NaplozasElokeszitesCo(); calendarModel.ConvertTo(co); var naplozasLogic = new NaplozasElokeszitesLogic(validator, co); var muveletPram = new TanoraMuveletek(ClaimData.FelhasznaloId, calendarModel); var model = new TanoraNaplozasTabok(); var pm = new PopUpModel(model, "NaploEllenorzes"); model.TabList = GetDetailTabs(naplozasLogic, tanarSorszamozhat, elmaradtTanitasiOraRogzitesenekTiltasa); model.TanoraMuveletek = muveletPram; pm.AddCancelBtn(pm, "AdminNaploEllenorzesHelper.windowCancel"); if ((calendarModel.OraType == Enums.ManualEnums.CalendarOraTypeEnum.TanitasiOra || calendarModel.OraType == Enums.ManualEnums.CalendarOraTypeEnum.TanoranKivuliNaplozottFoglalkozas) && naplozasLogic.GetModel.IsElmaradtOra) { pm.Buttons.Add(new Helpers.Modal.ModalButtonModel { Name = "deleteNaplozas", Text = Resources.OrarendResource.NaplozasiAdatokTorlese, EventName = "AdminNaploEllenorzesHelper.deleteNaplozasConfirm" }); } if (calendarModel.OraType == Enums.ManualEnums.CalendarOraTypeEnum.OrarendiOra || calendarModel.OraType == Enums.ManualEnums.CalendarOraTypeEnum.TanoranKivuliFoglalkozas || calendarModel.OraType == Enums.ManualEnums.CalendarOraTypeEnum.TanoranKivuliTevekenyseg) { pm.Buttons.Add(new Helpers.Modal.ModalButtonModel { Name = "updateNemMegtartott", Text = Resources.OrarendResource.NemMegtartottOra, EventName = "AdminNaploEllenorzesHelper.updateNemMegtartottConfirm" }); } return PartialView(Constants.General.PopupView, pm); } catch (BlException e) { throw new StatusError(HttpStatusCode.BadRequest, e.Message); } } public ActionResult AdminNaploEllenorzesNemKotottMunkaidoEvent(CalendarModel calendarModel) { var co = new NaplozasElokeszitesCo(); calendarModel.ConvertTo(co); var muveletPram = new TanoraMuveletek(ClaimData.FelhasznaloId, calendarModel); var model = new TanoraNaplozasTabok(); NemKotottMunkaidoHelper helper = new NemKotottMunkaidoHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var coNkm = helper.GetNemKotottMunkaidoById(calendarModel.EventId); var pm = new PopUpModel(model, "NaploEllenorzes"); model.TabList = new List { new TabStripItemModel { ItemId = "1", ItemName = "Adatok", PartialViewName = "NaploEllenorzesNemKotottMunkaido_Tab", Model = NemKotottMunkaidoLogic.ConvertModelFromCo(coNkm), IsActive = true } }; model.TanoraMuveletek = muveletPram; pm.AddCancelBtn(pm, "AdminNaploEllenorzesHelper.windowCancel"); return PartialView(Constants.General.PopupView, pm); } public ActionResult AdminNaploEllenorzesFogadooraEvent(CalendarModel calendarModel) { var fm = new FogadooraModel(); var isModosithatoFogadoora = false; var helper = new FogadooraHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var fogadooraCo = helper.GetFogadooraById(calendarModel.EventId); fm.Id = fogadooraCo.Id; fm.FogadoOraDatuma = fogadooraCo.FogadoOraKezdete.Date; fm.FogadoOraKezdete = fogadooraCo.FogadoOraKezdete; fm.FogadoOraVege = fogadooraCo.FogadoOraVege; fm.Rendszeresseg = fogadooraCo.Rendszeresseg; fm.TeremId = fogadooraCo.TeremId; fm.JelentkezesekKezelese = (int)FogadooraTipusEnum.Jelentkezheto == fogadooraCo.FogadooraTipusEnumId || (int)FogadooraTipusEnum.JelentkezhetoDarabolt == fogadooraCo.FogadooraTipusEnumId; fm.IsIdosavraOsztas = fogadooraCo.IsIdosavraOsztas; fm.EgysegnyiIdopontok = fogadooraCo.EgysegnyiIdopontok; fm.SelectedOsztalyCsoportIdList = fogadooraCo.SelectedOsztalyCsoportIdList; fm.RendszeresFogadooraElsoDatuma = fogadooraCo.FogadoOraKezdete; fm.RendszeresFogadooraUtolsoDatuma = fogadooraCo.FogadoOraVege; fm.IsEgyAlkalomModosul = false; fm.IsCalendar = true; fm.IsFaliujsagonMegjelenjen = fogadooraCo.IsFaliujsagonMegjelenjen; fm.IsRendszeressegModosithato = false; fm.FaliujsagErvenyessegKezdete = fogadooraCo.FaliujsagErvenyessegKezdete; fm.FaliujsagErvenyessegVege = fogadooraCo.FaliujsagErvenyessegVege; fm.TanevUtolsoNapja = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanevInfo().UtolsoTanitasiNap; var jelentkezettGvDs = helper.GetJelentkezettGondviseloCntByFogadooraId(calendarModel.EventId); if (jelentkezettGvDs.Tables[0].Rows.Count > 0) { fm.VanGvJelentkezes = true; } if (!isModosithatoFogadoora) { fm.TeremNev = new TeremHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTeremNev(fogadooraCo.TeremId); } var rendszeressegDictionary = EnumExtensions.EnumToDictionary(ClaimData.SelectedTanevID.Value); fm.RendszeressegText = rendszeressegDictionary.First(x => x.Key == fogadooraCo.Rendszeresseg.ToString()).Value; var pm = new PopUpModel(fm, "~/Areas/Orarend/Views/TanariOrarend/Fogadoora_Details.cshtml"); pm.AddCancelBtn(pm, "AdminNaploEllenorzesHelper.windowCancel"); return PartialView(Constants.General.PopupView, pm); } private List GetDetailTabs(NaplozasElokeszitesLogic logic, bool tanarSorszamozhat, bool elmaradtTanitasiOraRogzitesenekTiltasa) { List list = new List(); var naplozasModel = new TanoraNaplozas(fileServiceHelper); naplozasModel.Fill(logic.GetModel, tanarSorszamozhat, elmaradtTanitasiOraRogzitesenekTiltasa); list.Add(new TabStripItemModel() { ItemId = "1", ItemName = StringResourcesUtil.GetString(3804) /*Naplózás*/, PartialViewName = "NaploEllenorzesMulasztas_Tab", Model = naplozasModel.Mulasztas, IsActive = true }); list.Add(new TabStripItemModel() { ItemId = "5", ItemName = StringResourcesUtil.GetString(1922) /*Tanóra adatai*/, PartialViewName = "NaploEllenorzesTanora_Tab", Model = naplozasModel.TanoraAdatai, IsActive = false }); return list; } } }