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

177 lines
7.2 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.ModelBinding;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
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.Helpers.Grid;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Naplo.ClaimValue)]
public class SzamonkeresElorejelzesApiController : ApiController
{
[HttpPost]
[ApiRolePackageAuthorize(
KretaClaimPackages.IsKozossegiSzolgalatKezelo.ClaimValue,
KretaClaimPackages.Osztalyfonok.ClaimValue,
KretaClaimPackages.SzuperOsztalyfonok.ClaimValue,
KretaClaimPackages.Adminisztrator.ClaimValue,
KretaClaimPackages.FelhasznaloMunkakoreNemTiltoListas.ClaimValue,
KretaClaimPackages.Naplo.ClaimValue
)]
public DataSourceResult GetSzamonkeresElorejelzesDetailGrid(int oraGroupId, int osztalyCsoportId, DateTime datum, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
var helper = new SzamonkeresElorejelzesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.GridParameters = Converter.GridParameter(request);
SzamonkeresElorejelzesSearchCO co = new SzamonkeresElorejelzesSearchCO
{
OraGroupId = oraGroupId,
Datum = datum,
OsztalyCsoportId = osztalyCsoportId
};
var ds = helper.GetSzamonkeresElorejelzesDetailDataSet(co, isKellKapcsolodoOsztalyok: true);
DataSourceResult result = ds.ToDataSourceResult();
return result;
}
[HttpGet]
[ApiValidateAjaxAntiForgeryToken]
public IHttpActionResult GetModListAndComboItemColor(int? OraGroupId, int? OsztalyCsoportId, DateTime? Datum)
{
var helper = new SzamonkeresElorejelzesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var szamonkeresModIdList = helper.GetModListAndComboItemColorNapiLimithez(OraGroupId, Datum, OsztalyCsoportId, out string backgroundColor);
return Json(new { ErtekelesModList = szamonkeresModIdList, color = backgroundColor });
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public IHttpActionResult ValidateSzamonkeresElorejelzes(SzamonkeresElorejelzesModel model)
{
var szKLogic = new SzamonkeresElorejelzesLogic();
int limit = szKLogic.GetNapiSzamonkeresiLimit;
List<int> ertekelesModokLimithez = szKLogic.GetModokListNapiLimithez;
if (model.ErtekelesModId != null && ertekelesModokLimithez.Contains(model.ErtekelesModId.Value) &&
limit > 0 && ertekelesModokLimithez.Count > 0 && szKLogic.SzamonkeresLimitFigyelmeztetes < 3)
{
var helper = new SzamonkeresElorejelzesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
SzamonkeresElorejelzesSearchCO co = new SzamonkeresElorejelzesSearchCO
{
OraGroupId = model.OraGroupId,
Datum = model.Datum,
NapiSzamonkeresLimit = limit,
OsztalyCsoportId = model.OsztalyCsoportId,
ErtekelesModokLimithez = ertekelesModokLimithez
};
var ds = helper.GetTanulokSzamonkeresElorejelzesei(co);
switch (szKLogic.SzamonkeresLimitFigyelmeztetes)
{
case 1:
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
string msg = string.Format(OrarendResource.FelvitelNemLehetsegesLimit0Miatt, limit) + "<br>";
foreach (DataRow row in ds.Tables[0].Rows)
{
msg += SDAConvert.ToString(row["Nev"]) + " - " + SDAConvert.ToString(row["OsztalyNev"]) + " (" + SDAConvert.ToString(row["SzamonkeresekSzama"]) + ") " + "<br>";
}
throw new StatusError(HttpStatusCode.BadRequest, msg);
}
break;
case 2:
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
string msg = string.Format(OrarendResource.FelvitelNemLehetsegesLimit0MiattKerdes, limit) + "<br>" + "<br>";
foreach (DataRow row in ds.Tables[0].Rows)
{
msg += SDAConvert.ToString(row["Nev"]) + " - " + SDAConvert.ToString(row["OsztalyNev"]) + " (" + SDAConvert.ToString(row["SzamonkeresekSzama"]) + ") " + "<br>";
}
return Json(new { Valid = false, Text = msg });
}
break;
}
}
return Json(new { Valid = true, Text = "" });
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveSzamonkeresElorejelzes(SzamonkeresElorejelzesModel model)
{
ModelState.Merge(model.Validate());
var helper = new SzamonkeresElorejelzesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
SzamonkeresElorejelzesSearchCO co = new SzamonkeresElorejelzesSearchCO
{
OraGroupId = model.OraGroupId,
DatumTol = model.Datum,
DatumIg = model.Datum.Value.AddDays(1),
OsztalyCsoportId = model.OsztalyCsoportId
};
var ds = helper.GetBejelentettSzamonkeresekGrid(co);
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.DuplikaltSzamonkeresElorejelzes);
}
if (ModelState.IsValid)
{
helper.SaveSzamonkeresElorejelzes(model.ToCo(), ClaimData.FelhasznaloId);
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteSzamonkeresElorejelzes(int id)
{
try
{
var helper = new SzamonkeresElorejelzesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.DeleteSzamonkeresElorejelzes(id);
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaATorlesSoran);
}
}
}
}