kreta/Kreta.BusinessLogic/Helpers/ErettsegiEredmenyekHelper.cs
2024-03-13 00:33:46 +01:00

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();
}
}
}