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

192 lines
8.7 KiB
C#

using System;
using System.Data;
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.Core;
using Kreta.Core.Exceptions;
using Kreta.Framework;
using Kreta.Resources;
using Kreta.Web.Areas.Tanar.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Security;
using Newtonsoft.Json;
namespace Kreta.Web.Areas.Tanar.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class HelyettesitesekKereseseApiController : ApiController
{
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public DataSourceResult GetHelyettesitesGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))]
DataSourceRequest request)
{
HelyettesitesSearchModel model = JsonConvert.DeserializeObject<HelyettesitesSearchModel>(data);
if (!model.HelyettesitettId.IsEntityId() && model.IdoszakKezdete != null)
{
return new DataSourceResult();
}
HelyettesitesekKereseseCo co = ConvertModelToCo(model);
var helper = new HelyettesitesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.GridParameters = Converter.GridParameter(request);
DataSet tanarOraiDataSet = helper.GetTanarOrai(co);
DataSourceResult result = tanarOraiDataSet.ToDataSourceResult();
return result;
}
public DataSourceResult GetHelyettesitesekAjanlasa(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))]
DataSourceRequest request)
{
HelyettesitesGridModel model = JsonConvert.DeserializeObject<HelyettesitesGridModel>(data);
LehetsegesHelyettesitoTanarokCO co = ConvertGridModelToCo(model);
var helper = new HelyettesitesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.GridParameters = Converter.GridParameter(request);
DataSet tanarListDataSet = helper.GetHelyettesitesekAjanlasa(co);
return tanarListDataSet.ToDataSourceResult();
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage OraElmarad([FromBody] HelyettesitesBeallitasaModel model)
{
if (ModelState.IsValid)
{
var ora = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetOrarendiOraById(model.HelyettesitendoOraID);
try
{
new TanoraHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SaveAdminNemMegtartottOra(
ora.ID.Value,
new DateTime(model.Datum.Year, model.Datum.Month, model.Datum.Day, ora.OraKezdete.Hour, ora.OraKezdete.Minute, ora.OraKezdete.Second),
new DateTime(model.Datum.Year, model.Datum.Month, model.Datum.Day, ora.OraVege.Hour, ora.OraVege.Minute, ora.OraVege.Second), model.HelyettesitesOka);
}
catch (BlException e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message);
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteElmaradtOra(int tanoraId, int helyettesitettOrarendiOraId, DateTime helyettesitettDatum)
{
try
{
var connectionType = ConnectionTypeExtensions.GetActiveSessionConnectionType();
var helper = new TanoraHelper(connectionType);
var orarendHelper = new OrarendHelper(connectionType);
helper.NaplozasTorlese(tanoraId, true);
var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
orarendiOraHelper.OrarendValtozasCacheMentes(helyettesitettOrarendiOraId, helyettesitettDatum);
orarendHelper.GenerateTeljesOrarend(helyettesitettOrarendiOraId);
}
catch (BlException e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message) { UnHandledException = e };
}
catch (Exception e)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAMuveletSoran) { UnHandledException = e };
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage HelyettesitesTorlese([FromBody] HelyettesitesBeallitasaModel model)
{
if (!model.HelyettesitesID.HasValue)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAMuveletSoran);
}
if (ModelState.IsValid)
{
var connectionType = ConnectionTypeExtensions.GetSessionConnectionType();
var helper = new HelyettesitesHelper(connectionType);
var orarendHelper = new OrarendHelper(connectionType);
SendEmailCo sendEmailCo = new UzenetekHelper(connectionType).GetHelyettesitesTorlesSendEmailCo(model.HelyettesitesID.Value);
helper.DeleteHelyettesites(model.HelyettesitesID.Value);
bool mustSendEmail = helper.GetUserHelyettesitesProfilData(model.HelyettesitoTanarID);
if (mustSendEmail)
{
new UzenetekHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).SendEmail(sendEmailCo);
}
orarendHelper.GenerateTeljesOrarend();
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveHelyettesites([FromBody] HelyettesitesBeallitasaModel model)
{
var connectionType = ConnectionTypeExtensions.GetSessionConnectionType();
var hetHelper = new NaptariHetHelper(connectionType);
var hetSorszam = hetHelper.GetNaptariHetSorszamByDate(model.Datum);
var helper = new HelyettesitesHelper(connectionType);
var orarendHelper = new OrarendHelper(connectionType);
bool mustSendEmail = helper.GetUserHelyettesitesProfilData(model.HelyettesitoTanarID);
var helyettesitesResultCo = helper.SaveHelyettesites(model.HelyettesitendoOraID, model.HelyettesitoTanarID, model.HelyettesitesTipusId, model.HelyettesitesOka, hetSorszam, model.Datum.Date, model.IsTuloraMentes);
if (helyettesitesResultCo.ErrorId > 0)
{
throw new StatusError(HttpStatusCode.BadRequest, StringResourcesUtil.GetString(helyettesitesResultCo.ErrorId.Value));
}
if (helyettesitesResultCo.HelyettesitesId.Value > 0 && mustSendEmail)
{
SendEmailCo sendEmailCo = new UzenetekHelper(connectionType).GetHelyettesitesSendEmailCo(helyettesitesResultCo.HelyettesitesId.Value);
new UzenetekHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).SendEmail(sendEmailCo);
}
orarendHelper.GenerateTeljesOrarend(model.HelyettesitendoOraID);
return new HttpResponseMessage(HttpStatusCode.OK);
}
private HelyettesitesekKereseseCo ConvertModelToCo(HelyettesitesSearchModel model)
{
var selectedTanev = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanevInfo();
var co = new HelyettesitesekKereseseCo
{
HelyettesitesKezdete = model.IdoszakKezdete ?? selectedTanev.KezdoNap,
HelyettesitesVege = model.IdoszakVege == null ? selectedTanev.UtolsoNap : model.IdoszakVege.Value.AddDays(1),
HelyettesitettId = model.HelyettesitettId ?? 0
};
return co;
}
private LehetsegesHelyettesitoTanarokCO ConvertGridModelToCo(HelyettesitesGridModel model)
{
var co = new LehetsegesHelyettesitoTanarokCO
{
orarendiOraId = model.HelyettesitettOrarendiOraId,
datum = model.HelyettesitettOraKezdete,
};
return co;
}
}
}