using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web.Mvc; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Helpers.SystemSettings; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.KretaServer.SystemSettings; using Kreta.Resources; using Kreta.Web.Areas.Intezmeny.Logic; using Kreta.Web.Areas.Orarend.ApiControllers; using Kreta.Web.Areas.Orarend.Logic; using Kreta.Web.Areas.Orarend.Models; using Kreta.Web.Helpers; using Kreta.Web.Helpers.TabStrip; using Kreta.Web.Models.EditorTemplates; using Kreta.Web.Security; namespace Kreta.Web.Areas.Orarend.Controllers { public class BaseAdminOsztalyOrarendController : Controller { [NonAction] public ActionResult GetOrarendiOrak(int index = 0, bool isFromSzervezet = false) { var model = new OrarendiOrakModel { Index = index, IsFromSzervezet = isFromSzervezet }; return View("OrarendiOrak_Tab", model); } [NonAction] public ActionResult GetTanoranKivuliFoglalkozasok(int index = 1, bool isFromSzervezet = false) { var model = new TanariOrarendTanoranKivuliFoglalkozasokModel() { Index = index, IsFromSzervezet = isFromSzervezet }; return View("TanoranKivuliFoglalkozasok_Tab", model); } [NonAction] public ActionResult OpenNewOrarendiOraPopUp(OsztalyOrarendModel model, bool isFromSzervezet = false) { var ocsHelper = new OsztalyCsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var isMentor = ocsHelper.IsMentorCsoport(model.OsztalyId); if (model.CalendarModel.OraType == CalendarOraTypeEnum.UresOra) { var ds = ocsHelper.GetOsztalyCsoportokWithGroup(); var csoportTipusEnum = (int)CsoportTipusEnum.iskolai_csoport_tanorai_celu_; foreach (DataRow dr in ds.Tables[0].Rows) { if (int.Parse(dr["ID"].ToString()) == model.OsztalyId && !string.IsNullOrWhiteSpace(SDAConvert.ToString(dr["CsoportTipusa"]))) { csoportTipusEnum = int.Parse(dr["CsoportTipusa"].ToString()); } } var csoportTipus = new AdatszotarHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetCsoportTipusList().SingleOrDefault(x => x.Id == csoportTipusEnum); var isOrarendiElemHosszAlapjan = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetSystemSettingValue(RendszerBeallitasTipusEnum.Orarendi_Elem_Hossz); if (csoportTipus != null && csoportTipus.OraPerc.HasValue && (isOrarendiElemHosszAlapjan || isFromSzervezet || isMentor)) { model.CalendarModel.End = model.CalendarModel.Start.AddMinutes(csoportTipus.OraPerc.Value); } } var oom = GetNewOrarendiOraModel(model.CalendarModel, false, isFromSzervezet, isMentor: isMentor); oom.TTFModel.OsztalyID = model.OsztalyId; if (isMentor) { oom.TTFModel.TanarID = ocsHelper.GetCsoportByCsoportId(model.OsztalyId).CsoportvezetoId; } var list = new List { new TabStripItemModel { ItemId = "1", ItemName = OrarendResource.TanoraAdatai, Model = oom, PartialViewName = "TanoraAdatok_Bevitel_Osztaly", IsActive = true } }; if (!isFromSzervezet) { list.Add(new TabStripItemModel { ItemId = "2", ItemName = TantargyResource.TabSpecialisAdatok, Model = oom, PartialViewName = "SpecialisAdatok_Bevitel" }); } oom.OrarendiOraTabList = list; var tanevrendHelper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var isDateHasTanevrend = tanevrendHelper.HasTanevRendjeEsemeny(model.CalendarModel.Start.Date, model.OsztalyId); var pm = new PopUpModel(oom, "OrarendiOra_Bevitel"); pm = pm.AddBtn(pm, "newOrarendiOraCancel", AdminisztracioResource.Megsem, "OrarendiOrak.newOrarendiOraCancel"); pm = pm.AddBtn(pm, "EgyOraHozzaadasaSave", OrarendResource.AddOneDay, "OrarendiOrak.EgyOraHozzaadasaSave"); if (isFromSzervezet || !isDateHasTanevrend) { pm = pm.AddBtn(pm, "OrarendhezSave", OrarendResource.AddAllDay, "OrarendiOrak.OrarendhezSave"); } if (!isDateHasTanevrend && !isFromSzervezet) { pm = pm.AddBtn(pm, "EttolHettolSave", OrarendResource.AddFrom, "OrarendiOrak.EttolHettolSave"); pm = pm.AddBtn(pm, "EddigHetigSave", OrarendResource.AddTo, "OrarendiOrak.EddigHetigSave"); } return PartialView(Constants.General.PopupView, pm); } [NonAction] public ActionResult OpenModifyOrarendiOraPopUp(CalendarModel model, bool isFromSzervezet = false) { var oom = GetModifyOrarendiOraModel(model, false, isFromSzervezet); var isEgyOra = oom.OraErvenyessegKezdete.Value.Date == oom.OraErvenyessegVege.Value.Date; var tanevrendHelper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var isDateHasTanevrend = tanevrendHelper.HasTanevRendjeEsemeny(oom.ErvenyessegiIdo.Date, oom.OsztalyCsoportId); var pm = new PopUpModel(oom, "OrarendiOra_Mod_Bevitel"); pm = pm.AddBtn(pm, "modCancel", AdminisztracioResource.Megsem, "OrarendiOrak.modCancel"); pm = pm.AddBtn(pm, "tovabbiOrarendiOraFelvetele", OrarendResource.AddAgain, "OrarendiOrak.tovabbiOrarendiOraFelvetele"); if (!isDateHasTanevrend) { pm = pm.AddBtn(pm, "modOrarendiOraDeleteDay", OrarendResource.DeleteOneDay, "OrarendiOrak.modOrarendiOraDeleteDayConfirmWindow", "pull-left"); if (!isFromSzervezet) { pm = pm.AddBtn(pm, "modOrarendiOraDeleteFrom", OrarendResource.DeleteFrom, "OrarendiOrak.modOrarendiOraDeleteFromConfirmWindow", "pull-left"); pm = pm.AddBtn(pm, "modOrarendiOraDeleteTo", OrarendResource.DeleteTo, "OrarendiOrak.modOrarendiOraDeleteToConfirmWindow", "pull-left"); } pm = pm.AddBtn(pm, "modOrarendiOraDelete", OrarendResource.DeleteAll, "OrarendiOrak.modOrarendiOraDeleteConfirmWindow", "pull-left"); pm = pm.AddBtn(pm, "modOrarendiOraSaveDay", OrarendResource.ModSaveOneDay, "OrarendiOrak.modOrarendiOraSaveDay", secondLine: true, "pull-left"); if (!isFromSzervezet) { pm = pm.AddBtn(pm, "modOrarendiOraSaveFrom", OrarendResource.ModSaveFrom, "OrarendiOrak.modOrarendiOraSaveFrom", secondLine: true, "pull-left"); pm = pm.AddBtn(pm, "modOrarendiOraSaveTo", OrarendResource.ModSaveTo, "OrarendiOrak.modOrarendiOraSaveTo", secondLine: true, "pull-left"); } pm = pm.AddBtn(pm, "modOrarendiOraSave", OrarendResource.ModAllSave, "OrarendiOrak.modOrarendiOraSaveTanev", secondLine: true, "pull-left"); } else { //Bármikor lehessen egy órát törölni pm = pm.AddBtn(pm, "modOrarendiOraDeleteDay", OrarendResource.DeleteOneDay, "OrarendiOrak.modOrarendiOraDeleteDayConfirmWindow", "pull-left"); if (isEgyOra) { pm = pm.AddBtn(pm, "modOrarendiOraSaveDay", OrarendResource.ModSaveOneDay, "OrarendiOrak.modOrarendiOraSaveDay", "pull-left"); } } return PartialView(Constants.General.PopupView, pm); } [NonAction] public ActionResult OpenNewFoglalkozasokOraPopUp(CalendarModel model, bool isFromSzervezet = false, bool isMentor = false) { var oom = GetNewOrarendiOraModel(model, true, isFromSzervezet, isMentor: isMentor); var list = new List { new TabStripItemModel { ItemId = "1", ItemName = OrarendResource.TanoraAdatai, Model = oom, PartialViewName = "TanoraAdatok_Bevitel_Osztaly", IsActive = true } }; if (!isFromSzervezet) { list.Add(new TabStripItemModel { ItemId = "2", ItemName = TantargyResource.TabSpecialisAdatok, Model = oom, PartialViewName = "SpecialisAdatok_Bevitel" }); } oom.OrarendiOraTabList = list; var helper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var isDateHasTanevrend = helper.HasTanevRendjeEsemeny(oom.ErvenyessegiIdo.Date, oom.OsztalyCsoportId); var pm = new PopUpModel(oom, "OrarendiOra_Bevitel"); pm = pm.AddBtn(pm, "newOrarendiOraCancel", AdminisztracioResource.Megsem, "Foglalkozasok.newFoglalkozasCancel"); pm = pm.AddBtn(pm, "EgyOraHozzaadasaSave", OrarendResource.AddOneDay, "Foglalkozasok.EgyOraHozzaadasaSave"); if (!isDateHasTanevrend && !isFromSzervezet) { pm = pm.AddBtn(pm, "EttolHettolSave", OrarendResource.AddFrom, "Foglalkozasok.EttolHettolSave"); pm = pm.AddBtn(pm, "EddigHetigSave", OrarendResource.AddTo, "Foglalkozasok.EddigHetigSave"); } if (isFromSzervezet || !isDateHasTanevrend) { pm = pm.AddBtn(pm, "OrarendhezSave", OrarendResource.AddAllDay, "Foglalkozasok.OrarendhezSave"); } return PartialView(Constants.General.PopupView, pm); } [NonAction] public ActionResult OpenModifyFoglalkozasokOraPopUp(CalendarModel model, bool isFromSzervezet = false) { var oom = GetModifyOrarendiOraModel(model, true, isFromSzervezet); var tanevrendHelper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var isDateHasTanevrend = tanevrendHelper.HasTanevRendjeEsemeny(oom.ErvenyessegiIdo.Date, oom.OsztalyCsoportId); var pm = new PopUpModel(oom, "OrarendiOra_Mod_Bevitel"); pm = pm.AddBtn(pm, "modFoglalkozasCancel", AdminisztracioResource.Megsem, "Foglalkozasok.modFoglalkozasCancel"); pm = pm.AddBtn(pm, "tovabbiFoglalkozasFelvetele", OrarendResource.AddAgain, "Foglalkozasok.tovabbiFoglalkozasFelvetele"); if (!isDateHasTanevrend) { pm = pm.AddBtn(pm, "modFoglalkozasDeleteDay", OrarendResource.DeleteOneDay, "Foglalkozasok.modFoglalkozasDeleteDayConfirmWindow", "pull-left"); if (!isFromSzervezet) { pm = pm.AddBtn(pm, "modFoglalkozasDeleteFrom", OrarendResource.DeleteFrom, "Foglalkozasok.modFoglalkozasDeleteFromConfirmWindow", "pull-left"); pm = pm.AddBtn(pm, "modFoglalkozasDeleteTo", OrarendResource.DeleteTo, "Foglalkozasok.modFoglalkozasDeleteToConfirmWindow", "pull-left"); } pm = pm.AddBtn(pm, "modFoglalkozasDelete", OrarendResource.DeleteAll, "Foglalkozasok.modFoglalkozasDeleteConfirmWindow", "pull-left"); pm = pm.AddBtn(pm, "modFoglalkozasSaveDay", OrarendResource.ModSaveOneDay, "Foglalkozasok.modFoglalkozasSaveDay", secondLine: true, "pull-left"); if (!isFromSzervezet) { pm = pm.AddBtn(pm, "modFoglalkozasSaveFrom", OrarendResource.ModSaveFrom, "Foglalkozasok.modFoglalkozasSaveFrom", secondLine: true, "pull-left"); pm = pm.AddBtn(pm, "modFoglalkozasSaveTo", OrarendResource.ModSaveTo, "Foglalkozasok.modFoglalkozasSaveTo", secondLine: true, "pull-left"); } pm = pm.AddBtn(pm, "modFoglalkozasSave", OrarendResource.ModAllSave, "Foglalkozasok.modFoglalkozasSaveTanev", secondLine: true, "pull-left"); } else { pm = pm.AddBtn(pm, "modFoglalkozasDeleteDay", OrarendResource.DeleteOneDay, "Foglalkozasok.modFoglalkozasDeleteDayConfirmWindow", "pull-left"); } return PartialView(Constants.General.PopupView, pm); } public string GetOrarendiOraWindowTitle(CalendarModel model) { var oom = new OrarendiOraModel { ErvenyessegiIdoSzoveg = string.Format(SDAFormat.Format[SDAFormat.FormatType.ShortDate], model.Start) }; OrarendiOraLogic.SetHetNapja(oom, model.Start.ToLocalTime().DayOfWeek); var api = new AdminTanariOrarendApiController(); int oraszam = api.GetOraszam(model.EventId, model.OraType); return string.Format(" [{0} - {1}: {2}. óra]", oom.ErvenyessegiIdoSzoveg, oom.HetNapjaSzoveg, oraszam); } public string GetFoglalkozasWindowTitle(CalendarModel model) { var oom = new OrarendiOraModel { ErvenyessegiIdoSzoveg = string.Format(SDAFormat.Format[SDAFormat.FormatType.ShortDate], model.Start) }; OrarendiOraLogic.SetHetNapja(oom, model.Start.ToLocalTime().DayOfWeek); return string.Format(" [{0} - {1}]", oom.ErvenyessegiIdoSzoveg, oom.HetNapjaSzoveg); } private OrarendiOraModel GetNewOrarendiOraModel(CalendarModel model, bool isTanoranKivuliFoglalkozas, bool isFromSzervezet = false, bool isMentor = false) { var oom = new OrarendiOraModel { IsTanoranKivuliFoglalkozas = isTanoranKivuliFoglalkozas, OraKezdete = model.Start.ToLocalTime(), OraVege = model.End.ToLocalTime(), Sorszamozando = true, ErvenyessegiIdoSzoveg = string.Format(SDAFormat.Format[SDAFormat.FormatType.ShortDate], model.Start.ToLocalTime()), ErvenyessegiIdo = model.Start.ToLocalTime(), OraErvenyessegKezdete = model.Start, ValasztottDatum = model.Start, OraErvenyessegVege = !isFromSzervezet ? model.End : (DateTime?)null, CsengetesiRendOraID = model.EventId, HetirendID = (int)HetiRendTipusEnum.MindegyikHet, Hetirend = HetiRendTipusEnum.MindegyikHet.GetDisplayName(ClaimData.SelectedTanevID.Value) }; if (!isTanoranKivuliFoglalkozas) { OrarendiOraLogic.SetCsengetesiRendAndOraszam(oom); } oom.OrarendiElemekRogzitesenekElofeltetele = SystemSettingsManager.GetSystemSettingValue(RendszerBeallitasTipusEnum.orarendi_elemek_rogzitesenek_elofeltetele, ClaimData.IntezmenyAzonosito, ClaimData.SelectedTanevID.Value); OrarendiOraLogic.SetHetNapja(oom, oom.ErvenyessegiIdo.DayOfWeek); oom.HetirendList = OrarendiOraLogic.GetAktualHetirendList(); oom.IsEgyediNap = isFromSzervezet ? TanevRendjeLogic.IsEgyediNapByDate(model.Start.Date) : !isFromSzervezet; oom.IsFromSzervezet = isFromSzervezet; oom.IsMentorOra = isMentor; return oom; } private OrarendiOraModel GetModifyOrarendiOraModel(CalendarModel model, bool isTanoranKivuliFoglalkozas, bool isFromSzervezet = false) { var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()) { GridParameters = null }; var ooco = orarendiOraHelper.GetOrarendiOraById(model.EventId); var tanarId = orarendiOraHelper.GetTanarIdByOrarendiOra(model.EventId); var tfco = new TantargyFelosztasCO { OsztalyCsoportID = ooco.OsztalyCsoportId.Value, TantargyID = ooco.TantargyId.Value }; var oom = ConvertCoToModel(ooco, tanarId, tfco); oom.IsTanoranKivuliFoglalkozas = isTanoranKivuliFoglalkozas; oom.IsModification = true; oom.ModificationDate = model.Start; oom.ErvenyessegiIdoSzoveg = string.Format(SDAFormat.Format[SDAFormat.FormatType.ShortDateAndTime], oom.OraErvenyessegKezdete.Value); oom.OrarendiOraTabList = OrarendiOraLogic.GetModOrarendiOraTabs(oom, AdminOrarendTipusEnum.Osztaly.ToString(), isFromSzervezet); oom.OraKezdete = ooco.OraKezdete; oom.OraVege = ooco.OraVege; oom.ErvenyessegiIdo = model.Start; var api = new AdminTanariOrarendApiController(); oom.HetirendList = api.GetHetirendList(); oom.OsztalyCsoportId = ooco.OsztalyCsoportId; oom.IsEgyediNap = isFromSzervezet ? TanevRendjeLogic.IsEgyediNapByDate(model.Start.Date) : !isFromSzervezet; oom.IsFromSzervezet = isFromSzervezet; oom.OrarendiElemekRogzitesenekElofeltetele = SystemSettingsManager.GetSystemSettingValue(RendszerBeallitasTipusEnum.orarendi_elemek_rogzitesenek_elofeltetele, ClaimData.IntezmenyAzonosito, ClaimData.SelectedTanevID.Value); return oom; } private OrarendiOraModel ConvertCoToModel(OrarendiOraCO ooco, int tanarId, TantargyFelosztasCO tfco) { var model = new OrarendiOraModel { ID = ooco.ID, CsengetesiRendOraID = ooco.CsengetesiRendOraID, CsengetesiRendID = ooco.CsengetesiRendID, HetirendID = ooco.Hetirend, Hetirend = ooco.Hetirend > 0 ? ooco.Hetirend.GetDisplayName(ClaimData.SelectedTanevID.Value) : string.Empty, TeremID = ooco.TeremID, OraErvenyessegKezdete = ooco.OraErvenyessegKezdete, OraErvenyessegVege = ooco.OraErvenyessegVege, Oraszam = ooco.Oraszam, Bontott = ooco.Bontott, Differencialt = ooco.Differencialt, Drama = ooco.Drama, HetNapja = ooco.HetNapja, IKTTanora = ooco.IKTTanora, IPRTanora = ooco.IPRTanora, Kooperativ = ooco.Kooperativ, Meres = ooco.Meres, MindennaposTestneveles = ooco.MindennaposTestneveles, NemSzakrendszeruOra = ooco.NemSzakrendszeruOra, NemzetisegiOra = ooco.NemzetisegiOra, IsFelnottoktatasiSzerzodes = ooco.IsFelnottoktatasiSzerzodes, OnlineOra = ooco.OnlineOra, ParhuzamosOra = ooco.ParhuzamosOra, Sorszamozando = ooco.Sorszamozando, TAMOPOra = ooco.TAMOPOra, KIPOra = ooco.KIPOra, VEKOP73317 = ooco.VEKOP73317, KAPOra = ooco.KAPOra, Tiop = ooco.Tiop, Tulora = ooco.Tulora, IsModification = ooco.IsModification, HetNapjaSzoveg = ooco.HetNapja.GetDisplayName(ClaimData.SelectedTanevID.Value), Multikulturalis = ooco.Multikulturalis, EFOP32317 = ooco.EFOP32317, KomplexOra = ooco.KomplexOra, GINOP623 = ooco.GINOP623, EFOP31716EselyteremtesAKoznevelesben = ooco.EFOP31716EselyteremtesAKoznevelesben, EFOP33717 = ooco.EFOP33717, TIOP11112120120001 = ooco.TIOP11112120120001, DFHT = ooco.DFHT, Rahangolodas = ooco.Rahangolodas, Testmozgas = ooco.Testmozgas, Muveszet = ooco.Muveszet, Eletgyakorlat = ooco.Eletgyakorlat, Logika = ooco.Logika, TeOrad = ooco.TeOrad, DigitalisAlapProgram = ooco.DigitalisAlapProgram, EFOP23517201700038Miapalya = ooco.EFOP23517201700038Miapalya, TanevTananyaganakIsmetlese = ooco.TanevTananyaganakIsmetlese, TanevTananyaganakKiegeszitese = ooco.TanevTananyaganakKiegeszitese, TanulokDigitalisKeszsegfejlesztese = ooco.TanulokDigitalisKeszsegfejlesztese, Projektmunka = ooco.Projektmunka, TanulokKompenzaciosIraskeszsegFejlesztese = ooco.TanulokKompenzaciosIraskeszsegFejlesztese, TanulokKompenzaciosOlvasasiKepessegFejlesztese = ooco.TanulokKompenzaciosOlvasasiKepessegFejlesztese, TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese = ooco.TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese, TanulokNyelviKepessegenekKompenzaciosFejlesztese = ooco.TanulokNyelviKepessegenekKompenzaciosFejlesztese, TanulokOnmegismeresenekSegitese = ooco.TanulokOnmegismeresenekSegitese, TanulokOnallosagraNevelese = ooco.TanulokOnallosagraNevelese, TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese = ooco.TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese, TanulokOrientaciosTamogatasa = ooco.TanulokOrientaciosTamogatasa, TanulokSzocialitasanakFejlesztese = ooco.TanulokSzocialitasanakFejlesztese, TanulokTovabbhaladasatElokeszitoTevekenysegek = ooco.TanulokTovabbhaladasatElokeszitoTevekenysegek, PedagogusAltalJelzettEgyeniEsetkezeles = ooco.PedagogusAltalJelzettEgyeniEsetkezeles, ProjektmunkaTamogatasa = ooco.ProjektmunkaTamogatasa, DigitalisKeszsegfejlesztes = ooco.DigitalisKeszsegfejlesztes, KozossegiMunkaTamogatasa = ooco.KozossegiMunkaTamogatasa, TanoraElokeszitesenekTamogatasa = ooco.TanoraElokeszitesenekTamogatasa, TanoraLebonyolitasanakTamogatasa = ooco.TanoraLebonyolitasanakTamogatasa, NapkozisTevekenysegKeretebenEgyeniFejlesztes = ooco.NapkozisTevekenysegKeretebenEgyeniFejlesztes, IsEgybefuggoGyakorlat = ooco.IsEgybefuggoGyakorlat, TTFModel = new TTFModel { FoglalkozasID = ooco.FoglalkozasID, TanarID = tanarId, Oraszam = (int)tfco.Oraszam, OsztalyID = tfco.OsztalyCsoportID, TantargyID = tfco.TantargyID, Nev = !string.IsNullOrWhiteSpace(tfco.Nev) ? tfco.Nev : string.Empty }, }; return model; } } }