192 lines
10 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|