using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Web.Mvc; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Helpers.SystemSettings; using Kreta.BusinessLogic.Interfaces; using Kreta.BusinessLogic.Security; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Framework; using Kreta.Resources; 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; using Newtonsoft.Json; namespace Kreta.Web.Areas.Orarend.Controllers { [MvcRoleClaimsAuthorize(true)] [MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue)] [MvcRolePackageAuthorize(KretaClaimPackages.Ellenorzo.ClaimValue)] public class InformaciokOrarendController : Controller { private readonly IFileServiceHelper fileServiceHelper; private IKretaAuthorization Authorization { get; } public InformaciokOrarendController(IKretaAuthorization authorization, IFileServiceHelper fileServiceHelper) { Authorization = authorization ?? throw new ArgumentNullException(nameof(authorization)); this.fileServiceHelper = fileServiceHelper ?? throw new ArgumentNullException(nameof(fileServiceHelper)); } [MvcRolePackageAuthorize(KretaClaimPackages.Ellenorzo.ClaimValue, KretaClaimPackages.CsokkentettGondviselo.ClaimValue)] public ActionResult Index() { var model = new InformaciokOrarendModel(); var helper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var hetesekHelper = new HetesekHelper(ConnectionTypeExtensions.GetSessionConnectionType()); model.HetirendJson = helper.GetHetirendek(); model.NaptariHetekHetirendJson = helper.GetNaptariHetekHetirendek(); var systemSettingsHelper = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()); if (ClaimData.IsTanuloOrGondviselo && systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.hetesek_megjelenitese_az_elektronikus_ellenorzoben)) { List osztalyCsoportIdList = new TanuloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetTanuloOsztalyIdList(ClaimData.FelhasznaloId); var hetHelper = new NaptariHetHelper(ConnectionTypeExtensions.GetSessionConnectionType()); model.AktualisHetSorszam = hetHelper.GetNaptariHetSorszamByDate(DateTime.Now); if (osztalyCsoportIdList.Any()) { var tanulok = hetesekHelper.GetHetesSzovegHetsorszammal(osztalyCsoportIdList); var serializerSettings = new JsonSerializerSettings(); serializerSettings.StringEscapeHandling = StringEscapeHandling.EscapeNonAscii; model.HetesekJson = JsonConvert.SerializeObject(tanulok, serializerSettings); model.HetesekJson = model.HetesekJson.Replace("\x7F", "\\u007f"); } } var co = helper.GetCalendarMinMax(); model.CalendarMinTime = co.CalendarMin; model.CalendarMaxTime = co.CalendarMax; model.IsOraTemaTooltip = systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Tanora_Tema_Az_Ellenorzoben); return View("Index", model); } [HttpPost] public ActionResult GetOrarendEvent(int eventId, bool isTanitasiOra_BOOL, DateTime haziFeladatRogzitesDatuma, int? tanuloId = null, string megoldva = null) { CalendarModel calendar = new CalendarModel(); calendar.EventId = eventId; calendar.OraType = isTanitasiOra_BOOL ? CalendarOraTypeEnum.TanitasiOra : CalendarOraTypeEnum.OrarendiOra; calendar.Start = haziFeladatRogzitesDatuma; return OrarendEvent(calendar, tanuloId, megoldva); } public ActionResult OrarendEvent(CalendarModel calendarModel, int? tanuloId = null, string megoldva = null) { if (calendarModel.OraType == CalendarOraTypeEnum.TanevRendjeEsemeny || calendarModel.OraType == CalendarOraTypeEnum.UresOra) { return null; } var model = new InformaciokOra(); var pm = new PopUpModel(model, "OraAdatok_Info"); model.TabList = GetDetailTabs(calendarModel, tanuloId, megoldva); pm = pm.AddCancelBtn(pm, "InformaciokOrarend.detailOraInfoCancel"); return PartialView(Constants.General.PopupView, pm); } public List GetDetailTabs(CalendarModel calendarModel, int? tanuloId = null, string megoldva = null) { List list = new List(); list.Add(new TabStripItemModel() { ItemId = "1", ItemName = StringResourcesUtil.GetString(3331) /*Óra adatai*/, Area = "Orarend", Controller = "InformaciokOrarend", Action = "GetOraAdatok", RouteParameters = new Dictionary() { { "Id", calendarModel.EventId.ToString() }, { "EventType", ((int)calendarModel.OraType).ToString() }, { "Date" , calendarModel.Start.Date.ToString() } } }); var routeParameters = new Dictionary() { { "Id", calendarModel.EventId.ToString() }, { "EventType", ((int)calendarModel.OraType).ToString() }, { "Date" , calendarModel.Start.Date.ToString() } }; if (tanuloId != null) routeParameters.Add("TanuloId", tanuloId.ToString()); if (!string.IsNullOrWhiteSpace(megoldva)) routeParameters.Add("Megoldva", megoldva.ToString()); list.Add(new TabStripItemModel() { ItemId = "2", ItemName = OrarendResource.HaziFeladat, Area = "Orarend", Controller = "InformaciokOrarend", Action = "GetHaziFeladat_Tab", RouteParameters = routeParameters }); return list; } public ActionResult GetHaziFeladat_Tab(int id, CalendarOraTypeEnum eventType, DateTime date, int? tanuloId = null, string megoldva = null) { if (!Authorization.IsValidEvent(id, eventType, date)) { throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.NincsJogaAzOldalMegtekintesehez); } var model = GetHaziFeladatok(id, eventType, date); return PartialView("TanuloHaziFeladat_Tab", model); } public ActionResult GetOraAdatok(int id, CalendarOraTypeEnum eventType, DateTime date) { if (!Authorization.IsValidEvent(id, eventType, date)) { throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.NincsJogaAzOldalMegtekintesehez); } var model = GetOraAdatai(id, eventType, date); return PartialView("Info_TanuloOraAdatok_Tab", model); } private InformaciokOraAdatai GetOraAdatai(int eventId, CalendarOraTypeEnum eventType, DateTime date) { int? orarendiOraId = null; int? tanitasiOraId = null; var model = new InformaciokOraAdatai(); model.IsTanora = eventType == CalendarOraTypeEnum.TanitasiOra; if (model.IsTanora) { tanitasiOraId = eventId; MulasztasHelper h = new MulasztasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); var mulasztas = h.GetTanuloTanoraiMulasztasa(ClaimData.FelhasznaloId, tanitasiOraId.Value); model.MulasztasText = string.IsNullOrWhiteSpace(mulasztas) ? "-" : mulasztas; } else { orarendiOraId = eventId; } var helper = new TanuloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); var adatok = helper.GetTanuloOraAdatai(orarendiOraId, tanitasiOraId, date); var openBoardHelper = new OpenBoardHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType(), fileServiceHelper); // Helyettesítés csak akkor látható tanulónál, ha be van kapcsolva a rendszerbeállításokba, vagy már naplózott az óra. var isHelyettesitesLathato = new SystemSettingsHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetSystemSettingValue(RendszerBeallitasTipusEnum.helyettesites_lathatosaga_az_ellenorzoben); model.IsHelyettesitoTanarLathato = isHelyettesitesLathato || model.IsTanora; model.Targy = adatok.Targy; model.HelyettesitoTanar = adatok.HelyettesitoTanar; model.Megtartott = adatok.Megtartott; model.OsztalyNev = adatok.OsztalyNev; model.Tanar = adatok.Tanar; model.Tema = adatok.Tema; model.Terem = adatok.Terem; model.Oraszam = adatok.Oraszam; model.Datum = date.ToShortDateString(); model.SzamonkeresMegnevezes = adatok.SzamonkeresMegnevezes; model.SzamonkeresMod = adatok.SzamonkeresMod; model.OraTartam = string.Format("{0} - {1}", adatok.OraKezdet, adatok.OraVege); model.OpenBoardFiles = openBoardHelper.GetFeltoltottFajlokToTanuloOraAdat(date, orarendiOraId, tanitasiOraId); return model; } private TanuloHaziFeladatTabModel GetHaziFeladatok(int eventId, CalendarOraTypeEnum oraType, DateTime date) { try { return new TanuloHaziFeladatTabModel(new DktFeladatHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetHaziFeladatTabCo(eventId, oraType, date, ClaimData.IsTanuloOrGondviselo)); } catch (Exception e) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAMuveletSoran) { UnHandledException = e }; } } } }