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