using System; using System.Collections.Generic; using System.Data; using System.Net; using System.Net.Http; using System.Web.Http; using System.Web.Http.Results; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Security; using Kreta.Core; using Kreta.Core.Exceptions; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Framework.Util; 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.Areas.Orarend.ApiControllers { [ApiRoleClaimsAuthorize(true)] [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public class AdminTanariOrarendApiController : BaseAdminTanariOrarendApiController { [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage SaveNemKotottMunkaIdo(NemKotottMunkaidoModel model) { if (ModelState.IsValid) { try { model.Kezdet = OrarendiOraLogic.CreateLocalDateTimeBasedOnDateAndTime(model.Datum.Value, model.Kezdet.Value); model.Veg = OrarendiOraLogic.CreateLocalDateTimeBasedOnDateAndTime(model.Datum.Value, model.Veg.Value); var customModelState = NemKotottMunkaidoLogic.CheckCustomValidation(ModelState, model); if (!customModelState.IsValid) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, customModelState); } TanevCO tanevCO; TanevHelper tanevHelper = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType()); tanevCO = tanevHelper.GetTanevInfo(); NemKotottMunkaidoCO co = NemKotottMunkaidoLogic.ConvertModelToCO(model); NemKotottMunkaidoHelper helper = new NemKotottMunkaidoHelper(ConnectionTypeExtensions.GetSessionConnectionType()); if (model.Id.HasValue && model.Id > 0) { var lista = new List(); switch (model.ModositasiIdoszakTipus) { case (int)OraModositasiIdoszakTipus.TeljesIdoszak: helper.UpdateNemKotottMunkaIdoByGroupId(co, tanevCO.OraFelvetelKezdete + co.Kezdete.TimeOfDay, tanevCO.UtolsoTanitasiNap + co.Vege.TimeOfDay); break; case (int)OraModositasiIdoszakTipus.AdottNaptol: helper.UpdateNemKotottMunkaIdoByGroupId(co, co.Kezdete, tanevCO.UtolsoTanitasiNap + co.Vege.TimeOfDay, Guid.NewGuid().ToString()); break; case (int)OraModositasiIdoszakTipus.AdottNapig: helper.UpdateNemKotottMunkaIdoByGroupId(co, tanevCO.OraFelvetelKezdete + co.Kezdete.TimeOfDay, co.Vege, Guid.NewGuid().ToString()); break; case (int)OraModositasiIdoszakTipus.EgyOra: helper.UpdateNemKotottMunkaIdoByGroupId(co, co.Kezdete, co.Vege, Guid.NewGuid().ToString()); break; default: break; } } else { co.GroupId = Guid.NewGuid().ToString(); var lista = new List(); switch (model.ModositasiIdoszakTipus) { case (int)OraModositasiIdoszakTipus.TeljesIdoszak: lista = helper.GetNapokForNemKotottMunkaidoInsert(tanevCO.OraFelvetelKezdete, tanevCO.UtolsoTanitasiNap, co.Kezdete.Date, co.HetirendId); break; case (int)OraModositasiIdoszakTipus.AdottNaptol: lista = helper.GetNapokForNemKotottMunkaidoInsert(co.Kezdete.Date, tanevCO.UtolsoTanitasiNap, co.Kezdete.Date, co.HetirendId); break; case (int)OraModositasiIdoszakTipus.AdottNapig: lista = helper.GetNapokForNemKotottMunkaidoInsert(tanevCO.OraFelvetelKezdete, co.Kezdete.Date, co.Kezdete.Date, co.HetirendId); break; case (int)OraModositasiIdoszakTipus.EgyOra: helper.Insert(co); break; default: break; } foreach (var item in lista) { co.Kezdete = item.AddHours(co.Kezdete.Hour).AddMinutes(co.Kezdete.Minute); co.Vege = item.AddHours(co.Vege.Hour).AddMinutes(co.Vege.Minute); helper.Insert(co); } } return new HttpResponseMessage(HttpStatusCode.OK); } catch (BlException ex) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message); } } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public IHttpActionResult UtkozesValidateNemKotottMunkaido(NemKotottMunkaidoModel model) { var hasUtkozes = Logic.NemKotottMunkaidoLogic.CheckUtkozesValidation(model); int tevekenysegutkozesSystemSetting = Logic.NemKotottMunkaidoLogic.GetTevekenysegUtkozesSystemSetting(); if (tevekenysegutkozesSystemSetting != (int)TevekenysegUtkozesEnum.UtkozesMegengedett && hasUtkozes) { if (tevekenysegutkozesSystemSetting == (int)TevekenysegUtkozesEnum.UtkozesNemLehetseges) { throw new StatusError(HttpStatusCode.BadRequest, OrarendResource.NemKotottMunkaidoFelviteleNemLehetsegesUtkozesMiatt); } return Json(new { Valid = false, Text = string.Format(OrarendResource.NemKotottMunkaidoFelviteleNemLehetsegesUtkozesMiattKerdes) }); } return Json(new { Valid = true, Text = string.Empty }); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public IHttpActionResult TorlesValidateNemKotottMunkaido(NemKotottMunkaidoModel model) { var naplozottNemkotottMunkaidoSzam = NemKotottMunkaidoLogic.GetNaplozottNemkotottMunkaidoSzamByGroupId(model); if (naplozottNemkotottMunkaidoSzam > 0) { return Json(new { Valid = false, Text = string.Format(OrarendResource.AMuveletSoran0DarabNaplozottNemkotottMunkaido, naplozottNemkotottMunkaidoSzam) }); } return Json(new { Valid = true, Text = string.Empty }); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage DeleteNemKotottMunkaIdo(NemKotottMunkaidoModel model) { TanevCO tanevCO; TanevHelper tanevHelper = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType()); tanevCO = tanevHelper.GetTanevInfo(); model.Kezdet = OrarendiOraLogic.CreateLocalDateTimeBasedOnDateAndTime(model.Datum.Value, model.Kezdet.Value); model.Veg = OrarendiOraLogic.CreateLocalDateTimeBasedOnDateAndTime(model.Datum.Value, model.Veg.Value); NemKotottMunkaidoHelper helper = new NemKotottMunkaidoHelper(ConnectionTypeExtensions.GetSessionConnectionType()); List lista = new List(); switch (model.ModositasiIdoszakTipus) { case (int)OraModositasiIdoszakTipus.TeljesIdoszak: lista = helper.GetNapokForNemKotottMunkaidoDelete(tanevCO.OraFelvetelKezdete, tanevCO.UtolsoTanitasiNap, model.GroupId); break; case (int)OraModositasiIdoszakTipus.AdottNaptol: lista = helper.GetNapokForNemKotottMunkaidoDelete(model.Kezdet.Value.Date, tanevCO.UtolsoTanitasiNap, model.GroupId); break; case (int)OraModositasiIdoszakTipus.AdottNapig: lista = helper.GetNapokForNemKotottMunkaidoDelete(tanevCO.OraFelvetelKezdete, model.Kezdet.Value.AddDays(1).Date, model.GroupId); break; case (int)OraModositasiIdoszakTipus.EgyOra: helper.Delete(model.Id.Value, isAdmin: true); break; default: break; } foreach (var item in lista) { helper.Delete(item, isAdmin: true); } return new HttpResponseMessage(HttpStatusCode.OK); } public bool IsTanevRendEsemenyNemKotottMunkaido(CalendarModel model) { var helper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); return helper.GetVanTanevRendjeEsemenyNemKotottMunkaido(model.Start, model.End); } [HttpGet] public bool EnabledNemKotottMunkaidoRogzitese(DateTime date) { var tanevrendHelper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); bool enabledNemKotottMunkaidoRogzitese = tanevrendHelper.EnabledNemKotottMunkaidoRogzitese(date); return enabledNemKotottMunkaidoRogzitese; } } }