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

403 lines
20 KiB
C#

using System.Collections.Generic;
using System.Data;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Core;
using Kreta.Core.Exceptions;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Resources;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Adminisztracio.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class HelyettesitesekKezeleseApiController : ApiController
{
public HelyettesitesBevitelModel GetHelyettesitesBevitelData(int helyettesitesId)
{
var dataSet = new HelyettesitesHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetHelyettesitesDataById(helyettesitesId);
DataRow row = dataSet.Tables[0].Rows[0];
var model = new HelyettesitesBevitelModel
{
HelyettesitesBevitelHelyettesitesId = helyettesitesId,
HelyettesitesBevitelGroupId = SDAConvert.ToNullableInt32(row["C_GROUPID"].ToString()),
HelyettesitesBevitelTanarId = int.Parse(row["C_HELYETTESTANAROKID"].ToString()),
HelyettesitesBevitelTanarNev = row["C_NYOMTATASINEV"].ToString(),
HelyettesitesBevitelHelyettesitesTipusId = int.Parse(row["C_HELYETTESITESTIPUS"].ToString()),
HelyettesitesBevitelHelyettesitesOka = row["C_HELYETTESITESOKA"].ToString()
};
return model;
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage InsertHelyettesites(HelyettesitesBevitelModel model)
{
if (ModelState.IsValid && model.HelyettesitesBevitelTanarId.HasValue)
{
var connectionType = ConnectionTypeExtensions.GetSessionConnectionType();
var helper = new HelyettesitesHelper(connectionType);
var hetHelper = new NaptariHetHelper(connectionType);
var uzenetekHelper = new UzenetekHelper(connectionType);
var orarendHelper = new OrarendHelper(connectionType);
var sorszam = hetHelper.GetNaptariHetSorszamByDate(model.HelyettesitesBevitelOraKezdeteDate.Date);
if (model.HelyettesitesBevitelCalendarOraType == CalendarOraTypeEnum.TanoranKivuliNaplozottFoglalkozas)
{
throw new StatusError(HttpStatusCode.BadRequest, OrarendResource.NaplozottOrahozNemVehetoFelHelyettesites);
}
bool mustSendEmail = helper.GetUserHelyettesitesProfilData(model.HelyettesitesBevitelTanarId.Value);
if (model.HelyettesitesBevitelHelyettesitesGyakorisagTipus == (int)HelyettesitesGyakorisagTipusEnum.Egyedi)
{
HelyettesitesResultCO helyettesitesResultCo = helper.SaveHelyettesites(
model.HelyettesitesBevitelCalendarEventId,
model.HelyettesitesBevitelTanarId.Value,
model.HelyettesitesBevitelHelyettesitesTipusId,
model.HelyettesitesBevitelHelyettesitesOka,
sorszam,
model.HelyettesitesBevitelOraKezdeteDate.Date,
model.IsTuloraMentes);
if (helyettesitesResultCo.ErrorId.IsEntityId())
{
throw new StatusError(HttpStatusCode.BadRequest, StringResourcesUtil.GetString(helyettesitesResultCo.ErrorId.Value));
}
if (helyettesitesResultCo.HelyettesitesId.IsEntityId() && mustSendEmail)
{
SendEmailCo sendEmailCo = uzenetekHelper.GetHelyettesitesSendEmailCo(helyettesitesResultCo.HelyettesitesId.Value);
uzenetekHelper.SendEmail(sendEmailCo);
}
}
else
{
List<HelyettesitesResultCO> helyettesitesResultCoList = helper.SaveGroupHelyettesites(
model.HelyettesitesBevitelCalendarEventId,
model.HelyettesitesBevitelTanarId.Value,
model.HelyettesitesBevitelHelyettesitesTipusId,
model.HelyettesitesBevitelHelyettesitesOka,
sorszam,
model.HelyettesitesBevitelOraKezdeteDate.Date,
model.HelyettesitesBevitelTartosHelyettesitesVegeDate.Value,
model.IsTuloraMentes);
if (helyettesitesResultCoList.Count == 1 && helyettesitesResultCoList[0].ErrorId.IsEntityId())
{
throw new StatusError(HttpStatusCode.BadRequest, StringResourcesUtil.GetString(helyettesitesResultCoList[0].ErrorId.Value));
}
foreach (var helyettesitesResultCo in helyettesitesResultCoList)
{
if (helyettesitesResultCo.HelyettesitesId.IsEntityId() && mustSendEmail)
{
SendEmailCo sendEmailCo = uzenetekHelper.GetHelyettesitesSendEmailCo(helyettesitesResultCo.HelyettesitesId.Value);
uzenetekHelper.SendEmail(sendEmailCo);
}
}
}
orarendHelper.GenerateTeljesOrarend();
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage UpdateSingleHelyettesites(HelyettesitesBevitelModel model)
{
if (ModelState.IsValid && model.HelyettesitesBevitelHelyettesitesId.HasValue && model.HelyettesitesBevitelTanarId.HasValue)
{
var connectionType = ConnectionTypeExtensions.GetSessionConnectionType();
var helper = new HelyettesitesHelper(connectionType);
var uzenetekHelper = new UzenetekHelper(connectionType);
var orarendHelper = new OrarendHelper(connectionType);
var originalHelyettesito = helper.GetHelyettesitesEmailDataById(model.HelyettesitesBevitelHelyettesitesId.Value);
if (originalHelyettesito.HelyettesitoID != model.HelyettesitesBevitelTanarId.Value)
{
bool originalMustSendEmail = helper.GetUserHelyettesitesProfilData(originalHelyettesito.HelyettesitoID);
if (originalMustSendEmail)
{
SendEmailCo sendEmailCo = uzenetekHelper.GetHelyettesitesTorlesSendEmailCo(model.HelyettesitesBevitelHelyettesitesId.Value);
uzenetekHelper.SendEmail(sendEmailCo);
}
}
HelyettesitesResultCO helyettesitesResultCo = helper.UpdateHelyettesitoTanar(
model.HelyettesitesBevitelCalendarEventId,
model.HelyettesitesBevitelHelyettesitesId.Value,
model.HelyettesitesBevitelTanarId.Value,
model.HelyettesitesBevitelHelyettesitesTipusId,
model.HelyettesitesBevitelHelyettesitesOka,
model.HelyettesitesBevitelOraKezdeteDate.Date,
null,
model.IsTuloraMentes);
if (helyettesitesResultCo.ErrorId.IsEntityId())
{
throw new StatusError(HttpStatusCode.BadRequest, StringResourcesUtil.GetString(helyettesitesResultCo.ErrorId.Value));
}
bool mustSendEmail = helper.GetUserHelyettesitesProfilData(model.HelyettesitesBevitelTanarId.Value);
if (helyettesitesResultCo.HelyettesitesId.IsEntityId() && mustSendEmail)
{
SendEmailCo sendEmailCo = uzenetekHelper.GetHelyettesitesSendEmailCo(model.HelyettesitesBevitelHelyettesitesId.Value);
uzenetekHelper.SendEmail(sendEmailCo);
}
orarendHelper.GenerateTeljesOrarend(model.HelyettesitesBevitelCalendarEventId);
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage UpdateGroupHelyettesites(HelyettesitesBevitelModel model)
{
if (ModelState.IsValid && model.HelyettesitesBevitelHelyettesitesId.HasValue && model.HelyettesitesBevitelGroupId.HasValue && model.HelyettesitesBevitelTanarId.HasValue)
{
var helper = new HelyettesitesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var uzenetekHelper = new UzenetekHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var helyettesitesDataSet = helper.GetHelyettesitesDataSetByGroupId(model.HelyettesitesBevitelGroupId.Value);
var helyettesitesResultCoList = new List<HelyettesitesResultCO>();
foreach (DataRow dataRow in helyettesitesDataSet.Tables[0].Rows)
{
var helyettesitesId = SDAConvert.ToInt32(dataRow["Id"]);
var helyettesitesNapjaDate = SDAConvert.ToDateTime(dataRow["HelyettesitesNapjaDate"]);
if (model.HelyettesitesBevitelOraKezdeteDate.Date <= helyettesitesNapjaDate)
{
var originalHelyettesito = helper.GetHelyettesitesEmailDataById(helyettesitesId);
if (originalHelyettesito.HelyettesitoID != model.HelyettesitesBevitelTanarId.Value)
{
bool originalMustSendEmail = helper.GetUserHelyettesitesProfilData(originalHelyettesito.HelyettesitoID);
if (originalMustSendEmail)
{
SendEmailCo sendEmailCo = uzenetekHelper.GetHelyettesitesTorlesSendEmailCo(model.HelyettesitesBevitelHelyettesitesId.Value);
uzenetekHelper.SendEmail(sendEmailCo);
}
}
helyettesitesResultCoList.Add(helper.UpdateHelyettesitoTanar(
model.HelyettesitesBevitelCalendarEventId,
helyettesitesId,
model.HelyettesitesBevitelTanarId.Value,
model.HelyettesitesBevitelHelyettesitesTipusId,
model.HelyettesitesBevitelHelyettesitesOka,
model.HelyettesitesBevitelOraKezdeteDate.Date,
model.HelyettesitesBevitelHelyettesitesId,
model.IsTuloraMentes));
bool mustSendEmail = helper.GetUserHelyettesitesProfilData(model.HelyettesitesBevitelTanarId.Value);
foreach (var helyettesitesResultCo in helyettesitesResultCoList)
{
if (helyettesitesResultCo.HelyettesitesId.IsEntityId() && mustSendEmail)
{
SendEmailCo sendEmailCo = uzenetekHelper.GetHelyettesitesSendEmailCo(helyettesitesResultCo.HelyettesitesId.Value);
uzenetekHelper.SendEmail(sendEmailCo);
}
}
}
else
{
helper.ClearHelyettesitesGroupId(helyettesitesId);
}
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public IHttpActionResult ValidateDeleteHelyettesites(HelyettesitesBevitelModel model)
{
var helper = new HelyettesitesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
List<string> textList = helper.GetNemkotottMunkaidoByHelyettesitesHibakListaja(model.HelyettesitesBevitelHelyettesitesId, model.HelyettesitesBevitelGroupId, model.HelyettesitesBevitelOraKezdeteDate);
textList.Add(CommonResource.BiztosanTorli);
string result = string.Join("<br />", textList);
return Json(new { Text = result });
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteSingleHelyettesites(HelyettesitesBevitelModel model)
{
if (ModelState.IsValid && model.HelyettesitesBevitelHelyettesitesId.HasValue && model.HelyettesitesBevitelTanarId.HasValue)
{
var connectionType = ConnectionTypeExtensions.GetSessionConnectionType();
var helper = new HelyettesitesHelper(connectionType);
var orarendHelper = new OrarendHelper(connectionType);
Dictionary<int, int> nemKotottMunkaidoDictionary = helper.GetNemkotottMunkaidoByHelyettesitesTorleshez(model.HelyettesitesBevitelHelyettesitesId, model.HelyettesitesBevitelGroupId, model.HelyettesitesBevitelOraKezdeteDate);
int? nemKotottmunkaidoId = nemKotottMunkaidoDictionary.Count > 0 && nemKotottMunkaidoDictionary.TryGetValue(model.HelyettesitesBevitelHelyettesitesId.Value, out int value) ? value : (int?)null;
Delete(helper, model.HelyettesitesBevitelHelyettesitesId.Value, model.HelyettesitesBevitelTanarId.Value, nemKotottmunkaidoId);
orarendHelper.GenerateTeljesOrarend();
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteGroupHelyettesites(HelyettesitesBevitelModel model)
{
if (ModelState.IsValid && model.HelyettesitesBevitelGroupId.HasValue && model.HelyettesitesBevitelTanarId.HasValue)
{
var connectionType = ConnectionTypeExtensions.GetSessionConnectionType();
var helper = new HelyettesitesHelper(connectionType);
var orarendHelper = new OrarendHelper(connectionType);
Dictionary<int, int> nemKotottMunkaidoDictionary = helper.GetNemkotottMunkaidoByHelyettesitesTorleshez(model.HelyettesitesBevitelHelyettesitesId, model.HelyettesitesBevitelGroupId, model.HelyettesitesBevitelOraKezdeteDate);
var helyettesitesDataSet = helper.GetHelyettesitesDataSetByGroupId(model.HelyettesitesBevitelGroupId.Value);
foreach (DataRow dataRow in helyettesitesDataSet.Tables[0].Rows)
{
var helyettesitesId = SDAConvert.ToInt32(dataRow["Id"]);
var helyettesitesNapjaDate = SDAConvert.ToDateTime(dataRow["HelyettesitesNapjaDate"]);
if (model.HelyettesitesBevitelOraKezdeteDate.Date <= helyettesitesNapjaDate)
{
int? nemKotottmunkaidoId = nemKotottMunkaidoDictionary.Count > 0 && nemKotottMunkaidoDictionary.TryGetValue(helyettesitesId, out int value) ? value : (int?)null;
Delete(helper, helyettesitesId, model.HelyettesitesBevitelTanarId.Value, nemKotottmunkaidoId);
}
else
{
helper.ClearHelyettesitesGroupId(helyettesitesId);
}
}
orarendHelper.GenerateTeljesOrarend();
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
private void Delete(HelyettesitesHelper helper, int helyettesitesId, int tanarId, int? nemKotottMunkaidoId = null)
{
bool mustSendEmail = helper.GetUserHelyettesitesProfilData(tanarId);
var uzenetekHelper = new UzenetekHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
SendEmailCo sendEmailCo = mustSendEmail ? uzenetekHelper.GetHelyettesitesTorlesSendEmailCo(helyettesitesId) : null;
helper.DeleteHelyettesites(helyettesitesId);
orarendHelper.GenerateTeljesOrarend();
var nemkotottmunkaidoHelper = new NemKotottMunkaidoHelper(ConnectionTypeExtensions.GetSessionConnectionType());
if (nemKotottMunkaidoId.IsEntityId())
nemkotottmunkaidoHelper.Delete(nemKotottMunkaidoId.Value, isAdmin: true);
if (mustSendEmail)
{
uzenetekHelper.SendEmail(sendEmailCo);
}
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveNemMegtartottHelyettesites(NemMegtartottHelyettesitesBevitelModel model)
{
try
{
new TanoraHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SaveAdminNemMegtartottOra(
model.HelyettesitesBevitelCalendarEventId.Value,
model.HelyettesitesBevitelOraKezdeteDate.Value,
model.HelyettesitesBevitelOraVegeDate.Value,
model.HelyettesitesBevitelHelyettesitesOka);
}
catch (BlException e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message);
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage NemMegtartottOraTorlese(NemMegtartottHelyettesitesBevitelModel model)
{
try
{
var helper = new TanoraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
TanoraCO tanoraCo = helper.GetTanorakAdatok(model.HelyettesitesBevitelCalendarEventId.Value);
if (!tanoraCo.AdminAltalKiirt)
{
return new HttpResponseMessage(HttpStatusCode.BadRequest);
}
helper.NaplozasTorlese(model.HelyettesitesBevitelCalendarEventId.Value, true);
var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
orarendiOraHelper.OrarendValtozasCacheMentes(tanoraCo.OrarendiOra, tanoraCo.OraKezd);
}
catch (BlException e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message) { UnHandledException = e };
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
[HttpPost]
public bool GetHelyettesitoEmailCim(int userId)
{
string emailCim = new HelyettesitesHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetHelyettesitoTanarEmailCim(userId);
return !string.IsNullOrWhiteSpace(emailCim);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveOracsere(OracsereModel model)
{
OracsereValidationCO oracsereValidacio;
try
{
oracsereValidacio = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SaveOracsere(model.OracsereOrarendiOraId, model.OracsereOrarendiOraDatum, model.CalendarOrarendiOraId, model.CalendarOrarendiOraDatum, ClaimData.FelhasznaloId, model.IsPrevalidation, model.IsTeremcsere);
}
catch (BlException e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message);
}
if (!model.IsPrevalidation)
{
oracsereValidacio.WarningMessage = string.Empty;
}
return Request.CreateResponse(HttpStatusCode.OK, oracsereValidacio, Configuration.Formatters.JsonFormatter);
}
}
}