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

135 lines
5.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlTypes;
using System.Linq;
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.Logic.TanuloErtekeles;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Framework.Entities;
using Kreta.Framework.Util;
using Kreta.Resources;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.TanuloErtekeles.ApiControllers
{
public abstract class BaseTanuloErtekelesApiController : ApiController
{
protected DataSet GetDetailGridDataBase(int tanuloId, int? tantargyId, bool showToroltElemek, DateTime? datum, int ertekelesMegjelenesFajtaEnumId, int? feladatKategoriaId = null, int? oktatasiNevelesiFeladatId = null, bool isTanuloView = false, GridParameters gridParameters = null, bool isFromSzervezet = false)
{
var helper = new TanuloErtekelesHelper(ConnectionTypeExtensions.GetSessionConnectionType())
{
GridParameters = gridParameters
};
DataSet dataSet = helper.GetTanuloErtekelesDataSetForDetailGrid(
tanuloId,
tantargyId,
showToroltElemek,
isTanuloView,
ClaimData.FelhasznaloId,
ertekelesMegjelenesFajtaEnumId,
datum,
feladatKategoriaId,
oktatasiNevelesiFeladatId,
isFromSzervezet
);
return dataSet;
}
protected HttpResponseMessage SaveTanuloErtekelesList(HttpRequestMessage request, List<TanuloErtekelesCo> tanuloErtekelesCoList, int? szervezetTipusId = null)
{
var validator = new TanuloErtekelesValidacioWeb(ConnectionTypeExtensions.GetSessionConnectionType());
validator.Validate(tanuloErtekelesCoList);
ModelState.AddRange(new Dictionary<string, List<string>> { { "Error", validator.ErrorMessageList } });
if (ModelState.IsValid)
{
try
{
var helper = new TanuloErtekelesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.SaveTanuloErtekelesList(ClaimData.FelhasznaloId, tanuloErtekelesCoList, szervezetTipusId);
}
catch (KretaError ke)
{
SDAServer.Instance.Logger.ExceptionThrown(ke);
ModelState.AddModelError("Error", ke.Message);
}
if (ModelState.IsValid)
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
}
return request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
public HttpResponseMessage DeleteTanuloErtekeles(int id, bool isValid, int? szervezetTipusId = null)
{
if (!isValid)
{
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.AFelhasznalonakNincsMegfeleloJogosultsagaAFunkcioHasznalatahoz);
}
try
{
var helper = new TanuloErtekelesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var naplozarasLogic = new NaplozarasLogic(ConnectionTypeExtensions.GetSessionConnectionType());
var ertekelesCo = helper.GetTanuloErtekelesCoById(id);
if (ertekelesCo.OsztalyCsoportId.HasValue && naplozarasLogic.GetLezartOsztalyokEsBontottCsoportjaik().Contains(ertekelesCo.OsztalyCsoportId.Value))
{
throw new StatusError(HttpStatusCode.BadRequest, TanuloErtekelesResource.AKivalasztottOsztalyNaplojaLezartNemTorolhetErtekelestAzOsztalyTanuloinaknak);
}
helper.DeleteTanuloErtekelesById(id, szervezetTipusId);
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (EntityDeleteFailedException)
{
throw new StatusError(HttpStatusCode.BadRequest, string.Format(StringResourcesUtil.GetString(5490), StringResourcesUtil.GetString(168)) /*A(z) Értékelés nem törölhető, mert egy vagy több kapcsolódása van (kapcsolatok: {1})!*/);
}
catch (Exception e)
{
throw new StatusError(HttpStatusCode.InternalServerError, StringResourcesUtil.GetString(4358) /*Hiba történt törlés közben!*/)
{
UnHandledException = e
};
}
}
protected bool IsTanitasiNap(DateTime date, int? osztalycsoportId)
{
DateTime sqlMinDate = SqlDateTime.MinValue.Value.Date;
DateTime sqlMaxDate = SqlDateTime.MaxValue.Value.Date;
if (date < sqlMinDate || date > sqlMaxDate)
{
throw new OverflowException(string.Format(ErrorResource.ADatumNemLehetKisebbMintVagyNagyobbMint, sqlMinDate.ToShortDateString(), sqlMaxDate.ToShortDateString()));
}
var helper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var osztalyTanevrendjei = helper.GetOsztalycsoportTanevrendje(date, osztalycsoportId ?? 0);
if (osztalyTanevrendjei.Any(x => x.Naptipus == (int)NapTipusEnum.vizsganap))
{
return true;
}
bool result = helper.IsTanitasiNap(date, osztalycsoportId);
return result;
}
}
}