init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
|
@ -0,0 +1,257 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Web.Http.ModelBinding;
|
||||
using Kreta.BusinessLogic.Classes;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.Core;
|
||||
using Kreta.Enums;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Security;
|
||||
|
||||
namespace Kreta.Web.Areas.TanuloErtekeles.Models
|
||||
{
|
||||
public class ErettsegiEredmenySaveModel
|
||||
{
|
||||
public string FormName { get; set; }
|
||||
public List<ErettsegiEredmenySaveDetailModel> ErettsegiEredmenySaveDetailModelList { get; set; } = new List<ErettsegiEredmenySaveDetailModel>();
|
||||
}
|
||||
|
||||
public class ErettsegiEredmenySaveDetailModel
|
||||
{
|
||||
public string Id { get; set; }
|
||||
|
||||
public int TanuloId { get; set; }
|
||||
|
||||
public int? ErettsegiTantargyId { get; set; }
|
||||
|
||||
public int? ErettsegiSzintId { get; set; }
|
||||
|
||||
public int? ErettsegiTipusId { get; set; }
|
||||
|
||||
public int? IrasbeliPontszam { get; set; }
|
||||
|
||||
public int? SzobeliPontszam { get; set; }
|
||||
|
||||
public int? GyakorlatiPontszam { get; set; }
|
||||
|
||||
public string Megjegyzes { get; set; }
|
||||
|
||||
public bool IsNew { get; set; }
|
||||
|
||||
public ModelStateDictionary Validate(ModelStateDictionary modelStateDictionary, string formName, DataSet erettsegiTantargyAdatok)
|
||||
{
|
||||
if (!ErettsegiTantargyId.IsEntityId())
|
||||
{
|
||||
modelStateDictionary.AddModelError(formName, string.Format(CommonResource.Required, $"\"{ErettsegiEredmenyekResource.Tantargy}\""));
|
||||
}
|
||||
else
|
||||
{
|
||||
//NOTE: Az IsEntityId vizsgálat miatt nem lehet null az ErettsegiTantargyId!
|
||||
int erettsegiTantargyIdValue = ErettsegiTantargyId.Value;
|
||||
var erettsegiTantargyNev = erettsegiTantargyIdValue.GetDisplayName<ErettsegiTantargyEnum>(ClaimData.SelectedTanevID.Value);
|
||||
|
||||
if (!ErettsegiSzintId.IsEntityId())
|
||||
{
|
||||
modelStateDictionary.AddModelError(formName, string.Format(ErettsegiEredmenyekResource.ValidationRequired, erettsegiTantargyNev, $"{ErettsegiEredmenyekResource.Szint}"));
|
||||
}
|
||||
else
|
||||
{
|
||||
//NOTE: Az IsEntityId vizsgálat miatt nem lehet null az ErettsegiSzintId!
|
||||
int erettsegiSzintIdValue = ErettsegiSzintId.Value;
|
||||
List<ErettsegiTantargyAdatokModel> erettsegiTantargyAdatokModel = erettsegiTantargyAdatok.Tables[0].AsEnumerable().Select(dataRow =>
|
||||
new ErettsegiTantargyAdatokModel
|
||||
{
|
||||
ID = dataRow.Field<int>("ID"),
|
||||
IsSzobeli = dataRow.Field<string>("IsSzobeli").ToBool(),
|
||||
IsIrasbeli = dataRow.Field<string>("IsIrasbeli").ToBool(),
|
||||
IsGyakorlati = dataRow.Field<string>("IsGyakorlati").ToBool(),
|
||||
IsEmelt = dataRow.Field<int>("ErettsegiSzint") == (int)ErettsegiSzintEnum.EmeltSzint,
|
||||
IrasbeliMaxPontszam = dataRow.Field<int>("IrasbeliMaxPontszam"),
|
||||
GyakorlatiMaxPontszam = dataRow.Field<int>("GyakorlatiMaxpontszam"),
|
||||
SzobeliMaxPontszam = dataRow.Field<int>("SzobeliMaxpontszam"),
|
||||
OsszMaxPontszam = dataRow.Field<int>("OsszMaxpontszam")
|
||||
}).Where(x => x.ID == erettsegiTantargyIdValue).ToList();
|
||||
|
||||
//NOTE: Megvizsgáljuk, hogy emelt szintű-e az érettségi.
|
||||
if (erettsegiSzintIdValue == (int)ErettsegiSzintEnum.EmeltSzint)
|
||||
{
|
||||
//NOTE: Azért használunk SingleOrDefault-ot, mert csak és kizárólag egy darab emelt és/vagy közép szintű érettségi lehet az adott tantárgyból, ha több van, rossz adat van az adatbázisban és javítani kell.
|
||||
var emeltErettsegiTantargyAdat = erettsegiTantargyAdatokModel.SingleOrDefault(x => x.IsEmelt);
|
||||
|
||||
ErettsegiSzintSzerintiValidacio(modelStateDictionary, formName, emeltErettsegiTantargyAdat, ErettsegiEredmenyekResource.Emelt, erettsegiTantargyNev);
|
||||
}
|
||||
|
||||
//NOTE: Megvizsgáljuk, hogy közép szintű-e az érettségi.
|
||||
if (erettsegiSzintIdValue == (int)ErettsegiSzintEnum.KozepSzint)
|
||||
{
|
||||
//NOTE: Azért használunk SingleOrDefault-ot, mert csak és kizárólag egy darab emelt és/vagy közép szintű érettségi lehet az adott tantárgyból, ha több van, rossz adat van az adatbázisban és javítani kell.
|
||||
var kozepErettsegiTantargyAdat = erettsegiTantargyAdatokModel.SingleOrDefault(x => !x.IsEmelt);
|
||||
|
||||
//NOTE: Megvizsgáljuk, hogy matematika-e a tantárgy, ha igen, akkor azt közép szinten egyedileg kell validálni, ha nem, akkor normális validáció következik.
|
||||
if (erettsegiTantargyIdValue != (int)ErettsegiTantargyEnum.matematika)
|
||||
{
|
||||
ErettsegiSzintSzerintiValidacio(modelStateDictionary, formName, kozepErettsegiTantargyAdat, ErettsegiEredmenyekResource.Kozep, erettsegiTantargyNev);
|
||||
}
|
||||
else
|
||||
{
|
||||
var matematikaOsszMaxPontszam = 0;
|
||||
|
||||
//NOTE: Mivel matematika tantárgyról van szó, ezért a kozepErettsegiTantargyAdat nem lehet null, mert kötelező, hogy legyen ilyen az adatbázisban!
|
||||
PontszamValidation(modelStateDictionary, formName, IrasbeliPontszam, kozepErettsegiTantargyAdat.IrasbeliMaxPontszam, kozepErettsegiTantargyAdat.IsIrasbeli, ErettsegiEredmenyekResource.Irasbeli, erettsegiTantargyNev);
|
||||
matematikaOsszMaxPontszam += kozepErettsegiTantargyAdat.IrasbeliMaxPontszam;
|
||||
if (IrasbeliPontszam < 25)
|
||||
{
|
||||
var matematikaKozepSzobeliMaxPontszam = 50;
|
||||
PontszamValidation(modelStateDictionary, formName, SzobeliPontszam, matematikaKozepSzobeliMaxPontszam, kozepErettsegiTantargyAdat.IsSzobeli, ErettsegiEredmenyekResource.Szobeli, erettsegiTantargyNev);
|
||||
matematikaOsszMaxPontszam += matematikaKozepSzobeliMaxPontszam;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (SzobeliPontszam.HasValue)
|
||||
{
|
||||
modelStateDictionary.AddModelError(formName, ErettsegiEredmenyekResource.ValidationMatematikaNemLehetTipusuErettsegiVizsgatTenni);
|
||||
}
|
||||
matematikaOsszMaxPontszam += kozepErettsegiTantargyAdat.SzobeliMaxPontszam;
|
||||
}
|
||||
if (GyakorlatiPontszam.HasValue)
|
||||
{
|
||||
modelStateDictionary.AddModelError(formName, string.Format(ErettsegiEredmenyekResource.ValidationNemLehetTipusuErettsegiVizsgatTenni, erettsegiTantargyNev, ErettsegiEredmenyekResource.Gyakorlati));
|
||||
}
|
||||
matematikaOsszMaxPontszam += kozepErettsegiTantargyAdat.GyakorlatiMaxPontszam;
|
||||
|
||||
var osszPontszam = 0;
|
||||
osszPontszam += IrasbeliPontszam ?? 0;
|
||||
osszPontszam += SzobeliPontszam ?? 0;
|
||||
osszPontszam += GyakorlatiPontszam ?? 0;
|
||||
//NOTE: Megvizsgáljuk, hogy nem adtak-e több pontot összesen, mint a lehetséges maximális.
|
||||
if (matematikaOsszMaxPontszam < osszPontszam)
|
||||
{
|
||||
modelStateDictionary.AddModelError(formName, string.Format(ErettsegiEredmenyekResource.ValidationMaximumPontotLehetElerniOsszesenAzErettsegiVizsgan, erettsegiTantargyNev, matematikaOsszMaxPontszam));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!ErettsegiTipusId.IsEntityId())
|
||||
{
|
||||
modelStateDictionary.AddModelError(formName, string.Format(ErettsegiEredmenyekResource.ValidationRequired, erettsegiTantargyNev, $"{ErettsegiEredmenyekResource.Tipus}"));
|
||||
}
|
||||
}
|
||||
|
||||
return modelStateDictionary;
|
||||
}
|
||||
|
||||
private void ErettsegiSzintSzerintiValidacio(ModelStateDictionary modelStateDictionary, string formName, ErettsegiTantargyAdatokModel erettsegiTantargyAdat, string erettsegiSzintNev, string erettsegiTantargyNev)
|
||||
{
|
||||
//NOTE: Ha igen, megvizsgáljuk, hogy lehet-e adott szintű(Közép/Emelt) érettségit tenni a tantárgyból, ha nem, validációs hibát dobunk.
|
||||
if (erettsegiTantargyAdat == null)
|
||||
{
|
||||
modelStateDictionary.AddModelError(formName, string.Format(ErettsegiEredmenyekResource.ValidationNemLehetSzintuErettsegiVizsgatTenni, erettsegiTantargyNev, erettsegiSzintNev));
|
||||
}
|
||||
//NOTE: Ha igen, folytatjuk a további vizsgálatot.
|
||||
else
|
||||
{
|
||||
PontszamValidation(modelStateDictionary, formName, IrasbeliPontszam, erettsegiTantargyAdat.IrasbeliMaxPontszam, erettsegiTantargyAdat.IsIrasbeli, ErettsegiEredmenyekResource.Irasbeli, erettsegiTantargyNev);
|
||||
|
||||
PontszamValidation(modelStateDictionary, formName, SzobeliPontszam, erettsegiTantargyAdat.SzobeliMaxPontszam, erettsegiTantargyAdat.IsSzobeli, ErettsegiEredmenyekResource.Szobeli, erettsegiTantargyNev);
|
||||
|
||||
PontszamValidation(modelStateDictionary, formName, GyakorlatiPontszam, erettsegiTantargyAdat.GyakorlatiMaxPontszam, erettsegiTantargyAdat.IsGyakorlati, ErettsegiEredmenyekResource.Gyakorlati, erettsegiTantargyNev);
|
||||
|
||||
var osszPontszam = 0;
|
||||
osszPontszam += IrasbeliPontszam ?? 0;
|
||||
osszPontszam += SzobeliPontszam ?? 0;
|
||||
osszPontszam += GyakorlatiPontszam ?? 0;
|
||||
//NOTE: Megvizsgáljuk, hogy nem adtak-e több pontot összesen, mint a lehetséges maximális.
|
||||
if (erettsegiTantargyAdat.OsszMaxPontszam < osszPontszam)
|
||||
{
|
||||
modelStateDictionary.AddModelError(formName, string.Format(ErettsegiEredmenyekResource.ValidationMaximumPontotLehetElerniOsszesenAzErettsegiVizsgan, erettsegiTantargyNev, erettsegiTantargyAdat.OsszMaxPontszam));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void PontszamValidation(ModelStateDictionary modelStateDictionary, string formName, int? pontszam, int maxPontszam, bool isErettsegiTantargyTipus, string tipusNev, string erettsegiTantargyNev)
|
||||
{
|
||||
//NOTE: Megvizsgáljuk, hogy adtak-e pontot az adott típusból(Írásbeli/Szóbeli/Gyakorlati)
|
||||
if (pontszam.HasValue)
|
||||
{
|
||||
//NOTE: Ha adtak pontot, megvizsgáljuk, hogy az adott típusból(Írásbeli/Szóbeli/Gyakorlati), szabad-e pontot adni. Ha nem, validációs hibát dobunk.
|
||||
if (!isErettsegiTantargyTipus)
|
||||
{
|
||||
modelStateDictionary.AddModelError(formName, string.Format(ErettsegiEredmenyekResource.ValidationNemLehetTipusuErettsegiVizsgatTenni, erettsegiTantargyNev, tipusNev));
|
||||
}
|
||||
//NOTE: Megvizsgáljuk, hogy nem adtak-e több pontot, mint az adott típusból(Írásbeli/Szóbeli/Gyakorlati) a lehetséges maximális.
|
||||
else if (maxPontszam < pontszam.Value)
|
||||
{
|
||||
modelStateDictionary.AddModelError(formName, string.Format(ErettsegiEredmenyekResource.ValidationMaximumPontotLehetElerniTipusuErettsegiVizsgan, erettsegiTantargyNev, maxPontszam, tipusNev));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public ErettsegiEredmenyItemCo ConvertModelToCo(int intezmenyId, int tanevId)
|
||||
{
|
||||
ErettsegiEredmenyItemCo co = new ErettsegiEredmenyItemCo
|
||||
{
|
||||
IntezmenyId = intezmenyId,
|
||||
TanevId = tanevId,
|
||||
TanuloId = TanuloId
|
||||
};
|
||||
|
||||
if (!IsNew)
|
||||
{
|
||||
co.Id = int.Parse(Id);
|
||||
}
|
||||
|
||||
if (ErettsegiTantargyId.HasValue)
|
||||
{
|
||||
co.ErettsegiTantargyId = ErettsegiTantargyId.Value;
|
||||
}
|
||||
|
||||
if (ErettsegiSzintId.HasValue)
|
||||
{
|
||||
co.ErettsegiSzintId = ErettsegiSzintId.Value;
|
||||
}
|
||||
|
||||
if (ErettsegiTipusId.HasValue)
|
||||
{
|
||||
co.ErettsegiTipusId = ErettsegiTipusId.Value;
|
||||
}
|
||||
|
||||
if (IrasbeliPontszam.HasValue)
|
||||
{
|
||||
co.IrasbeliPontszam = IrasbeliPontszam.Value;
|
||||
}
|
||||
|
||||
if (SzobeliPontszam.HasValue)
|
||||
{
|
||||
co.SzobeliPontszam = SzobeliPontszam.Value;
|
||||
}
|
||||
|
||||
if (GyakorlatiPontszam.HasValue)
|
||||
{
|
||||
co.GyakorlatiPontszam = GyakorlatiPontszam.Value;
|
||||
}
|
||||
|
||||
co.Megjegyzes = Megjegyzes;
|
||||
int osszPontszam = 0;
|
||||
if (co.IrasbeliPontszam != null)
|
||||
{
|
||||
osszPontszam += co.IrasbeliPontszam.Value;
|
||||
}
|
||||
if (co.SzobeliPontszam != null)
|
||||
{
|
||||
osszPontszam += co.SzobeliPontszam.Value;
|
||||
}
|
||||
if (co.GyakorlatiPontszam != null)
|
||||
{
|
||||
osszPontszam += co.GyakorlatiPontszam.Value;
|
||||
}
|
||||
co.OsszPontszam = co.IrasbeliPontszam == null && co.SzobeliPontszam == null && co.GyakorlatiPontszam == null ? (int?)null : osszPontszam;
|
||||
|
||||
return co;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue