kreta/KretaWeb/Areas/Orarend/ApiControllers/AdminKozpontiOrakApiController.cs
2024-03-13 00:33:46 +01:00

192 lines
10 KiB
C#

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<OsztalyItemCo> 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<AdminKozpontiOrakRogzitesSelectedModel.DeserializeHelper>(request.data);
List<AdminKozpontiOrakRogzitesSelectedModel> kozpontiOraList = JsonConvert.DeserializeObject<List<AdminKozpontiOrakRogzitesSelectedModel>>(temp.JsonContent);
if (kozpontiOraList == null)
{
return new List<AdminKozpontiOrakOsztalyokGridModel>().ToDataSourceResult();
}
var helper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
IList<AdminKozpontiOrakOrarendiOraCo> 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<AdminKozpontiOrakOrarendiOraCo> 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<AdminKozpontiOrakOrarendiOraCo> 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<AdminKozpontiOrakOrarendiOraCo> 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<AdminKozpontiOrakOrarendiOraCo> 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<AdminKozpontiOrakOrarendiOraCo> 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);
}
}
}