412 lines
16 KiB
C#
412 lines
16 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using Kreta.BusinessLogic.Classes;
|
|
using Kreta.BusinessLogic.HelperClasses;
|
|
using Kreta.BusinessLogic.Utils;
|
|
using Kreta.Core;
|
|
using Kreta.Core.ConnectionType;
|
|
using Kreta.DataAccess.Interfaces;
|
|
using Kreta.DataAccessManual;
|
|
using Kreta.DataAccessManual.Interfaces;
|
|
using Kreta.Enums;
|
|
using Kreta.Resources;
|
|
|
|
namespace Kreta.BusinessLogic.Helpers
|
|
{
|
|
public class ErettsegiEredmenyekHelper : LogicBase
|
|
{
|
|
public ErettsegiEredmenyekHelper(IConnectionType connectionType) : base(connectionType) { }
|
|
|
|
public DataSet GetErettsegiEredmenyekGrid(int osztalyId)
|
|
{
|
|
var erettsegiEredmenyek = Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var result = h.ErettsegiEredmeny(GridParameters).GetErettsegiEredmenyekData(osztalyId);
|
|
return result;
|
|
});
|
|
|
|
var dt = erettsegiEredmenyek.Tables[0];
|
|
dt.Columns.Add("SzuletesiIdoFormatted");
|
|
List<DataRow> rows = dt.Rows.Cast<DataRow>().ToList();
|
|
foreach (var row in rows)
|
|
{
|
|
row["SzuletesiIdoFormatted"] = SDAConvert.ToDateTime(row["SzuletesiIdo"]).ToShortDateString();
|
|
}
|
|
|
|
return erettsegiEredmenyek;
|
|
}
|
|
|
|
public DataSet GetErettsegiEredmenyekDetailGrid(int tanuloId)
|
|
{
|
|
DataSet erettsegiEredmenyekData = Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var result = h.ErettsegiEredmeny(GridParameters).GetErettsegiEredmenyekReszletekData(IntezmenyId, TanevId, tanuloId);
|
|
return result;
|
|
});
|
|
bool isVegzos;
|
|
var helper = new FelhasznaloHelper(ConnectionType);
|
|
isVegzos = helper.GetVegzosEvfolyamTanulojaByUserId(tanuloId);
|
|
|
|
var dt = erettsegiEredmenyekData.Tables[0];
|
|
|
|
dt.Columns.Add("IsNew");
|
|
dt.Columns.Add("Szazalek");
|
|
dt.Columns.Add("Erdemjegy");
|
|
|
|
foreach (var row in dt.Rows.Cast<DataRow>().ToList())
|
|
{
|
|
row["IsNew"] = false;
|
|
}
|
|
if (isVegzos)
|
|
{
|
|
List<DataRow> erettsegiTantargyMagyarNyelvEsIrodalomIdList = erettsegiEredmenyekData.Tables[0].Select($"ErettsegiTantargyId = {(int)ErettsegiTantargyEnum.magyar_nyelv_es_irodalom}").ToList();
|
|
if (erettsegiTantargyMagyarNyelvEsIrodalomIdList.Count == 0)
|
|
{
|
|
var row = dt.NewRow();
|
|
row["ID"] = "tempMagyarNyelvEsIrodalomRowId";
|
|
row["ErettsegiTantargyId"] = (int)ErettsegiTantargyEnum.magyar_nyelv_es_irodalom;
|
|
row["IsNew"] = true;
|
|
dt.Rows.Add(row);
|
|
}
|
|
|
|
List<DataRow> erettsegiTantargyMatematikaIdList = erettsegiEredmenyekData.Tables[0].Select($"ErettsegiTantargyId = {(int)ErettsegiTantargyEnum.matematika}").ToList();
|
|
if (erettsegiTantargyMatematikaIdList.Count == 0)
|
|
{
|
|
var row = dt.NewRow();
|
|
row["ID"] = "tempMatematikaRowId";
|
|
row["ErettsegiTantargyId"] = (int)ErettsegiTantargyEnum.matematika;
|
|
row["IsNew"] = true;
|
|
dt.Rows.Add(row);
|
|
}
|
|
List<DataRow> erettsegiTantargyTortenelemIdList = erettsegiEredmenyekData.Tables[0].Select($"ErettsegiTantargyId = {(int)ErettsegiTantargyEnum.tortenelem}").ToList();
|
|
if (erettsegiTantargyTortenelemIdList.Count == 0)
|
|
{
|
|
var row = dt.NewRow();
|
|
row["ID"] = "tempTortenelemRowId";
|
|
row["ErettsegiTantargyId"] = (int)ErettsegiTantargyEnum.tortenelem;
|
|
row["IsNew"] = true;
|
|
dt.Rows.Add(row);
|
|
}
|
|
}
|
|
|
|
foreach (var row in dt.Rows.Cast<DataRow>().ToList())
|
|
{
|
|
int? osszMaxPontszam;
|
|
var irasbeliPontszam = SDAConvert.ToNullableInt32(row["IrasbeliPontszam"]);
|
|
if (SDAConvert.ToInt32(row["ErettsegiTantargyId"]) == (int)ErettsegiTantargyEnum.matematika && irasbeliPontszam.HasValue && irasbeliPontszam < 25)
|
|
{
|
|
osszMaxPontszam = SDAConvert.ToNullableInt32(row["OsszMaxPontszam"]) + 50;
|
|
}
|
|
else
|
|
{
|
|
osszMaxPontszam = SDAConvert.ToNullableInt32(row["OsszMaxPontszam"]);
|
|
}
|
|
double? szazalek = null;
|
|
string szazalekString;
|
|
int? osszPontszam = SDAConvert.ToNullableInt32(row["OsszPontszam"]);
|
|
string osszPontszamString;
|
|
if (osszPontszam.HasValue && osszMaxPontszam.HasValue)
|
|
{
|
|
if (osszMaxPontszam < osszPontszam)
|
|
{
|
|
osszPontszamString = ErettsegiEredmenyekResource.MagasabbAzOsszPontszamMintAMaxOsszPontszam;
|
|
szazalekString = ErettsegiEredmenyekResource.MagasabbAzOsszPontszamMintAMaxOsszPontszam;
|
|
}
|
|
else
|
|
{
|
|
osszPontszamString = $"{osszPontszam}/{osszMaxPontszam}";
|
|
szazalek = Math.Floor((double)osszPontszam.Value / osszMaxPontszam.Value * 100);
|
|
szazalekString = szazalek + "%";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
osszPontszamString = osszMaxPontszam.HasValue ? $"-/{osszMaxPontszam}" : "-";
|
|
szazalekString = "-";
|
|
}
|
|
row["Szazalek"] = szazalekString;
|
|
row["OsszPontszam"] = osszPontszamString;
|
|
|
|
var erettsegiSzintId = SDAConvert.ToNullableInt32(row["ErettsegiSzintId"]);
|
|
|
|
string erdemjegyString;
|
|
if (erettsegiSzintId.IsEntityId() && szazalek.HasValue)
|
|
{
|
|
//NOTE: Az IsEntityId vizsgálat miatt nem lehet null az erettsegiSzintId!
|
|
if (erettsegiSzintId.Value == (int)ErettsegiSzintEnum.KozepSzint)
|
|
{
|
|
int erdemjegy;
|
|
if (0 <= szazalek.Value && szazalek.Value <= 24)
|
|
{
|
|
erdemjegy = 1;
|
|
}
|
|
else if (25 <= szazalek.Value && szazalek.Value <= 39)
|
|
{
|
|
erdemjegy = 2;
|
|
}
|
|
else if (40 <= szazalek.Value && szazalek.Value <= 59)
|
|
{
|
|
erdemjegy = 3;
|
|
}
|
|
else if (60 <= szazalek.Value && szazalek.Value <= 79)
|
|
{
|
|
erdemjegy = 4;
|
|
}
|
|
else if (80 <= szazalek.Value && szazalek.Value <= 100)
|
|
{
|
|
erdemjegy = 5;
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("Hibás százalék érték!");
|
|
}
|
|
erdemjegyString = erdemjegy.ToString();
|
|
}
|
|
else if (erettsegiSzintId.Value == (int)ErettsegiSzintEnum.EmeltSzint)
|
|
{
|
|
int erdemjegy;
|
|
if (0 <= szazalek.Value && szazalek.Value <= 24)
|
|
{
|
|
erdemjegy = 1;
|
|
}
|
|
else if (25 <= szazalek.Value && szazalek.Value <= 32)
|
|
{
|
|
erdemjegy = 2;
|
|
}
|
|
else if (33 <= szazalek.Value && szazalek.Value <= 46)
|
|
{
|
|
erdemjegy = 3;
|
|
}
|
|
else if (47 <= szazalek.Value && szazalek.Value <= 59)
|
|
{
|
|
erdemjegy = 4;
|
|
}
|
|
else if (60 <= szazalek.Value && szazalek.Value <= 100)
|
|
{
|
|
erdemjegy = 5;
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("Hibás százalék érték!");
|
|
}
|
|
erdemjegyString = erdemjegy.ToString();
|
|
}
|
|
else
|
|
{
|
|
erdemjegyString = "-";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
erdemjegyString = "-";
|
|
}
|
|
row["Erdemjegy"] = erdemjegyString;
|
|
}
|
|
|
|
return erettsegiEredmenyekData;
|
|
}
|
|
|
|
public void SaveErettsegiEredmenyList(List<ErettsegiEredmenyItemCo> erettsegiEredmenyCoList)
|
|
{
|
|
foreach (var erettsegiEredmenyCo in erettsegiEredmenyCoList)
|
|
{
|
|
SaveOrUpdateErettsegiEredmeny(erettsegiEredmenyCo);
|
|
}
|
|
}
|
|
|
|
public void SaveOrUpdateErettsegiEredmeny(ErettsegiEredmenyItemCo co)
|
|
{
|
|
Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
IErettsegiEredmenyDal dal = h.ErettsegiEredmeny();
|
|
bool isNew = !co.Id.IsEntityId();
|
|
//NOTE: Az IsEntityId vizsgálat miatt nem lehet null az co.Id!
|
|
IErettsegiEredmeny entity = isNew ? dal.Get() : dal.Get(co.Id.Value);
|
|
|
|
entity.ErettsegiSzint = co.ErettsegiSzintId;
|
|
entity.ErettsegiTantargy = co.ErettsegiTantargyId;
|
|
entity.ErettsegiTipus = co.ErettsegiTipusId;
|
|
entity.GyakorlatPontszam = co.GyakorlatiPontszam;
|
|
entity.IntezmenyId = co.IntezmenyId;
|
|
entity.IrasbeliPontszam = co.IrasbeliPontszam;
|
|
entity.Megjegyzes = co.Megjegyzes;
|
|
entity.OsszPontszam = co.OsszPontszam;
|
|
entity.SzobeliPontszam = co.SzobeliPontszam;
|
|
entity.TanevId = co.TanevId;
|
|
entity.TanuloId = co.TanuloId;
|
|
|
|
if (isNew)
|
|
{
|
|
dal.Insert(entity);
|
|
}
|
|
else
|
|
{
|
|
dal.FullUpdate(entity);
|
|
}
|
|
});
|
|
}
|
|
|
|
public void DeleteErettsegiEredmeny(int id)
|
|
{
|
|
Dal.CustomConnection.Run(ConnectionType, h => h.ErettsegiEredmeny().DeleteErettsegiEredmeny(id));
|
|
}
|
|
|
|
public IDictionary<string, string> GetErettsegiTantargyakForComboBox(string baseText = null)
|
|
{
|
|
var result = Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.ErettsegiEredmeny();
|
|
return dal.GetErettsegiTantargyakForComboBox(IntezmenyId, TanevId);
|
|
});
|
|
|
|
return LogicUtil.CreateDropdownContent(result, "ID", "Nev", baseText, sort: false);
|
|
}
|
|
|
|
public DataSet GetErettsegiTantargyakForValidate()
|
|
{
|
|
var result = Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.ErettsegiEredmeny();
|
|
return dal.GetErettsegiTantargyakForValidate(IntezmenyId, TanevId);
|
|
});
|
|
|
|
return result;
|
|
}
|
|
|
|
public IDictionary<string, string> GetErettsegiSzintekForComboBox(string baseText = null)
|
|
{
|
|
var result = Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.ErettsegiEredmeny();
|
|
return dal.GetErettsegiSzintekForComboBox(IntezmenyId, TanevId);
|
|
});
|
|
|
|
return LogicUtil.CreateDropdownContent(result, "ID", "Nev", baseText, false);
|
|
}
|
|
|
|
public IDictionary<string, string> GetErettsegiTipusokForComboBox(string baseText = null)
|
|
{
|
|
var result = Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.ErettsegiEredmeny();
|
|
return dal.GetErettsegiTipusokForComboBox(IntezmenyId, TanevId);
|
|
});
|
|
|
|
return LogicUtil.CreateDropdownContent(result, "ID", "Nev", baseText, false);
|
|
}
|
|
|
|
public IDictionary<string, int> GetErettsegiMaxPontszamList()
|
|
{
|
|
DataSet ds = Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.ErettsegiEredmeny();
|
|
return dal.GetErettsegiMaxPontszamList(IntezmenyId, TanevId);
|
|
});
|
|
var row = ds.Tables[0].Rows[0];
|
|
var maxPontszamDictionary = new Dictionary<string, int>
|
|
{
|
|
{"IrasbeliMaxPontszam", SDAConvert.ToInt32(row["IrasbeliMaxPontszam"])},
|
|
{"SzobeliMaxPontszam", SDAConvert.ToInt32(row["SzobeliMaxPontszam"])},
|
|
{"GyakorlatiMaxPontszam", SDAConvert.ToInt32(row["GyakorlatiMaxPontszam"])}
|
|
};
|
|
|
|
return maxPontszamDictionary;
|
|
}
|
|
|
|
public ErettsegiEredmenyItemCo GetErettsegiEredmeny(int erettsegiEredmenyId)
|
|
{
|
|
var searchCo = new ErettsegiEredmenyekKeresoCO
|
|
{
|
|
Id = erettsegiEredmenyId
|
|
};
|
|
|
|
return GetErettsegiEredmenyCoList(searchCo)[0];
|
|
}
|
|
|
|
public List<ErettsegiEredmenyItemCo> GetErettsegiEredmenyCoList(ErettsegiEredmenyekKeresoCO searchCo)
|
|
{
|
|
var coList = new List<ErettsegiEredmenyItemCo>();
|
|
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.ErettsegiEredmeny(GridParameters);
|
|
return dal.GetErettsegiEredmenyekData(IntezmenyId, TanevId, ErettsegiEredmenyekKeresoCO.ConvertCOToPCO(searchCo));
|
|
});
|
|
|
|
foreach (var row in ds.Tables[0].AsEnumerable())
|
|
{
|
|
coList.Add(new ErettsegiEredmenyItemCo(row));
|
|
}
|
|
|
|
return FilterErettsegiEredmenyCoList(coList, searchCo);
|
|
}
|
|
|
|
private List<ErettsegiEredmenyItemCo> FilterErettsegiEredmenyCoList(List<ErettsegiEredmenyItemCo> coList, ErettsegiEredmenyekKeresoCO searchCo)
|
|
{
|
|
if (searchCo == null)
|
|
{
|
|
return coList;
|
|
}
|
|
|
|
IEnumerable<ErettsegiEredmenyItemCo> result = coList;
|
|
|
|
if (!string.IsNullOrWhiteSpace(searchCo.Tanulo))
|
|
{
|
|
result = result.Where(x => x.Tanulo.ToComparableString().Contains(searchCo.Tanulo.ToComparableString()));
|
|
}
|
|
|
|
if (searchCo.OsztalyId.IsEntityId())
|
|
{
|
|
result = result.Where(x => x.OsztalyId == searchCo.OsztalyId);
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(searchCo.OktatasiAzonosito))
|
|
{
|
|
result = result.Where(x => x.OktatasiAzonosito.ToComparableString().Contains(searchCo.OktatasiAzonosito.ToComparableString()));
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(searchCo.Tantargy))
|
|
{
|
|
result = result.Where(x => x.Tantargy.ToComparableString().Contains(searchCo.Tantargy.ToComparableString()));
|
|
}
|
|
|
|
if (searchCo.SzintId.IsEntityId())
|
|
{
|
|
result = result.Where(x => x.ErettsegiSzintId == searchCo.SzintId);
|
|
}
|
|
|
|
if (searchCo.TipusId.IsEntityId())
|
|
{
|
|
result = result.Where(x => x.ErettsegiTipusId == searchCo.TipusId);
|
|
}
|
|
|
|
if (searchCo.SzobeliPontszam.HasValue)
|
|
{
|
|
result = result.Where(x => x.SzobeliPontszam == searchCo.SzobeliPontszam.Value);
|
|
}
|
|
|
|
if (searchCo.IrasbeliPontszam.HasValue)
|
|
{
|
|
result = result.Where(x => x.IrasbeliPontszam == searchCo.IrasbeliPontszam.Value);
|
|
}
|
|
|
|
if (searchCo.GyakorlatiPontszam.HasValue)
|
|
{
|
|
result = result.Where(x => x.GyakorlatiPontszam == searchCo.GyakorlatiPontszam.Value);
|
|
}
|
|
|
|
if (searchCo.OsszPontszam.HasValue)
|
|
{
|
|
result = result.Where(x => x.OsszPontszam == searchCo.OsszPontszam.Value);
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(searchCo.Megjegyzes))
|
|
{
|
|
result = result.Where(x => x.Megjegyzes.ToComparableString().Contains(searchCo.Megjegyzes.ToComparableString()));
|
|
}
|
|
|
|
return result.ToList();
|
|
}
|
|
}
|
|
}
|