using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; using System.Web.Http.Results; using Kreta.BusinessLogic.Classes.ComboBox; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Security; using Kreta.Core; using Kreta.Core.Exceptions; using Kreta.Enums.ManualEnums; using Kreta.Framework; using Kreta.Resources; using Kreta.Web.Areas.Orarend.Logic; using Kreta.Web.Areas.Orarend.Models; using Kreta.Web.Helpers; using Kreta.Web.Helpers.Error; using Kreta.Web.Security; namespace Kreta.Web.Controllers { [ApiRoleClaimsAuthorize(true)] public class CalendarApiController : ApiController { [ApiRolePackageAuthorize(KretaClaimPackages.Ellenorzo.ClaimValue, KretaClaimPackages.CsokkentettGondviselo.ClaimValue)] public List GetTanuloOrarend(DateTime start, DateTime end) { if (ClaimData.SessionId == null) return null; OrarendHelper orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var result = orarendHelper.GetTanuloOrarend(start, end, ClaimData.FelhasznaloId, ClaimData.FelhasznaloSzerepCsomagok.Contains(KretaClaimPackages.CsokkentettGondviselo.ClaimValue)).Events; return result; } [ApiRolePackageAuthorize(KretaClaimPackages.Naplo.ClaimValue)] public List GetTanariOrarendOrarendiorakEsTanorak(int tanarId, int osztalyCsoportId, int tanuloId, DateTime start, DateTime end, bool isFromSzervezet = false) { if (ClaimData.SessionId == null) return null; OrarendHelper orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var tId = ClaimData.FelhasznaloId; var oId = (osztalyCsoportId >= 0 ? osztalyCsoportId : new int?()); var sId = (tanuloId > 0 ? tanuloId : new int?()); var result = orarendHelper.GetTanariOrarendOrarendiorakEsTanorak(start, end, tId, oId, sId, ClaimData.FelhasznaloSzerepkor, isFromSzervezet: isFromSzervezet, isDualisOktato: ClaimData.IsDualisOktato); result.ConvertToOrarendViewData(); return result.Events; } [ApiRolePackageAuthorize(KretaClaimPackages.CsoportVezeto.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue)] public List GetCsoportVezetoTanorak(int tanarId, int osztalyCsoportId, int tanuloId, DateTime start, DateTime end) { if (ClaimData.SessionId == null) return null; var orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var result = orarendHelper.GetCsoportVezetoTanorak(start, end, osztalyCsoportId, ClaimData.FelhasznaloSzerepkor); result.ConvertToOrarendViewData(); return result.Events; } [ApiRolePackageAuthorize(KretaClaimPackages.CsoportVezeto.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue)] public List GetCsoportVezetoTanorankivuliFoglalkozasok(int tanarId, int osztalyCsoportId, int tanuloId, DateTime start, DateTime end) { if (ClaimData.SessionId == null) return null; var orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var result = orarendHelper.GetCsoportVezetoTanorankivuliFoglalkozasok(start, end, osztalyCsoportId, ClaimData.FelhasznaloSzerepkor).Events; return result; } [ApiRolePackageAuthorize(KretaClaimPackages.Naplo.ClaimValue)] public List GetTanariOrarendTanoranKivuliFoglalkozasok(int tanarId, int osztalyCsoportId, int tanuloId, DateTime start, DateTime end, bool isFromSzervezet = false) { if (ClaimData.SessionId == null) return null; OrarendHelper orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var tId = ClaimData.FelhasznaloId; var oId = (osztalyCsoportId >= 0 ? osztalyCsoportId : new int?()); var sId = (tanuloId > 0 ? tanuloId : new int?()); var result = orarendHelper.GetTanariOrarendTanoranKivuliFoglalkozasok(start, end, tId, oId, sId, ClaimData.FelhasznaloSzerepkor, isFromSzervezet: isFromSzervezet).Events; return result; } [ApiRolePackageAuthorize(KretaClaimPackages.Naplo.ClaimValue)] public List GetTanariOrarendNemKotottMunkaido(int tanarId, DateTime start, DateTime end) { if (ClaimData.SessionId == null) return null; OrarendHelper orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var tId = ClaimData.FelhasznaloId; var result = orarendHelper.GetTanariOrarendNemKotottMunkaido(start, end, tId, ClaimData.FelhasznaloSzerepkor).Events; return result; } [ApiRolePackageAuthorize(KretaClaimPackages.Naplo.ClaimValue)] public List GetOralatogatasOrarend(int tanarId, DateTime start, DateTime end) { if (ClaimData.SessionId == null) return null; OrarendHelper orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var result = orarendHelper.GetOralatogatasOrarend(start, end, tanarId).Events; return result; } [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Dualis_Admin.ClaimValue)] public List GetAdminTanariOrarendOrarendiOrak(int tanarId, int osztalyCsoportId, DateTime start, DateTime end, bool isFromSzervezet = false) { if (ClaimData.SessionId == null) return null; OrarendHelper orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var tId = (tanarId >= 0 ? tanarId : new int?()); var oId = (osztalyCsoportId >= 0 ? osztalyCsoportId : new int?()); var result = orarendHelper.GetAdminTanariOrarendOrarendiOrak(start, end, tId, oId, ClaimData.FelhasznaloSzerepkor, isFromSzervezet); result.ConvertToOrarendViewData(); return result.Events; } [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public List GetAdminKozpontiOrak(DateTime start, DateTime end) { var helper = new AdminKozpontiOrakHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var result = helper.GetAdminKozpontiOrak(start, end); result.ConvertToOrarendViewData(); return result.Events; } [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Dualis_Admin.ClaimValue)] public List GetAdminOsztalyOrarendOrarendiOrak(int osztalyCsoportId, DateTime start, DateTime end, bool isFromSzervezet = false) { if (ClaimData.SessionId == null) return null; OrarendHelper orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var result = orarendHelper.GetAdminOsztalyOrarendOrarendiOrak(start, end, osztalyCsoportId, isFromSzervezet); result.ConvertToOrarendViewData(); return result.Events; } [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Dualis_Admin.ClaimValue)] public List GetAdminTanariOrarendTanoranKivuliFoglalkozasok(int tanarId, int osztalyCsoportId, DateTime start, DateTime end, bool isFromSzervezet = false) { if (ClaimData.SessionId == null) return null; OrarendHelper orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var tId = (tanarId >= 0 ? tanarId : new int?()); var oId = (osztalyCsoportId >= 0 ? osztalyCsoportId : new int?()); var result = orarendHelper.GetAdminTanariOrarendTanoranKivuliFoglalkozasok(start, end, tId, oId, ClaimData.FelhasznaloSzerepkor, isFromSzervezet).Events; return result; } [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Dualis_Admin.ClaimValue)] public List GetAdminOsztalyOrarendTanoranKivuliFoglalkozasok(int osztalyCsoportId, DateTime start, DateTime end, bool isFromSzervezet = false) { if (ClaimData.SessionId == null) return null; OrarendHelper orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var result = orarendHelper.GetAdminOsztalyOrarendTanoranKivuliFoglalkozasok(start, end, osztalyCsoportId, ClaimData.FelhasznaloSzerepkor, isFromSzervezet).Events; return result; } [ApiRolePackageAuthorize(KretaClaimPackages.CsoportVezeto.ClaimValue)] public List GetCsoportVezetoOrarendTanoranKivuliFoglalkozasok(int osztalyCsoportId, DateTime start, DateTime end) { if (ClaimData.SessionId == null) return null; OrarendHelper orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var result = orarendHelper.GetAdminOsztalyOrarendTanoranKivuliFoglalkozasok(start, end, osztalyCsoportId, ClaimData.FelhasznaloSzerepkor, false).Events; return result; } [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public List GetAdminNemKotottMunkaido(int tanarId, DateTime start, DateTime end) { if (ClaimData.SessionId == null) return null; OrarendHelper orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var tId = (tanarId >= 0 ? tanarId : 0); var result = orarendHelper.GetAdminNemKotottMunkaido(start, end, tId, ClaimData.FelhasznaloSzerepkor).Events; return result; } [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public List GetTanoraiHelyettesitesek(int tanarId, DateTime start, DateTime end) { if (ClaimData.SessionId == null) return null; OrarendHelper orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var tId = (tanarId >= 0 ? tanarId : new int?()); var result = orarendHelper.GetTanoraiHelyettesitesek(start, end, tId); result.ConvertToOrarendViewData(); return result.Events; } [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public List GetTanoranKivuliHelyettesitesek(int tanarId, DateTime start, DateTime end) { if (ClaimData.SessionId == null) return null; OrarendHelper orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var tId = (tanarId >= 0 ? tanarId : new int?()); return orarendHelper.GetTanoranKivuliHelyettesitesek(start, end, tId); } [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public List GetAdminNaploEllenorzesTanorakOrarendiOrak(int tanarId, DateTime start, DateTime end, bool isFromSzervezet = false) { if (ClaimData.SessionId == null || !tanarId.IsEntityId()) return null; OrarendHelper orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var tId = (tanarId >= 0 ? tanarId : new int?()); /* Duális oktató jog küldése KRETA2-12558 makkt később ki lehet majd venni */ var result = orarendHelper.GetTanariOrarendOrarendiorakEsTanorak(start, end, tId, null, null, Enums.SzerepkorTipusEnum.Adminisztrator, true, isFromSzervezet: isFromSzervezet, isDualisOktato: ClaimData.IsDualisOktato); result.ConvertToOrarendViewData(); return result.Events; } [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public List GetAdminNaploEllenorzesTanoranKivuliFoglalkozasok(int tanarId, DateTime start, DateTime end, bool isFromSzervezet = false) { if (ClaimData.SessionId == null) return null; OrarendHelper orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var tId = (tanarId >= 0 ? tanarId : new int?()); var result = orarendHelper.GetTanariOrarendTanoranKivuliFoglalkozasok(start, end, tId, null, null, Enums.SzerepkorTipusEnum.Adminisztrator, true, isFromSzervezet); return result.Events; } [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public List GetAdminNaploEllenorzesNemKotottMunkaido(int tanarId, DateTime start, DateTime end) { if (ClaimData.SessionId == null) return null; OrarendHelper orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var tId = (tanarId >= 0 ? tanarId : -1); var result = orarendHelper.GetTanariOrarendNemKotottMunkaido(start, end, tId, Enums.SzerepkorTipusEnum.Adminisztrator, true); return result.Events; } [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public List GetAdminNaploEllenorzesFogadoora(int tanarId, DateTime start, DateTime end) { if (ClaimData.SessionId == null) return null; OrarendHelper orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var tId = (tanarId >= 0 ? tanarId : -1); var result = orarendHelper.GetTanariOrarendFogadoora(start, end, tId, Enums.SzerepkorTipusEnum.Adminisztrator, true); return result.Events; } public List GetTanevRendjeCalendar(DateTime start, DateTime end) { var tanevrendHelper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); return tanevrendHelper.GetTanevRendjeCalendarData(start, end); } public JsonResult> GetTanevHetek() { NaptariHetHelper helper = new NaptariHetHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var dropdownListItems = new List(); var ds = helper.GetNaptariHetList(); var view = ds.Tables[0].DefaultView; view.Sort = "HetSorszama"; foreach (DataRowView rowView in view) { DataRow row = rowView.Row; var sli = new ComboBoxListItem() { Text = row.Field("HetSorszama").ToString() + StringResourcesUtil.GetString(4742) + " (" + row.Field("HetKezdoNapja")/*.AddDays(1)*/.ToString("yyyy.MM.dd.") + " - " + row.Field("HetUtolsoNapja")/*.AddDays(1)*/.ToString("yyyy.MM.dd.") + ")", Value = row.Field("HetKezdoNapja")/*.AddDays(1)*/.ToString("yyyy-MM-dd") }; dropdownListItems.Add(sli); } return Json(dropdownListItems); } [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Dualis_Admin.ClaimValue)] public List GetAdminTeremOrarendOrarendiOrak(int teremId, DateTime start, DateTime end, bool isFromSzervezet = false) { if (ClaimData.SessionId == null) return null; OrarendHelper orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var result = orarendHelper.GetAdminTeremOrarendOrarendiOrak(start, end, teremId, isFromSzervezet); result.ConvertToOrarendViewData(); return result.Events; } [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Dualis_Admin.ClaimValue)] public List GetAdminTeremOrarendTanoranKivuliFoglalkozasok(int teremId, DateTime start, DateTime end, bool isFromSzervezet = false) { if (ClaimData.SessionId == null) return null; OrarendHelper orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var result = orarendHelper.GetAdminTeremOrarendTanoranKivuliFoglalkozasok(start, end, teremId, ClaimData.FelhasznaloSzerepkor, isFromSzervezet).Events; return result; } [ApiRolePackageAuthorize(KretaClaimPackages.Naplo.ClaimValue)] public List GetOrarendKereso(int? tanarId, int? osztalyCsoportId, int? teremId, DateTime start, DateTime end, bool osztalyTanuloOrarendbenNemLatszik = false) { if (ClaimData.SessionId == null) return null; OrarendHelper orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); tanarId = (tanarId >= 0 ? tanarId : new int?()); osztalyCsoportId = (osztalyCsoportId >= 0 ? osztalyCsoportId : new int?()); teremId = (teremId >= 0 ? teremId : new int?()); var result = orarendHelper.GetOrarendKereso(start, end, tanarId, osztalyCsoportId, teremId, ClaimData.FelhasznaloSzerepkor, osztalyTanuloOrarendbenNemLatszik); return result.Events; } [ApiRolePackageAuthorize(KretaClaimPackages.Naplo.ClaimValue)] public List GetTanariOrarendFogadoora(DateTime start, DateTime end) { if (ClaimData.SessionId == null) return null; OrarendHelper orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var tId = ClaimData.FelhasznaloId; var result = orarendHelper.GetTanariOrarendFogadoora(start, end, tId, ClaimData.FelhasznaloSzerepkor).Events; return result; } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage CopyOrarendiElem(CopyOrarendiElemModel model) { try { var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()); OraValidationCo co = OrarendiOraLogic.SetOraValidationCoFromCopyOrarendiElemModel(new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()), model); var utkozesValidationMsg = OrarendiOraLogic.CheckUtkozesValidation(co, "Orarend.successCopy"); if (utkozesValidationMsg.ErrorMsg.Length > 0) { throw new StatusError(HttpStatusCode.BadRequest, utkozesValidationMsg.ErrorMsg); } var orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); int? newId = orarendHelper.CopyOrarendiElem(model.copyId, co.OrarendiOraValidationCo.OraKezdete, co.OrarendiOraValidationCo.Oraszam.Value); if (newId.IsEntityId()) { orarendiOraHelper.OrarendValtozasCacheMentes(newId.Value); } return new HttpResponseMessage(HttpStatusCode.OK); } catch (BlException ex) { throw new StatusError(HttpStatusCode.BadRequest, ex.Message); } } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage PreValidationOnCopyOrarendiElem(CopyOrarendiElemModel model) { var co = OrarendiOraLogic.SetOraValidationCoFromCopyOrarendiElemModel(new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()), model); if (model.oraszam > -1 && co.OrarendiOraValidationCo.OsztalyId.HasValue) { var osztalyCsoportIds = new CsengetesiRendHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetOsztalyCsoportIdsForCsengetesiRend(model.dateFrom, model.oraszam, new List { co.OrarendiOraValidationCo.OsztalyId.Value }); if (!osztalyCsoportIds.Any()) { throw new StatusError(HttpStatusCode.BadRequest, string.Format(OrarendResource.AMasoltOraOsztalyCsoportnakEgyediNap0Datumon, model.dateFrom.ToString(Core.Constants.ToStringPattern.HungarianDate)) + Core.Constants.General.Sortores); } } var utkozesValidationMsg = OrarendiOraLogic.CheckUtkozesValidation(co, "Orarend.successOnPrevalidation();", isPrevalidation: true); if (utkozesValidationMsg.ErrorMsg.Length > 0) { throw new StatusError(HttpStatusCode.BadRequest, utkozesValidationMsg.ErrorMsg); } if (utkozesValidationMsg.Msg.Length > 0) { throw new StatusError(CustomHTTPStatusEnum.WarningMegszakitas, string.Empty) { Json = utkozesValidationMsg }; } return new HttpResponseMessage(HttpStatusCode.OK); } [HttpGet] [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Naplo.ClaimValue)] public JsonResult GetRogzitettOrak(int tanarId, DateTime start) { var orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); (string kotottMunkaidoOra, string nemKotottMunkaidoOra) = orarendHelper.GetRogzitettOrak(tanarId, start); return Json(new RogzitettOraResult { KotottMunkaido = kotottMunkaidoOra, NemKotottMunkaido = nemKotottMunkaidoOra }); } public class RogzitettOraResult { public string KotottMunkaido { get; set; } public string NemKotottMunkaido { get; set; } } } }