kreta/Kreta.BusinessLogic/Logic/TanuloErtekeles/TanuloErtekelesValidacioWeb.cs
2024-03-13 00:33:46 +01:00

97 lines
4.1 KiB
C#

using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
namespace Kreta.BusinessLogic.Logic.TanuloErtekeles
{
public class TanuloErtekelesValidacioWeb : TanuloErtekelesValidacioBase
{
public TanuloErtekelesValidacioWeb(IConnectionType connectionType) : base(connectionType)
{
}
public void Validate(List<TanuloErtekelesCo> tanuloErtekelesCoList)
{
//NOTE: A validációhoz szükséges közös adatok, minden egyes item-nél benne vannak és ezek megegyeznek, ezért elég ha csak a firstItem-et vizsgáljuk
TanuloErtekelesCo firstItem = tanuloErtekelesCoList.FirstOrDefault();
var tanuloIdList = tanuloErtekelesCoList.Select(x => x.TanuloId).ToList();
//NOTE: Levalidáljuk, hogy van-e egyáltalán menteni való elem!
IsExists(firstItem);
if (!IsValid)
{
return;
}
//NOTE: Levalidáljuk a közös, alap adatokat!
IsValidOsztalyCsoportId(firstItem);
IsValidTipusId(firstItem);
IsValidDatum(firstItem);
List<int> egyszerAdhatoErtekelesTipusIds = EnumExtensions.GetErtekelesTipusDictionaryItems(ConnectionType.TanevId, true).Select(x => x.Id).ToList();
if (!firstItem.IsMagatartasSzorgalom)
{
IsValidSpecialisErtekelesOsztalyzatId(tanuloErtekelesCoList, egyszerAdhatoErtekelesTipusIds, firstItem.TipusId);
IsValidErtekelesFajta(tanuloErtekelesCoList);
IsValidTantargyId(firstItem);
IsValidErtekelesTema(firstItem);
}
else
{
IsValidMagatartasSzorgalomFajta(tanuloErtekelesCoList);
}
if (!IsValid)
{
return;
}
//NOTE: Levalidáljuk a közös, alap adatokra épülő dolgokat!
IsValidDatumIsTanitasiNap(firstItem);
IsValidUtolsoTanitasiNapUtanErtekeles(firstItem);
if (!firstItem.IsMagatartasSzorgalom)
{
IsValidErtekelesModId(firstItem);
}
if (!IsValid)
{
return;
}
DataSet tanuloMentessegValidationDataSet = null;
if (!firstItem.IsMagatartasSzorgalom)
{
var helper = new TanuloErtekelesHelper(ConnectionType);
tanuloMentessegValidationDataSet = helper.ValidateTanuloListTanuloMentesseg(tanuloIdList, firstItem.TantargyId.Value, firstItem.Datum);
}
var osztalyCsoportHelper = new OsztalyCsoportHelper(ConnectionType);
List<TantargyItemCo> tantargyCoList = new TantargyHelper(ConnectionType).GetTantargyCoList();
//NOTE: Levalidáljuk az összes bejövő tanuló értékelést!
foreach (TanuloErtekelesCo tanuloErtekelesCo in tanuloErtekelesCoList)
{
//NOTE: Az egyszer adható tanuló értékelés validációra csak akkor van szükség, ha a tanuló az osztály/csoport tagja.
var isTanuloOsztalyCsoportTagja = Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
return IsValidTanuloOsztalyCsoportTagja(dalHandler, tanuloErtekelesCo, osztalyCsoportHelper);
});
if (isTanuloOsztalyCsoportTagja)
{
IsValidEgyszerAdhatoTanuloErtekeles(firstItem, new List<TanuloErtekelesCo> { tanuloErtekelesCo }, egyszerAdhatoErtekelesTipusIds);
}
if (!firstItem.IsMagatartasSzorgalom)
{
IsValidTanuloMentesseg(tanuloErtekelesCo, tanuloMentessegValidationDataSet);
IsValidErtekelesSzazalek(tanuloErtekelesCo);
IsValidSzorgalomTargykategoriaErtekeles(tanuloErtekelesCo, tantargyCoList);
IsValidErtekelesSzoveg(tanuloErtekelesCo);
}
}
}
}
}