using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; using System.Web.Http.ModelBinding; using Kendo.Mvc.UI; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Security; using Kreta.Enums.ManualEnums; using Kreta.Resources; using Kreta.Web.Areas.Orarend.Logic; using Kreta.Web.Areas.Orarend.Models; using Kreta.Web.Helpers; using Kreta.Web.Helpers.Grid; using Kreta.Web.Security; using Newtonsoft.Json; using HttpPostAttribute = System.Web.Http.HttpPostAttribute; namespace Kreta.Web.Areas.Orarend.ApiControllers { [ApiRoleClaimsAuthorize(true)] [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public class AdminKozpontiOrakApiController : ApiController { public DataSourceResult GetRogzitesGrid(bool isSorszamozando, DateTime? datum = null, int? hanyadikOra = null) { var connectionType = ConnectionTypeExtensions.GetSessionConnectionType(); var helper = new OsztalyHelper(connectionType); List osztalyok = helper.GetOsztalyCoList(); if (datum.HasValue && hanyadikOra.HasValue) { var osztalyCsoportIds = new CsengetesiRendHelper(connectionType).GetOsztalyCsoportIdsForCsengetesiRend(datum.Value, hanyadikOra.Value, osztalyok.Select(x => x.Id)); osztalyok = osztalyok.Where(x => osztalyCsoportIds.Contains(x.Id)).ToList(); } return AdminKozpontiOrakOsztalyokGridModel.MapOsztalyItemCoListToOsztalyokGridModelList(osztalyok, isSorszamozando).ToDataSourceResult(); } [HttpPost] public DataSourceResult GetKozpontiOrabaUtkozoOrarendiOrakGrid(DateTime start, DateTime end, int hanyadikora, bool onlyUtkozoOrak, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] KretaGridDataSourceRequest request) { var temp = JsonConvert.DeserializeObject(request.data); List kozpontiOraList = JsonConvert.DeserializeObject>(temp.JsonContent); if (kozpontiOraList == null) { return new List().ToDataSourceResult(); } var helper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()); IList orarendiOrak = helper.GetOrarendiOrakUtkozesKozpontiOraValidaciohoz(start.ToLocalTime(), end.ToLocalTime(), hanyadikora, AdminKozpontiOrakRogzitesSelectedModel.MapListToKozpontiOrakOrarendiOrakUtkozesCoList(kozpontiOraList, hanyadikora), onlyUtkozoOrak); return AdminKozpontiOrakOsztalyokGridModel.MapOrarendiOrakoListToOsztalyokGridModelList(orarendiOrak).ToDataSourceResult(); } [HttpPost] public DataSourceResult GetOrarendiOrakKopontilagTorleseGrid(DateTime start, DateTime end, int hanyadikora) { var helper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()); IList orarendiOrak = helper.GetOrarendiOrakForSpecificTime(start.ToLocalTime(), end.ToLocalTime(), null, null, hanyadikora); return AdminKozpontiOrakOsztalyokGridModel.MapOrarendiOrakoListToOsztalyokGridModelList(orarendiOrak.Where(i => i.KozpontiOraGroupId == null && i.KozpontilagToroltOraGroupId == null).ToList()).ToDataSourceResult(); } [HttpPost] public DataSourceResult GetOrarendiOrakVisszaallitasaGrid(DateTime start, DateTime end, int hanyadikora) { var helper = new AdminKozpontiOrakHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); IList orarendiOrak = helper.GetToroltOrarendiOrakVisszaallitashoz(start.ToLocalTime(), end.ToLocalTime(), hanyadikora); return AdminKozpontiOrakOsztalyokGridModel.MapOrarendiOrakoListToOsztalyokGridModelList(orarendiOrak).ToDataSourceResult(); } public DataSourceResult GetModositasGrid(DateTime start, DateTime end, int hanyadikora) { var helper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()); IList orarendiOrak = helper.GetGroupedKozpontiOrakForSpecificTime(start.ToLocalTime(), end.ToLocalTime(), start.ToLocalTime(), end.ToLocalTime(), hanyadikora); return AdminKozpontiOrakOsztalyokGridModel.MapOrarendiOrakoListToOsztalyokGridModelList(orarendiOrak).ToDataSourceResult(); } public DataSourceResult GetModositasDetailsGrid(DateTime start, DateTime end, int hanyadikOra, Guid kozpontiOraId) { var helper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()); IList orarendiOrak = helper.GetOrarendiOrakForSpecificTime(start.ToLocalTime(), end.ToLocalTime(), start.ToLocalTime(), end.ToLocalTime(), hanyadikOra, true, kozpontiOraId); return AdminKozpontiOrakOsztalyokGridModel.MapOrarendiOrakoListToOsztalyokGridModelList(orarendiOrak).ToDataSourceResult(); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage CreateKozpontiOra(AdminCreateKozpontiOrakModel model) { var kozpontiOraLogic = new AdminKozpontiOraLogic(); var validationResult = kozpontiOraLogic.CreateOraValidationCoListForKozpontiOrak(model.Start, model.End, model.HanyadikOra, model.KozpontiOrakRogzitesre, model.IsTeremutkozesFigyelese, out var kozpontiOrakList); if (!validationResult.IsValid) { if (validationResult.HasTeremutkozes) { if (validationResult.TeremutkozesSystemSettingsValue == (int)TevekenysegUtkozesEnum.UtkozeskorFigyelmeztetes) { var jsonResult = JsonConvert.SerializeObject(new { isTeremutkozesConfirm = true }); return Request.CreateErrorResponse(HttpStatusCode.BadRequest, jsonResult.ToString()); } } if (!model.OrarendiOrakTorlesre.Any()) { var jsonResult = JsonConvert.SerializeObject(new { isTeremutkozesConfirm = false, errorMessage = !string.IsNullOrWhiteSpace(validationResult.ErrorMessage) ? validationResult.ErrorMessage : KozpontiOrakResource.AzIdopontraMarRogzitettekUgyanezenAdatokkalKozpontiOrat }); return Request.CreateErrorResponse(HttpStatusCode.BadRequest, jsonResult.ToString()); } } var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var result = orarendiOraHelper.HandleSaveKozpontiOraRequest(model.Start.ToLocalTime(), model.OrarendiOrakTorlesre, kozpontiOrakList); if (!result) { return Request.CreateResponse(HttpStatusCode.InternalServerError, false); } return Request.CreateResponse(HttpStatusCode.OK, true); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage DeleteKozpontiOra(AdminKozpontiOrakDeleteKozpontiOrakModel model) { var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()); orarendiOraHelper.DeletOrarendiOra(model.OrarendiOraId, (int)OraModositasiIdoszakTipus.EgyOra, DateTime.Now); return Request.CreateResponse(HttpStatusCode.OK, true); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage DeleteAllKozpontiOraByGroupId(AdminKozpontiOrakDeleteKozpontiOrakModel model) { var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()); orarendiOraHelper.DeleteAllKozpontiOraByGroupId(model.KozpontiOraGroupId, model.Start.ToLocalTime(), model.End.ToLocalTime(), model.HanyadikOra); var helper = new AdminKozpontiOrakHelper(ConnectionTypeExtensions.GetSessionConnectionType()); IList orarendiOrak = helper.GetToroltOrarendiOrakVisszaallitashoz(model.Start.ToLocalTime(), model.End.ToLocalTime(), model.HanyadikOra); bool hasDeletedOrarendiOra = orarendiOrak.Any(i => i.KozpontilagToroltOraGroupId != null); return Request.CreateResponse(HttpStatusCode.OK, hasDeletedOrarendiOra); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage DeleteOrarendiOrak(AdminKozpontiOrakOrarendiOrakIdList model) { var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var result = orarendiOraHelper.DeleteOrarendiOrakKozpontilag(model.OrarendiOrakIdList, model.Start.ToLocalTime()); if (!result) { return Request.CreateResponse(HttpStatusCode.InternalServerError, false); } return Request.CreateResponse(HttpStatusCode.OK, true); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage OrarendiOrakVisszaallitasa(AdminKozpontiOrakOrarendiOrakIdList model) { var kozpontiOraHelper = new AdminKozpontiOrakHelper(ConnectionTypeExtensions.GetSessionConnectionType()); kozpontiOraHelper.OrarendiOrakVisszaallitasa(model.OrarendiOrakIdList); return Request.CreateResponse(HttpStatusCode.OK, true); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage OrarendiOrakVisszaallitasaValidacio(AdminKozpontiOrakOrarendiOrakIdList model) { var kozpontiOraHelper = new AdminKozpontiOrakHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var result = kozpontiOraHelper.OrarendiOrakVisszaallitasaValidacio(model.OrarendiOrakIdList); return Request.CreateResponse(HttpStatusCode.OK, result); } } }