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

202 lines
9.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Results;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Core;
using Kreta.Core.Exceptions;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework.Util;
using Kreta.Resources;
using Kreta.Web.Areas.Orarend.Logic;
using Kreta.Web.Areas.Orarend.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class AdminTanariOrarendApiController : BaseAdminTanariOrarendApiController
{
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveNemKotottMunkaIdo(NemKotottMunkaidoModel model)
{
if (ModelState.IsValid)
{
try
{
model.Kezdet = OrarendiOraLogic.CreateLocalDateTimeBasedOnDateAndTime(model.Datum.Value, model.Kezdet.Value);
model.Veg = OrarendiOraLogic.CreateLocalDateTimeBasedOnDateAndTime(model.Datum.Value, model.Veg.Value);
var customModelState = NemKotottMunkaidoLogic.CheckCustomValidation(ModelState, model);
if (!customModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, customModelState);
}
TanevCO tanevCO;
TanevHelper tanevHelper = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType());
tanevCO = tanevHelper.GetTanevInfo();
NemKotottMunkaidoCO co = NemKotottMunkaidoLogic.ConvertModelToCO(model);
NemKotottMunkaidoHelper helper = new NemKotottMunkaidoHelper(ConnectionTypeExtensions.GetSessionConnectionType());
if (model.Id.HasValue && model.Id > 0)
{
var lista = new List<int>();
switch (model.ModositasiIdoszakTipus)
{
case (int)OraModositasiIdoszakTipus.TeljesIdoszak:
helper.UpdateNemKotottMunkaIdoByGroupId(co, tanevCO.OraFelvetelKezdete + co.Kezdete.TimeOfDay, tanevCO.UtolsoTanitasiNap + co.Vege.TimeOfDay);
break;
case (int)OraModositasiIdoszakTipus.AdottNaptol:
helper.UpdateNemKotottMunkaIdoByGroupId(co, co.Kezdete, tanevCO.UtolsoTanitasiNap + co.Vege.TimeOfDay, Guid.NewGuid().ToString());
break;
case (int)OraModositasiIdoszakTipus.AdottNapig:
helper.UpdateNemKotottMunkaIdoByGroupId(co, tanevCO.OraFelvetelKezdete + co.Kezdete.TimeOfDay, co.Vege, Guid.NewGuid().ToString());
break;
case (int)OraModositasiIdoszakTipus.EgyOra:
helper.UpdateNemKotottMunkaIdoByGroupId(co, co.Kezdete, co.Vege, Guid.NewGuid().ToString());
break;
default:
break;
}
}
else
{
co.GroupId = Guid.NewGuid().ToString();
var lista = new List<DateTime>();
switch (model.ModositasiIdoszakTipus)
{
case (int)OraModositasiIdoszakTipus.TeljesIdoszak:
lista = helper.GetNapokForNemKotottMunkaidoInsert(tanevCO.OraFelvetelKezdete, tanevCO.UtolsoTanitasiNap, co.Kezdete.Date, co.HetirendId);
break;
case (int)OraModositasiIdoszakTipus.AdottNaptol:
lista = helper.GetNapokForNemKotottMunkaidoInsert(co.Kezdete.Date, tanevCO.UtolsoTanitasiNap, co.Kezdete.Date, co.HetirendId);
break;
case (int)OraModositasiIdoszakTipus.AdottNapig:
lista = helper.GetNapokForNemKotottMunkaidoInsert(tanevCO.OraFelvetelKezdete, co.Kezdete.Date, co.Kezdete.Date, co.HetirendId);
break;
case (int)OraModositasiIdoszakTipus.EgyOra:
helper.Insert(co);
break;
default:
break;
}
foreach (var item in lista)
{
co.Kezdete = item.AddHours(co.Kezdete.Hour).AddMinutes(co.Kezdete.Minute);
co.Vege = item.AddHours(co.Vege.Hour).AddMinutes(co.Vege.Minute);
helper.Insert(co);
}
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (BlException ex)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message);
}
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public IHttpActionResult UtkozesValidateNemKotottMunkaido(NemKotottMunkaidoModel model)
{
var hasUtkozes = Logic.NemKotottMunkaidoLogic.CheckUtkozesValidation(model);
int tevekenysegutkozesSystemSetting = Logic.NemKotottMunkaidoLogic.GetTevekenysegUtkozesSystemSetting();
if (tevekenysegutkozesSystemSetting != (int)TevekenysegUtkozesEnum.UtkozesMegengedett && hasUtkozes)
{
if (tevekenysegutkozesSystemSetting == (int)TevekenysegUtkozesEnum.UtkozesNemLehetseges)
{
throw new StatusError(HttpStatusCode.BadRequest, OrarendResource.NemKotottMunkaidoFelviteleNemLehetsegesUtkozesMiatt);
}
return Json(new { Valid = false, Text = string.Format(OrarendResource.NemKotottMunkaidoFelviteleNemLehetsegesUtkozesMiattKerdes) });
}
return Json(new { Valid = true, Text = string.Empty });
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public IHttpActionResult TorlesValidateNemKotottMunkaido(NemKotottMunkaidoModel model)
{
var naplozottNemkotottMunkaidoSzam = NemKotottMunkaidoLogic.GetNaplozottNemkotottMunkaidoSzamByGroupId(model);
if (naplozottNemkotottMunkaidoSzam > 0)
{
return Json(new { Valid = false, Text = string.Format(OrarendResource.AMuveletSoran0DarabNaplozottNemkotottMunkaido, naplozottNemkotottMunkaidoSzam) });
}
return Json(new { Valid = true, Text = string.Empty });
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteNemKotottMunkaIdo(NemKotottMunkaidoModel model)
{
TanevCO tanevCO;
TanevHelper tanevHelper = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType());
tanevCO = tanevHelper.GetTanevInfo();
model.Kezdet = OrarendiOraLogic.CreateLocalDateTimeBasedOnDateAndTime(model.Datum.Value, model.Kezdet.Value);
model.Veg = OrarendiOraLogic.CreateLocalDateTimeBasedOnDateAndTime(model.Datum.Value, model.Veg.Value);
NemKotottMunkaidoHelper helper = new NemKotottMunkaidoHelper(ConnectionTypeExtensions.GetSessionConnectionType());
List<int> lista = new List<int>();
switch (model.ModositasiIdoszakTipus)
{
case (int)OraModositasiIdoszakTipus.TeljesIdoszak:
lista = helper.GetNapokForNemKotottMunkaidoDelete(tanevCO.OraFelvetelKezdete, tanevCO.UtolsoTanitasiNap, model.GroupId);
break;
case (int)OraModositasiIdoszakTipus.AdottNaptol:
lista = helper.GetNapokForNemKotottMunkaidoDelete(model.Kezdet.Value.Date, tanevCO.UtolsoTanitasiNap, model.GroupId);
break;
case (int)OraModositasiIdoszakTipus.AdottNapig:
lista = helper.GetNapokForNemKotottMunkaidoDelete(tanevCO.OraFelvetelKezdete, model.Kezdet.Value.AddDays(1).Date, model.GroupId);
break;
case (int)OraModositasiIdoszakTipus.EgyOra:
helper.Delete(model.Id.Value, isAdmin: true);
break;
default:
break;
}
foreach (var item in lista)
{
helper.Delete(item, isAdmin: true);
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
public bool IsTanevRendEsemenyNemKotottMunkaido(CalendarModel model)
{
var helper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
return helper.GetVanTanevRendjeEsemenyNemKotottMunkaido(model.Start, model.End);
}
[HttpGet]
public bool EnabledNemKotottMunkaidoRogzitese(DateTime date)
{
var tanevrendHelper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
bool enabledNemKotottMunkaidoRogzitese = tanevrendHelper.EnabledNemKotottMunkaidoRogzitese(date);
return enabledNemKotottMunkaidoRogzitese;
}
}
}