403 lines
20 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|