140 lines
6.5 KiB
C#
140 lines
6.5 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;
|
|
using Kreta.Core.ConnectionType;
|
|
using Kreta.Core.Validation.Exceptions;
|
|
using Kreta.Core.Validation.Exceptions.Enum;
|
|
using Kreta.DataAccessManual.Interfaces;
|
|
using Kreta.Resources;
|
|
|
|
namespace Kreta.BusinessLogic.Logic.TanuloErtekeles
|
|
{
|
|
public class TanuloErtekelesValidacioMobil : TanuloErtekelesValidacioBase
|
|
{
|
|
#region Constructors
|
|
|
|
public TanuloErtekelesValidacioMobil(IConnectionType connectionType) : base(connectionType)
|
|
{
|
|
}
|
|
|
|
#endregion Constructors
|
|
|
|
public List<TanuloErtekelesCo> Validate(IDalHandler dalHandler, List<TanuloErtekelesCo> tanuloErtekelesCoList, out List<ValidationExceptionItem> validationExceptionItemList)
|
|
{
|
|
//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)
|
|
{
|
|
ThrowExeption(tanuloErtekelesCoList);
|
|
}
|
|
|
|
//NOTE: Levalidáljuk a közös, alap adatokat!
|
|
IsValidOsztalyCsoportId(firstItem);
|
|
IsValidTanoraiCeluOsztalyCsoport(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)
|
|
{
|
|
ThrowExeption(tanuloErtekelesCoList);
|
|
}
|
|
|
|
//NOTE: Levalidáljuk a közös, alap adatokra épülő dolgokat!
|
|
IsValidDatumIsTanitasiNap(firstItem);
|
|
IsValidUtolsoTanitasiNapUtanErtekeles(firstItem);
|
|
if (!firstItem.IsMagatartasSzorgalom)
|
|
{
|
|
IsValidErtekelesModId(firstItem);
|
|
}
|
|
if (!IsValid)
|
|
{
|
|
ThrowExeption(tanuloErtekelesCoList);
|
|
}
|
|
|
|
validationExceptionItemList = new List<ValidationExceptionItem>();
|
|
var result = new List<TanuloErtekelesCo>();
|
|
|
|
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)
|
|
{
|
|
IsValid = true;
|
|
//IsValidDuplikaltErtekeles(dalHandler, tanuloErtekelesCo); // web-en nincs ilyen vizsgálat és enged teljesen ugyan olyan értékelést menteni
|
|
//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 = 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);
|
|
}
|
|
|
|
if (IsValid)
|
|
{
|
|
result.Add(tanuloErtekelesCo);
|
|
}
|
|
else
|
|
{
|
|
validationExceptionItemList.Add(new ValidationExceptionItem(tanuloErtekelesCo.TanuloId.ToString(), string.Join("; ", ErrorMessageList)));
|
|
ErrorMessageList.Clear();
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
private void ThrowExeption(List<TanuloErtekelesCo> tanuloErtekelesCoList)
|
|
{
|
|
var validationItems = new List<ValidationExceptionItem>();
|
|
foreach (TanuloErtekelesCo tanuloErtekelesCo in tanuloErtekelesCoList)
|
|
{
|
|
validationItems.Add(new ValidationExceptionItem(tanuloErtekelesCo.TanuloId.ToString(), string.Join("; ", ErrorMessageList)));
|
|
}
|
|
|
|
throw new ValidationException(ValidationErrorType.Undefined, TanuloErtekelesResource.HibasErtekelesElem, validationItems.DistinctBy(v => v.Id));
|
|
}
|
|
|
|
private void IsValidDuplikaltErtekeles(IDalHandler dalHandler, TanuloErtekelesCo tanuloErtekelesCo)
|
|
{
|
|
bool isTanuloErtekelt = dalHandler.TanuloErtekelesDal().IsTanuloErtekelt(ConnectionType.IntezmenyId, ConnectionType.TanevId, tanuloErtekelesCo.Datum, tanuloErtekelesCo.ErtekelesModId, tanuloErtekelesCo.TipusId, tanuloErtekelesCo.TantargyId.Value, tanuloErtekelesCo.ErtekelesTema, tanuloErtekelesCo.TanuloId, tanuloErtekelesCo.ErtekelesOsztalyzatId, tanuloErtekelesCo.ErtekelesSzazalek, tanuloErtekelesCo.ErtekelesSzoveg);
|
|
|
|
if (isTanuloErtekelt)
|
|
{
|
|
ErrorMessageList.Add(TanuloErtekelesResource.ATanulonakEzAzErtekelesMarRogzitesreKerultKorabban);
|
|
IsValid = false;
|
|
}
|
|
}
|
|
}
|
|
}
|