init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
118
Kreta.BusinessLogic/Logic/ExportLogic.cs
Normal file
118
Kreta.BusinessLogic/Logic/ExportLogic.cs
Normal file
|
@ -0,0 +1,118 @@
|
|||
using System;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using Kreta.BusinessLogic.Classes;
|
||||
using OfficeOpenXml;
|
||||
using OfficeOpenXml.Style;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic
|
||||
{
|
||||
public static class ExportLogic
|
||||
{
|
||||
/// TODO devKornél(enhancement): Ha nem fog ellátni plusz funkciót, akkor csinálni egy optimálisabbat, ami csak oszlopot nevez át és töröl
|
||||
public static DataTable MapDataTable(DataTable fromTable, (string nameFrom, string nameTo, Type type)[] map)
|
||||
{
|
||||
var toTable = new DataTable();
|
||||
foreach (var (_, nameTo, type) in map)
|
||||
{
|
||||
toTable.Columns.Add(nameTo, type);
|
||||
}
|
||||
|
||||
foreach (var item in fromTable.AsEnumerable())
|
||||
{
|
||||
toTable.Rows.Add(GetDataRow(item));
|
||||
}
|
||||
|
||||
TryCreateHeaderIfNotExist(toTable);
|
||||
|
||||
return toTable;
|
||||
|
||||
DataRow GetDataRow(DataRow fromRow)
|
||||
{
|
||||
var toRow = toTable.NewRow();
|
||||
foreach (var (nameFrom, nameTo, type) in map)
|
||||
{
|
||||
toRow[nameTo] = Convert.ChangeType(fromRow[nameFrom], type);
|
||||
}
|
||||
|
||||
return toRow;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Kicserélésre kerül az oszlopsorrend, beállításra kerül az oszlop típusa és átneveződik az oszlop neve a 'map' paraméternek megfelelően.
|
||||
/// Végül, remove-olva lesznek a sorrendezésből kimaradt ('map'-ben nem szereplő) oszlopok.
|
||||
/// </summary>
|
||||
/// <param name="dataTable"></param>
|
||||
/// <param name="map"></param>
|
||||
/// <param name="removeUnusedColumns"></param>
|
||||
public static void MapDataTable(DataTable dataTable, (string fromColumn, string toColumn, Type type)[] map, bool removeUnusedColumns)
|
||||
{
|
||||
for (var i = 0; i < map.Length; i++)
|
||||
{
|
||||
dataTable.Columns[map[i].fromColumn].SetOrdinal(i);
|
||||
dataTable.Columns[map[i].fromColumn].DataType = map[i].type;
|
||||
dataTable.Columns[map[i].fromColumn].ColumnName = map[i].toColumn; // csak a végén nevezhető át!
|
||||
}
|
||||
|
||||
if (removeUnusedColumns)
|
||||
{
|
||||
for (var i = dataTable.Columns.Count - 1; i >= map.Length; i--)
|
||||
{
|
||||
dataTable.Columns.RemoveAt(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static bool TryCreateHeaderIfNotExist(DataTable table)
|
||||
{
|
||||
if (table.Rows.Count < 1)
|
||||
{
|
||||
table.Rows.Add(table.NewRow());
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Dátum oszlopok megjelenítésének korrigálása, már az export fájlnál.
|
||||
/// </summary>
|
||||
/// <param name="exportColumns"></param>
|
||||
/// <param name="workSheet"></param>
|
||||
public static void FormatDateFields((string fromColumn, string toColumn, Type type)[] exportColumns, ExcelWorksheet workSheet)
|
||||
{
|
||||
for (int i = 0; i < exportColumns.Length; i++)
|
||||
{
|
||||
if (typeof(DateTime).Equals(exportColumns[i].type))
|
||||
{
|
||||
workSheet.Column(i + 1).Style.Numberformat.Format = SDAFormat.ShortDate;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetHeaderStyles(ExcelRange range)
|
||||
{
|
||||
range.Style.Fill.PatternType = ExcelFillStyle.Solid;
|
||||
range.Style.Fill.BackgroundColor.SetColor(Core.Constants.Export.HeaderColor);
|
||||
range.Style.VerticalAlignment = ExcelVerticalAlignment.Center;
|
||||
range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
|
||||
range.Style.Font.Bold = Core.Constants.Export.HeaderIsBold;
|
||||
}
|
||||
|
||||
public static void SetRowColorAlternate(ExcelWorksheet worksheet, int rowCount)
|
||||
{
|
||||
//NOTE: minden masodik sort szürkével jelöljük az excelben
|
||||
for (var i = 1; i <= rowCount + 1; i++)
|
||||
{
|
||||
if (i % 2 == 0)
|
||||
{
|
||||
worksheet.Row(i).Style.Fill.PatternType = ExcelFillStyle.Solid;
|
||||
worksheet.Row(i).Style.Fill.BackgroundColor.SetColor(Color.LightGray);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
117
Kreta.BusinessLogic/Logic/Feljegyzes/FeljegyzesLogic.cs
Normal file
117
Kreta.BusinessLogic/Logic/Feljegyzes/FeljegyzesLogic.cs
Normal file
|
@ -0,0 +1,117 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using Kreta.BusinessLogic.Classes;
|
||||
using Kreta.BusinessLogic.Helpers;
|
||||
using Kreta.Core;
|
||||
using Kreta.Core.ConnectionType;
|
||||
using Kreta.DataAccessManual;
|
||||
using Kreta.DataAccessManual.Interfaces;
|
||||
using Kreta.DataAccessManual.Util;
|
||||
using Kreta.Enums;
|
||||
using Kreta.KretaServer.SystemSettings;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic.Feljegyzes
|
||||
{
|
||||
public class FeljegyzesLogic
|
||||
{
|
||||
private readonly IConnectionType ConnectionType;
|
||||
|
||||
public FeljegyzesLogic(IConnectionType connectionType)
|
||||
{
|
||||
ConnectionType = connectionType;
|
||||
}
|
||||
|
||||
/// INFO @DevKornel: Mobil használja
|
||||
public void RemoveHiddenRowsFromFeljegyzesDataSet(DataTable dataTable, string columnHeader, int tanuloId)
|
||||
{
|
||||
Dal.CustomConnection.Run(ConnectionType, h =>
|
||||
{
|
||||
bool isVegzosOsztalyTanuloja = GetIsVegzosOsztalyTanuloja(tanuloId, h);
|
||||
for (int i = dataTable.Rows.Count - 1; i >= 0; --i)
|
||||
{
|
||||
int tipusId = SDAConvert.ToInt32(dataTable.Rows[i][columnHeader]);
|
||||
if (tipusId == (int)EsemenyTipusEnum.INegyedevesBizonyitvanybanMegjelenoTantestuletiFeljegyzesHatarozatDicseretFelmentesStb && IsINegyedevesJegyHidden() ||
|
||||
tipusId == (int)EsemenyTipusEnum.IINegyedevesBizonyitvanybanMegjelenoTantestuletiFeljegyzesHatarozatDicseretFelmentesStb && IsIiNegyedevesJegyHidden() ||
|
||||
tipusId == (int)EsemenyTipusEnum.FeleviBizonyitvanybanMegjelenoTantestuletiFeljegyzesHatarozatDicseretFelmentesStb && IsFeleviJegyHidden() ||
|
||||
tipusId == (int)EsemenyTipusEnum.IIINegyedevesBizonyitvanybanMegjelenoTantestuletiFeljegyzesHatarozatDicseretFelmentesStb && IsIiiNegyedevesJegyHidden() ||
|
||||
tipusId == (int)EsemenyTipusEnum.IVNegyedevesBizonyitvanybanMegjelenoTantestuletiFeljegyzesHatarozatDicseretFelmentesStb && IsIvNegyedevesJegyHidden(isVegzosOsztalyTanuloja) ||
|
||||
tipusId == (int)EsemenyTipusEnum.EvVegiBizonyitvanybanMegjelenoTantestuletiFeljegyzesHatarozatDicseretFelmentesStb && IsEvvegiJegyHidden(isVegzosOsztalyTanuloja) ||
|
||||
tipusId == (int)EsemenyTipusEnum.TorzslaponMegjelenoEgyebFeljegyzesVagyHatarozat)
|
||||
{
|
||||
dataTable.Rows.RemoveAt(i);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// INFO @DevKornél: Mobil használja
|
||||
private bool GetIsVegzosOsztalyTanuloja(int tanuloId, IDalHandler h)
|
||||
{
|
||||
var isVegzosOsztalyTanuloja = false;
|
||||
|
||||
int? osztalyId = new TanuloHelper(new DalHandlerConnectionType(ConnectionType, h)).GetTanuloAlapkepzesesOsztalyId(tanuloId);
|
||||
if (osztalyId.IsEntityId())
|
||||
{
|
||||
isVegzosOsztalyTanuloja = new OsztalyCsoportHelper(new DalHandlerConnectionType(ConnectionType, h)).GetIsVegzosOsztalyCsoport(osztalyId.Value);
|
||||
}
|
||||
|
||||
return isVegzosOsztalyTanuloja;
|
||||
}
|
||||
|
||||
private bool IsEvvegiJegyHidden(bool isVegzosOsztalyTanuloja)
|
||||
{
|
||||
//NOTE: Ha végzős, akkor a végzős évvégi jegy megjelenítés dátumát vesszük figyelembe, különben az évvégi jegy megjelenítés dátumát!
|
||||
DateTime? megjelenitesDate = isVegzosOsztalyTanuloja ? SystemSettingsManager.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Ev_vegi_jegyek_megjelenesenek_datuma_vegzos, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId) : SystemSettingsManager.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Ev_vegi_jegyek_megjelenesenek_datuma, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId);
|
||||
return megjelenitesDate > DateTime.UtcNow;
|
||||
}
|
||||
|
||||
private bool IsINegyedevesJegyHidden()
|
||||
{
|
||||
DateTime? megjelenitesDate = SystemSettingsManager.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.I_Negyedeves_jegyek_megjelenesenek_datuma, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId);
|
||||
return megjelenitesDate > DateTime.UtcNow;
|
||||
}
|
||||
|
||||
private bool IsIiNegyedevesJegyHidden()
|
||||
{
|
||||
DateTime? megjelenitesDate = SystemSettingsManager.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.II_Negyedeves_jegyek_megjelenesenek_datuma, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId);
|
||||
return megjelenitesDate > DateTime.UtcNow;
|
||||
}
|
||||
|
||||
private bool IsFeleviJegyHidden()
|
||||
{
|
||||
DateTime? megjelenitesDate = SystemSettingsManager.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Felevi_jegyek_megjelenesenek_datuma, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId);
|
||||
return megjelenitesDate > DateTime.UtcNow;
|
||||
}
|
||||
|
||||
private bool IsIiiNegyedevesJegyHidden()
|
||||
{
|
||||
DateTime? megjelenitesDate = SystemSettingsManager.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.III_Negyedeves_jegyek_megjelenesenek_datuma, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId);
|
||||
return megjelenitesDate > DateTime.UtcNow;
|
||||
}
|
||||
|
||||
private bool IsIvNegyedevesJegyHidden(bool isVegzosOsztalyTanuloja)
|
||||
{
|
||||
DateTime? megjelenitesDate;
|
||||
DateTime? ivNegyedevesJegyMegjelenitesDate = SystemSettingsManager.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.IV_Negyedeves_jegyek_megjelenesenek_datuma, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId);
|
||||
if (isVegzosOsztalyTanuloja)
|
||||
{
|
||||
//NOTE: Ha végzős, akkor a végzős évvégi jegy megjelenítés és a IV. negyedéves jegy megjelenítés dátum közül a korábbit vesszük figyelembe!
|
||||
List<DateTime?> megjelenitesDateList = new List<DateTime?>
|
||||
{
|
||||
ivNegyedevesJegyMegjelenitesDate,
|
||||
SystemSettingsManager.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Ev_vegi_jegyek_megjelenesenek_datuma_vegzos, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId)
|
||||
};
|
||||
megjelenitesDate = megjelenitesDateList.OfType<DateTime>().Min();
|
||||
}
|
||||
else
|
||||
{
|
||||
//NOTE: Ha nem végzős, akkor a IV. negyedéves jegy megjelenítés dátumát vesszük figyelembe!
|
||||
megjelenitesDate = ivNegyedevesJegyMegjelenitesDate;
|
||||
}
|
||||
|
||||
return megjelenitesDate > DateTime.UtcNow;
|
||||
}
|
||||
}
|
||||
}
|
15
Kreta.BusinessLogic/Logic/HaziFeladatLogic.cs
Normal file
15
Kreta.BusinessLogic/Logic/HaziFeladatLogic.cs
Normal file
|
@ -0,0 +1,15 @@
|
|||
using Kreta.BusinessLogic.HelperClasses;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic
|
||||
{
|
||||
public static class HaziFeladatLogic
|
||||
{
|
||||
public static void IsTanarRogzitette(TanarHaziFeladatDetailCO co)
|
||||
{
|
||||
//if (!co.IsTanarRogzitette || )
|
||||
//{
|
||||
// co.Szoveg = OrarendResource.EhhezAzOrahozATanarMegNemRogzitettHaziFeladatotAzOnlineFeluleten;
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
185
Kreta.BusinessLogic/Logic/Mulasztas/MulasztasLogic.cs
Normal file
185
Kreta.BusinessLogic/Logic/Mulasztas/MulasztasLogic.cs
Normal file
|
@ -0,0 +1,185 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using Kreta.BusinessLogic.Classes;
|
||||
using Kreta.BusinessLogic.Helpers;
|
||||
using Kreta.BusinessLogic.Helpers.SystemSettings;
|
||||
using Kreta.Core.ConnectionType;
|
||||
using Kreta.Enums;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Enums.ManualEnums.SystemSettings;
|
||||
using Kreta.Resources;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic.Mulasztas
|
||||
{
|
||||
public class MulasztasLogic
|
||||
{
|
||||
private readonly IConnectionType ConnectionType;
|
||||
|
||||
public MulasztasLogic(IConnectionType connectionType)
|
||||
{
|
||||
ConnectionType = connectionType;
|
||||
}
|
||||
|
||||
public DataSet GetMulasztasok(int osztalycsoportId, int tanoraId, DateTime oraKezdete, DateTime oraVege, int targyId, int tanarId, bool hianyzokAutoKitoltes, SzervezetTipusEnum? szervezetTipus = null)
|
||||
{
|
||||
var systemHelper = new SystemSettingsHelper(ConnectionType);
|
||||
var tantargyHelper = new TantargyHelper(ConnectionType);
|
||||
var tanevHelper = new TanevHelper(ConnectionType);
|
||||
var osztalyCsoportHelper = new OsztalyCsoportHelper(ConnectionType);
|
||||
|
||||
var magantanuloMulasztasKezeles = (SystemSettingMagantanuloMulasztas)systemHelper.GetSystemSettingValue<int>(RendszerBeallitasTipusEnum.Magantanulo_oralatogatas_aloli_mentessegenek_kezelese);
|
||||
var parhuzamosOraKezeles = systemHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.A_foglalkozasok_mulasztasi_adatai_megadasanal_a_parhuzamos_orakkal_valo_utkozes_vizsgalata);
|
||||
var csakMegtartott = systemHelper.GetSystemSettingValue<int>(RendszerBeallitasTipusEnum.Naplozaskor_mulasztas_szazalek_szamitas) == 1 ? 0 : 1;
|
||||
var alapertelmezettMulasztasTipus = (MulasztasTipusEnum)systemHelper.GetSystemSettingValue<int>(RendszerBeallitasTipusEnum.alapertelmezett_statusz_naplozasok_eseteben);
|
||||
|
||||
if (osztalyCsoportHelper.GetCsoportTipusByOsztalyCsoportId(osztalycsoportId) == CsoportTipusEnum.apaczai_mentorcsoport)
|
||||
{
|
||||
alapertelmezettMulasztasTipus = MulasztasTipusEnum.ures;
|
||||
}
|
||||
|
||||
var tanevCo = tanevHelper.GetTanevInfo();
|
||||
var isGyakorlatiTantargy = tantargyHelper.IsGyakorlatiTantargy(targyId);
|
||||
var parhuzamosOranNaplozottak = new MulasztasHelper(ConnectionType).ListParhuzamosOranNaplozottMulasztasTanuloId(oraKezdete, oraVege, tanoraId);
|
||||
|
||||
var elozoOranhianyzottTanulok = hianyzokAutoKitoltes ? new TanuloHelper(ConnectionType).GetElozoOranHianyzottTanulok(oraKezdete, osztalycsoportId) : null;
|
||||
var tantargybolElozoOranHianyzottTanulok = new OrarendiOraHelper(ConnectionType).GetElozoOranHianyzottTanulo(targyId, osztalycsoportId, oraKezdete);
|
||||
|
||||
var ds = osztalyCsoportHelper.GetMulasztasEsFelmentesOsztalyCsoportTanuloi(osztalycsoportId, tanoraId, targyId, tanarId, oraKezdete.Date, csakMegtartott, tanevCo, alapertelmezettMulasztasTipus);
|
||||
ds.Tables[0].Columns.Add("elozoOranHianyzott", typeof(bool));
|
||||
|
||||
foreach (DataRow row in ds.Tables[0].Rows)
|
||||
{
|
||||
SetAmiTooltipsAndInfos(row);
|
||||
CheckMagantanuloFelmentes(row, magantanuloMulasztasKezeles, isGyakorlatiTantargy, oraKezdete);
|
||||
SetParhuzamosOraFelmentett(row, parhuzamosOraKezeles, parhuzamosOranNaplozottak);
|
||||
if ((row["MulasztasId"] == DBNull.Value) && hianyzokAutoKitoltes)
|
||||
{ SetMulasztasHianyzasFromLastLesson(row, elozoOranhianyzottTanulok); }
|
||||
SetMulasztasIgazolas(row);
|
||||
SetMulasztasEloreRogzitettIgazolas(row, tanoraId);
|
||||
SetElozoOranHianyzottTanulo(row, tantargybolElozoOranHianyzottTanulok);
|
||||
SetMulasztasTipusUresOraMentesseg(row, oraKezdete, tanoraId);
|
||||
}
|
||||
|
||||
return ds;
|
||||
}
|
||||
|
||||
private void CheckMagantanuloFelmentes(DataRow row, SystemSettingMagantanuloMulasztas magantanuloMulasztasKezeles, bool isGyakorlatiTantargy, DateTime oraKezdete)
|
||||
{
|
||||
var magantanulosagKezdete = SDAConvert.ToDateTime(row["MagantanulosagKezdete"]);
|
||||
var magantanulosagVege = SDAConvert.ToDateTime(row["MagantanulosagVege"]);
|
||||
if (SDAConvert.ToBoolean(row["IsMagantanulo_BOOL"]) && (magantanulosagKezdete.HasValue == false || magantanulosagKezdete.Value.Date <= oraKezdete.Date) && (!magantanulosagVege.HasValue || magantanulosagVege >= oraKezdete.Date))
|
||||
{
|
||||
if (SDAConvert.ToBoolean(row["OraMentesseg_BOOL"]) || (magantanuloMulasztasKezeles != SystemSettingMagantanuloMulasztas.KotelezoMegjelenie && (magantanuloMulasztasKezeles != SystemSettingMagantanuloMulasztas.CsakGyakorlaton || !isGyakorlatiTantargy)))
|
||||
{
|
||||
row["OraMentesseg"] = "T";
|
||||
row["OraMentesseg_BOOL"] = true;
|
||||
row["Oka"] = row["Oka"] + " " + OrarendResource.Magantanulo;
|
||||
}
|
||||
else
|
||||
{
|
||||
row["OraMentesseg"] = "F";
|
||||
row["OraMentesseg_BOOL"] = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SetParhuzamosOraFelmentett(DataRow row, bool parhuzamosOraKezeles, List<int> parhuzamosOranNaplozottak)
|
||||
{
|
||||
if (!parhuzamosOraKezeles)
|
||||
return;
|
||||
|
||||
if (parhuzamosOranNaplozottak.Count > 0 && parhuzamosOranNaplozottak.Contains(SDAConvert.ToInt32(row["ID"])))
|
||||
{
|
||||
row["OraMentesseg"] = "T";
|
||||
row["OraMentesseg_BOOL"] = true;
|
||||
row["Oka"] = row["Oka"] + " " + OrarendResource.ParhuzamosOranMarNaploztak;
|
||||
}
|
||||
}
|
||||
|
||||
private void SetMulasztasHianyzasFromLastLesson(DataRow row, List<int> elozoOranhianyzottTanulok)
|
||||
{
|
||||
if (elozoOranhianyzottTanulok?.Count > 0)
|
||||
{
|
||||
if (elozoOranhianyzottTanulok.Contains(SDAConvert.ToInt32(row["ID"])))
|
||||
{
|
||||
row["MulasztasTipus"] = (int)MulasztasTipusEnum.hianyzas;
|
||||
row["MulasztasTipus_DNAME"] = MulasztasTipusEnum.hianyzas.GetDisplayName(ConnectionType.TanevId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SetMulasztasIgazolas(DataRow row)
|
||||
{
|
||||
var igazoltMulasztas = SDAConvert.ToBooleanFromTF(row["Igazolt"], NullValue: false);
|
||||
if (igazoltMulasztas)
|
||||
{
|
||||
row["Oka"] = row["Oka"] + " " + OrarendResource.ATanulonakVanRogzitveIgazolasa;
|
||||
}
|
||||
}
|
||||
|
||||
private void SetElozoOranHianyzottTanulo(DataRow row, List<int> tantargybolElozoOranHianyzottTanulok)
|
||||
{
|
||||
if (tantargybolElozoOranHianyzottTanulok.Any())
|
||||
{
|
||||
if (tantargybolElozoOranHianyzottTanulok.Contains(row.Field<int>("ID")))
|
||||
{
|
||||
row["elozoOranHianyzott"] = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
row["elozoOranHianyzott"] = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SetMulasztasEloreRogzitettIgazolas(DataRow row, int tanoraId)
|
||||
{
|
||||
if (tanoraId < 0)
|
||||
{
|
||||
if (row["RogzitettIgazolas"].ToString() == "T" && string.IsNullOrWhiteSpace(SDAConvert.ToString(row["MulasztasId"])))
|
||||
{
|
||||
row["MulasztasTipus"] = (int)MulasztasTipusEnum.hianyzas;
|
||||
row["MulasztasTipus_DNAME"] = MulasztasTipusEnum.hianyzas.GetDisplayName(ConnectionType.TanevId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SetMulasztasTipusUresOraMentesseg(DataRow row, DateTime oraKezdete, int tanoraId)
|
||||
{
|
||||
// csak nem naplózott óráknál kell
|
||||
if (tanoraId < 0)
|
||||
{
|
||||
var magantanulosagKezdete = SDAConvert.ToDateTime(row["MagantanulosagKezdete"]);
|
||||
var magantanulosagVege = SDAConvert.ToDateTime(row["MagantanulosagVege"]);
|
||||
if (SDAConvert.ToBoolean(row["OraMentesseg_BOOL"]) ||
|
||||
(SDAConvert.ToBoolean(row["IsMagantanulo_BOOL"]) && (magantanulosagKezdete.HasValue == false || magantanulosagKezdete.Value.Date <= oraKezdete.Date) && (!magantanulosagVege.HasValue || magantanulosagVege >= oraKezdete.Date)))
|
||||
{
|
||||
row["MulasztasTipus"] = (int)MulasztasTipusEnum.ures;
|
||||
row["MulasztasTipus_DNAME"] = MulasztasTipusEnum.ures.GetDisplayName(ConnectionType.TanevId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SetAmiTooltipsAndInfos(DataRow row)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(row.Field<string>("EvfolyamId_DNAME")))
|
||||
{
|
||||
row["TanuloNev"] = row.Field<string>("TanuloNev").Substring(0, row.Field<string>("TanuloNev").Length - 1) +
|
||||
" - " +
|
||||
row.Field<string>("EvfolyamId_DNAME") + ", " +
|
||||
row.Field<string>("AmiTagozatId_DNAME") + ")";
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(row.Field<string>("AmiFotargyId_DNAME")))
|
||||
{ row["AmiFotargyId_DNAME"] = "-"; }
|
||||
if (string.IsNullOrWhiteSpace(row.Field<string>("AmiTagozatId_DNAME")))
|
||||
{ row["AmiTagozatId_DNAME"] = "-"; }
|
||||
if (string.IsNullOrWhiteSpace(row.Field<string>("AmiTantargyKotelezosegId_DNAME")))
|
||||
{ row["AmiTantargyKotelezosegId_DNAME"] = "-"; }
|
||||
if (string.IsNullOrWhiteSpace(row.Field<string>("EvfolyamId_DNAME")))
|
||||
{ row["EvfolyamId_DNAME"] = "-"; }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
using System.Collections.Generic;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
|
||||
{
|
||||
public class DigitalisOktatasAdatok
|
||||
{
|
||||
public int? DigEszkozTipusId { get; set; }
|
||||
public int? DigPlatformTipusId { get; set; }
|
||||
public List<int> DigTamEszkozTipusList { get; set; }
|
||||
|
||||
internal void Fill(TanoraCO co)
|
||||
{
|
||||
DigEszkozTipusId = co.DigEszkozTipusId;
|
||||
DigPlatformTipusId = co.DigPlatformTipusId;
|
||||
DigTamEszkozTipusList = co.DigTamEszkozTipusIdList;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
|
||||
{
|
||||
public class EgyediNaplozasElokeszitesCo : NaplozasElokeszitesCo
|
||||
{
|
||||
public int TanarId { get; set; }
|
||||
public int? TeremId { get; set; }
|
||||
public int? FoglakozasId { get; set; }
|
||||
public int? OsztalyCsoportId { get; set; }
|
||||
public int? TantargyId { get; set; }
|
||||
public int? CsengetesirendOraId { get; set; }
|
||||
public int? CsengetesirendId { get; set; }
|
||||
public int? HelyettesitesId { get; set; }
|
||||
public int? HelyettesitesTanarId { get; set; }
|
||||
public string HelyettesitesOka { get; set; }
|
||||
public int? HelyettesitesTipus { get; set; }
|
||||
public bool IsOraOsszevonas { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
using System;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
|
||||
{
|
||||
public class HazifeladatModel
|
||||
{
|
||||
public int? Id { get; set; }
|
||||
public string Szoveg { get; set; }
|
||||
public DateTime? Hatarido { get; set; }
|
||||
public int? CsatolmanyId { get; set; }
|
||||
|
||||
internal void Fill(TanoraCO co)
|
||||
{
|
||||
Id = co.HaziFeladatId;
|
||||
Szoveg = co.HaziFeladat;
|
||||
Hatarido = co.HaziHatarideje;
|
||||
CsatolmanyId = co.HaziFeladatCsatolmanyId;
|
||||
}
|
||||
|
||||
internal void Fill(NaplozasCo co)
|
||||
{
|
||||
Id = co.Hazifeladat.Id;
|
||||
Szoveg = co.Hazifeladat.Szoveg;
|
||||
Hatarido = co.Hazifeladat.Hatarido;
|
||||
CsatolmanyId = co.Hazifeladat.CsatolmanyId;
|
||||
}
|
||||
|
||||
internal void Fill(NaplozasMobilCo co)
|
||||
{
|
||||
Id = co.Hazifeladat.Id;
|
||||
Szoveg = co.Hazifeladat.Szoveg;
|
||||
Hatarido = co.Hazifeladat.Hatarido;
|
||||
CsatolmanyId = co.Hazifeladat.CsatolmanyId;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
using Kreta.BusinessLogic.HelperClasses;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
|
||||
{
|
||||
public class HelyettesitesModel
|
||||
{
|
||||
public int? Id { get; set; }
|
||||
public int? TanarId { get; set; }
|
||||
public string Oka { get; set; }
|
||||
public int? Tipus { get; set; }
|
||||
public bool IsKeresoAltalTalaltOra { get; set; }
|
||||
public bool IsTulora { get; set; }
|
||||
|
||||
internal void Fill(EgyediNaplozasElokeszitesCo input, int userId)
|
||||
{
|
||||
Id = input.HelyettesitesId;
|
||||
TanarId = input.HelyettesitesTipus.HasValue ? userId : (int?)null;
|
||||
Oka = input.HelyettesitesOka;
|
||||
Tipus = input.HelyettesitesTipus;
|
||||
}
|
||||
|
||||
internal void Fill(TanoraCO co)
|
||||
{
|
||||
Id = co.HelyettesitesId;
|
||||
TanarId = co.Helyettesito;
|
||||
Oka = co.HelyettesitesOka;
|
||||
Tipus = co.HelyettesitesTipus;
|
||||
IsTulora = co.HelyettesIsTulora;
|
||||
}
|
||||
|
||||
internal void Fill(NaplozasCo co, bool isEgyediNaplozas)
|
||||
{
|
||||
if (co.Helyettesites.Oka != null)
|
||||
{
|
||||
Oka = co.Helyettesites.Oka;
|
||||
}
|
||||
|
||||
var helyettesitettOrarendiOra = Id.HasValue && Id > 0; /*csak akkor van értéke ha az orarendi ora már feltöltötte és volt rajta beállított helyetesites*/
|
||||
if (helyettesitettOrarendiOra)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!co.Helyettesites.TanarId.HasValue)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
IsKeresoAltalTalaltOra = !isEgyediNaplozas;
|
||||
Id = co.Helyettesites.Id;
|
||||
TanarId = co.Helyettesites.TanarId;
|
||||
Tipus = co.Helyettesites.Tipus;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
|
||||
{
|
||||
public class HelyettesitesNaplozasElokeszitesCo : NaplozasElokeszitesCo
|
||||
{
|
||||
public int? HelyettesitesId { get; set; }
|
||||
public int? HelyettesitesTanarId { get; set; }
|
||||
public string HelyettesitesOka { get; set; }
|
||||
public int? HelyettesitesTipus { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
|
||||
{
|
||||
public class MulasztasItem
|
||||
{
|
||||
public int? MulasztasId { get; set; }
|
||||
public int TanuloId { get; set; }
|
||||
public int? MulasztasTipus { get; set; }
|
||||
public int? Keses { get; set; }
|
||||
|
||||
public bool HazifeladatHiany { get; set; }
|
||||
public bool FelszerelesHiany { get; set; }
|
||||
public bool Felmentes { get; set; }
|
||||
public bool TanoraiDicseret { get; set; }
|
||||
|
||||
public int? HazifeladatHianyId { get; set; }
|
||||
public int? FelszerelesHianyId { get; set; }
|
||||
public int? FelmentesId { get; set; }
|
||||
public int? TanoraiDicseretId { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,83 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Kreta.BusinessLogic.Helpers;
|
||||
using Kreta.Core.ConnectionType;
|
||||
using Kreta.Enums;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
|
||||
{
|
||||
public class MulasztasModel
|
||||
{
|
||||
public MulasztasModel()
|
||||
{
|
||||
MulasztasList = new List<MulasztasItem>();
|
||||
}
|
||||
|
||||
public int? JogviszonySzunetletetokDb { get; set; }
|
||||
public string JogviszonySzunetletetok { get; set; }
|
||||
public int? SzakmaiGyakorlatonLevokDb { get; set; }
|
||||
public string SzakmaiGyakorlatonLevok { get; set; }
|
||||
public List<MulasztasItem> MulasztasList { get; set; }
|
||||
|
||||
internal void Fill(NaplozasCo co, int maxKeses)
|
||||
{
|
||||
foreach (var item in co.MulasztasList)
|
||||
{
|
||||
MulasztasList.Add(new MulasztasItem()
|
||||
{
|
||||
MulasztasId = item.MulasztasId,
|
||||
|
||||
TanuloId = item.TanuloId,
|
||||
MulasztasTipus = item.MulasztasTipus,
|
||||
Keses = item.Keses >= maxKeses ? maxKeses : item.Keses,
|
||||
HazifeladatHiany = item.HazifeladatHiany,
|
||||
FelszerelesHiany = item.FelszerelesHiany,
|
||||
Felmentes = item.Felmentes,
|
||||
TanoraiDicseret = item.TanoraiDicseret,
|
||||
|
||||
HazifeladatHianyId = item.HazifeladatHianyId,
|
||||
FelszerelesHianyId = item.FelszerelesHianyId,
|
||||
FelmentesId = item.FelmentesId,
|
||||
TanoraiDicseretId = item.TanoraiDicseretId
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
internal void Fill(IConnectionType connectionType, NaplozasMobilCo co, int maxKeses, int? tanitasiOraId)
|
||||
{
|
||||
var oraMulasztasai = new MulasztasHelper(connectionType).GetTanoraMulasztasai(tanitasiOraId);
|
||||
var oraFeljegyzesei = new FeljegyzesekHelper(connectionType).GetTanoraFeljegyzesei(tanitasiOraId);
|
||||
|
||||
foreach (var item in co.MulasztasList)
|
||||
{
|
||||
var mulasztasItem = new MulasztasItem()
|
||||
{
|
||||
TanuloId = item.TanuloId,
|
||||
MulasztasTipus = item.MulasztasTipus,
|
||||
Keses = item.Keses >= maxKeses ? maxKeses : item.Keses,
|
||||
HazifeladatHiany = item.HazifeladatHiany,
|
||||
FelszerelesHiany = item.FelszerelesHiany,
|
||||
Felmentes = item.Felmentes,
|
||||
TanoraiDicseret = item.TanoraiDicseret,
|
||||
};
|
||||
|
||||
var oldMulasztasId = oraMulasztasai.FirstOrDefault(a => a.TanuloId == item.TanuloId);
|
||||
mulasztasItem.MulasztasId = oldMulasztasId?.MulasztasId;
|
||||
|
||||
var oldHazifeladatHiany = oraFeljegyzesei.FirstOrDefault(a => a.TanuloId == item.TanuloId && a.FeljegyzesTipus == (int)EsemenyTipusEnum.HaziFeladatHiany);
|
||||
mulasztasItem.HazifeladatHianyId = oldHazifeladatHiany?.FeljegyzesId;
|
||||
|
||||
var oldFelszereleshiany = oraFeljegyzesei.FirstOrDefault(a => a.TanuloId == item.TanuloId && a.FeljegyzesTipus == (int)EsemenyTipusEnum.Felszereleshiany);
|
||||
mulasztasItem.FelszerelesHianyId = oldFelszereleshiany?.FeljegyzesId;
|
||||
|
||||
var oldFelmentes = oraFeljegyzesei.FirstOrDefault(a => a.TanuloId == item.TanuloId && a.FeljegyzesTipus == (int)EsemenyTipusEnum.SzakmaiMentessegNemHivatalos);
|
||||
mulasztasItem.FelmentesId = oldFelmentes?.FeljegyzesId;
|
||||
|
||||
var oldDicseret = oraFeljegyzesei.FirstOrDefault(a => a.TanuloId == item.TanuloId && a.FeljegyzesTipus == (int)EsemenyTipusEnum.Dicseret);
|
||||
mulasztasItem.TanoraiDicseretId = oldDicseret?.FeljegyzesId;
|
||||
|
||||
MulasztasList.Add(mulasztasItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
using System;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic.Naplozas
|
||||
{
|
||||
public class NaplozasElokeszitesCo
|
||||
{
|
||||
public DateTime Start { get; set; }
|
||||
public DateTime End { get; set; }
|
||||
|
||||
public int? OrarendiOraId { get; set; }
|
||||
public int? TanitasiOraId { get; set; }
|
||||
public int? SzervezetTipusId { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,320 @@
|
|||
using System;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using Kreta.BusinessLogic.Classes;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.BusinessLogic.Helpers;
|
||||
using Kreta.BusinessLogic.Helpers.SystemSettings;
|
||||
using Kreta.BusinessLogic.Logic.Naplozas.Validacio;
|
||||
using Kreta.Core;
|
||||
using Kreta.Core.ConnectionType;
|
||||
using Kreta.Enums;
|
||||
using Kreta.Resources;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
|
||||
{
|
||||
public class NaplozasElokeszitesLogic
|
||||
{
|
||||
protected NaplozasElokeszitesModel Model;
|
||||
|
||||
protected IConnectionType ConnectionType;
|
||||
|
||||
protected NaploValidacio Validator;
|
||||
|
||||
public NaplozasElokeszitesModel GetModel
|
||||
{
|
||||
get { return Model; }
|
||||
}
|
||||
|
||||
protected NaplozasElokeszitesLogic(NaploValidacio validator)
|
||||
{
|
||||
Validator = validator;
|
||||
ConnectionType = validator.ConnectionType;
|
||||
}
|
||||
|
||||
public NaplozasElokeszitesLogic(NaploValidacio validator, NaplozasElokeszitesCo input) : this(validator)
|
||||
{
|
||||
FillInnerModel(input);
|
||||
}
|
||||
|
||||
public NaplozasElokeszitesLogic(NaploValidacio validator, EgyediNaplozasElokeszitesCo input) : this(validator)
|
||||
{
|
||||
FillInnerModel(input);
|
||||
}
|
||||
|
||||
public NaplozasElokeszitesLogic(NaploValidacio validator, HelyettesitesNaplozasElokeszitesCo input) : this(validator)
|
||||
{
|
||||
FillInnerModel(input);
|
||||
}
|
||||
|
||||
private void FillInnerModel(NaplozasElokeszitesCo input)
|
||||
{
|
||||
var thelper = new TanoraHelper(ConnectionType);
|
||||
|
||||
var oraCo = thelper.GetTanoraByOrarendiId(input.TanitasiOraId ?? input.OrarendiOraId.Value, input.Start, input.TanitasiOraId.HasValue, isTanuloOrGondviselo: false);
|
||||
|
||||
if (input is HelyettesitesNaplozasElokeszitesCo helyettesitesNaplozasElokeszitesInput)
|
||||
{
|
||||
oraCo.HelyettesitesTipus = helyettesitesNaplozasElokeszitesInput.HelyettesitesTipus ?? oraCo.HelyettesitesTipus;
|
||||
oraCo.HelyettesitesId = helyettesitesNaplozasElokeszitesInput.HelyettesitesId ?? oraCo.HelyettesitesId;
|
||||
oraCo.HelyettesitesOka = !string.IsNullOrWhiteSpace(helyettesitesNaplozasElokeszitesInput.HelyettesitesOka) ? helyettesitesNaplozasElokeszitesInput.HelyettesitesOka : oraCo.HelyettesitesOka;
|
||||
oraCo.Helyettesito = ConnectionType.FelhasznaloId;
|
||||
}
|
||||
|
||||
Model = new NaplozasElokeszitesModel(ConnectionType.FelhasznaloId, input.SzervezetTipusId);
|
||||
|
||||
var systemSettingsHelper = new SystemSettingsHelper(ConnectionType);
|
||||
var helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Helyettesites_eseten_felugyelet_alapertelmezetten_sorszamozando);
|
||||
|
||||
Model.OraAdat.Fill(oraCo, helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando);
|
||||
|
||||
if (input.TanitasiOraId.HasValue)
|
||||
{
|
||||
SetEgyediOraEvesOraszam(thelper, sorszamozando: false);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetEgyediOraEvesOraszam(thelper, Model.OraAdat.IsSorszamozando);
|
||||
}
|
||||
|
||||
SetOsztalyfonok(new OsztalyHelper(ConnectionType));
|
||||
SetElozoOraAdatai(new OrarendiOraHelper(ConnectionType));
|
||||
SetSzamonkeresElorejelzesAdatai(new SzamonkeresElorejelzesHelper(ConnectionType));
|
||||
SetHetesekAdatai(new HetesekHelper(ConnectionType));
|
||||
SetTemaLista(thelper);
|
||||
SetMentessegList(new OrarendHelper(ConnectionType));
|
||||
|
||||
Model.OraTulajdonsag.Fill(oraCo);
|
||||
Model.Helyettesites.Fill(oraCo);
|
||||
if (!Model.SzervezetTipusId.HasValue)
|
||||
{
|
||||
Model.Hazifeladat.Fill(oraCo);
|
||||
Model.DigitalisOktatas.Fill(oraCo);
|
||||
}
|
||||
}
|
||||
|
||||
private void FillInnerModel(EgyediNaplozasElokeszitesCo input)
|
||||
{
|
||||
Model = new NaplozasElokeszitesModel(ConnectionType.FelhasznaloId);
|
||||
|
||||
if (input.FoglakozasId.HasValue)
|
||||
{
|
||||
var helper = new TantargyFelosztasHelper(ConnectionType);
|
||||
var ttf = helper.GetFoglalkozasDataById(input.FoglakozasId.Value);
|
||||
var nemzetisegiOra = SDAConvert.ToBooleanFromTF(ttf.Tables[0].Rows[0]["NemzetisegiOra"]);
|
||||
var naplozasCo = new NaplozasCo
|
||||
{
|
||||
OraTulajdosag = new NaplozasCo.OraTulajdonsagModel
|
||||
{
|
||||
NemzetisegiOra = nemzetisegiOra
|
||||
}
|
||||
};
|
||||
Model.OraTulajdonsag.Fill(naplozasCo);
|
||||
}
|
||||
|
||||
Model.IsEgyediNaplozas = true;
|
||||
|
||||
var systemSettingsHelper = new SystemSettingsHelper(ConnectionType);
|
||||
var helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Helyettesites_eseten_felugyelet_alapertelmezetten_sorszamozando);
|
||||
|
||||
Model.OraAdat.Fill(ConnectionType, input, helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando);
|
||||
|
||||
Model.Helyettesites.Fill(input, ConnectionType.FelhasznaloId);
|
||||
|
||||
var tanarHelper = new TanarHelper(ConnectionType);
|
||||
var tanoraHelper = new TanoraHelper(ConnectionType);
|
||||
|
||||
SetTanar(tanarHelper, input.HelyettesitesTanarId);
|
||||
SetOraszam(new CsengetesiRendOrakHelper(ConnectionType));
|
||||
SetTantargyOsztalycsoport();
|
||||
|
||||
SetEgyediOraEvesOraszam(tanoraHelper, Model.OraAdat.IsSorszamozando);
|
||||
SetElozoOraAdatai(new OrarendiOraHelper(ConnectionType));
|
||||
SetEgyediOraTema(tanoraHelper);
|
||||
SetTemaLista(tanoraHelper);
|
||||
SetHazifeladat();
|
||||
SetHetesekAdatai(new HetesekHelper(ConnectionType));
|
||||
SetOraVegeByOrahossz();
|
||||
}
|
||||
|
||||
private void SetOraVegeByOrahossz()
|
||||
{
|
||||
var isOravegeBeallitasOrahosszAlapjan = new SystemSettingsHelper(ConnectionType).GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Orarendi_Elem_Hossz);
|
||||
if (isOravegeBeallitasOrahosszAlapjan)
|
||||
{
|
||||
var csoport = new CsoportHelper(ConnectionType).GetCsoportCoList().SingleOrDefault(cs => cs.Id == Model.OraAdat.OsztalyCsoportId.Value);
|
||||
if (csoport != null)
|
||||
{
|
||||
var csoportTipusList = new AdatszotarHelper(ConnectionType).GetCsoportTipusList();
|
||||
var csoportTipusId = csoport.TipusId ?? (int)CsoportTipusEnum.iskolai_csoport_tanorai_celu_;
|
||||
var csoportTipus = csoportTipusList.Single(cs => cs.Id == csoportTipusId);
|
||||
|
||||
if (csoportTipus.OraPerc.HasValue)
|
||||
{
|
||||
Model.OraAdat.OraVege = Model.OraAdat.OraKezdete.AddMinutes(csoportTipus.OraPerc.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void SetMentessegList(OrarendHelper helper)
|
||||
{
|
||||
var ds = helper.GetOraMentessegList(Model.OraAdat.OraKezdete, Model.OraAdat.OraVege, Model.OraAdat.OsztalyCsoportId.Value);
|
||||
if (ds.Tables[0].Rows.Count == 1)
|
||||
{
|
||||
var row = ds.Tables[0].Rows[0];
|
||||
Model.Mulasztas.JogviszonySzunetletetokDb = row.Field<int>("JogviszonyDb");
|
||||
Model.Mulasztas.JogviszonySzunetletetok = row.Field<string>("JogviszonyNevSor");
|
||||
Model.Mulasztas.SzakmaiGyakorlatonLevokDb = row.Field<int>("SzakmaiGyakDb");
|
||||
Model.Mulasztas.SzakmaiGyakorlatonLevok = row.Field<string>("SzakmaiGyakNevSor");
|
||||
}
|
||||
}
|
||||
|
||||
protected void SetTemaLista(TanoraHelper helper)
|
||||
{
|
||||
Model.OraAdat.TemaLista = helper.GetTemaIdAndNameForNaplozasDDL(Model.OraAdat.TantargyId.Value, Model.OraAdat.OsztalyCsoportId.Value, Model.OraAdat.TanarId.Value, Model.SzervezetTipusId);
|
||||
}
|
||||
|
||||
protected void SetElozoOraAdatai(OrarendiOraHelper helper)
|
||||
{
|
||||
var elozoOraAdatai = helper.GetElozoOraAdatai(Model.OraAdat.TantargyId.Value, Model.OraAdat.OsztalyCsoportId.Value, Model.OraAdat.TanarId.Value, Model.OraAdat.OraKezdete);
|
||||
Model.OraAdat.ElozoOraAdat = elozoOraAdatai?.ElozoOraAdatai ?? string.Empty;
|
||||
Model.OraAdat.ElozoOraTema = elozoOraAdatai?.ElozoOraTemaja ?? string.Empty;
|
||||
}
|
||||
|
||||
protected void SetSzamonkeresElorejelzesAdatai(SzamonkeresElorejelzesHelper helper)
|
||||
{
|
||||
var ds = helper.GetSzamonkeresElorejelzesDetailDataSet(new SzamonkeresElorejelzesSearchCO
|
||||
{
|
||||
OraGroupId = Model.OraAdat.GroupId,
|
||||
Datum = Model.OraAdat.OraKezdete.Date,
|
||||
OraszamSrc = Model.OraAdat.Oraszam,
|
||||
OsztalyCsoportId = Model.OraAdat.OsztalyCsoportId
|
||||
}, isKellKapcsolodoOsztalyok: false);
|
||||
|
||||
if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0 && !string.IsNullOrWhiteSpace(SDAConvert.ToString(ds.Tables[0].Rows[0]["SzamonkeresMod"])))
|
||||
{
|
||||
Model.OraAdat.SzamonkeresModId = SDAConvert.ToInt32(ds.Tables[0].Rows[0]["SzamonkeresModId"]);
|
||||
Model.OraAdat.SzamonkeresModja = SDAConvert.ToString(ds.Tables[0].Rows[0]["SzamonkeresMod"]);
|
||||
Model.OraAdat.SzamonkeresMegnevezes = SDAConvert.ToString(ds.Tables[0].Rows[0]["SzamonkeresMegnevezes"]);
|
||||
}
|
||||
}
|
||||
|
||||
protected void SetHetesekAdatai(HetesekHelper helper)
|
||||
{
|
||||
Model.OraAdat.Hetesek = helper.GetHetesekForDatum(Model.OraAdat.OsztalyCsoportId.Value, Model.OraAdat.OraKezdete.Date);
|
||||
}
|
||||
|
||||
protected void SetOsztalyfonok(OsztalyHelper helper)
|
||||
{
|
||||
Model.OraAdat.OsztalyfonokId = helper.GetOsztalyfonokByOsztalyId(Model.OraAdat.OsztalyCsoportId.Value);
|
||||
}
|
||||
|
||||
protected void SetTanar(TanarHelper helper, int? helyettesTanarId)
|
||||
{
|
||||
if (helyettesTanarId.HasValue)
|
||||
{
|
||||
Model.OraAdat.TanarNev = helper.GetTanarNev(helyettesTanarId.Value);
|
||||
Model.OraAdat.TanarId = helyettesTanarId;
|
||||
}
|
||||
else
|
||||
{
|
||||
Model.OraAdat.TanarNev = helper.GetTanarNev(ConnectionType.FelhasznaloId);
|
||||
Model.OraAdat.TanarId = ConnectionType.FelhasznaloId;
|
||||
}
|
||||
}
|
||||
|
||||
protected void SetOraszam(CsengetesiRendOrakHelper helper)
|
||||
{
|
||||
if (!Model.OraAdat.IsTanorankivuli)
|
||||
{
|
||||
Model.OraAdat.Oraszam = helper.GetCsengetesiRendOraSzam(Model.OraAdat.CsengetesirendOraId.Value);
|
||||
}
|
||||
}
|
||||
|
||||
protected void SetTantargyOsztalycsoport()
|
||||
{
|
||||
TantargyFoglalkozasCO foglalkozas = null;
|
||||
|
||||
if (Model.OraAdat.FoglakozasId.IsEntityId() && (!Model.OraAdat.OsztalyCsoportId.IsEntityId() || !Model.OraAdat.TantargyId.IsEntityId()))
|
||||
{
|
||||
foglalkozas = new FoglalkozasHelper(ConnectionType).GetFoglalkozas(Model.OraAdat.FoglakozasId.Value);
|
||||
}
|
||||
|
||||
if (Model.OraAdat.OsztalyCsoportId.IsEntityId())
|
||||
{
|
||||
Model.OraAdat.OsztalyCsoportNev = new OsztalyCsoportHelper(ConnectionType).GetOsztalyCsoportNevById(Model.OraAdat.OsztalyCsoportId.Value);
|
||||
}
|
||||
else if (foglalkozas != null)
|
||||
{
|
||||
Model.OraAdat.OsztalyCsoportNev = foglalkozas.OsztalyCsoportNev;
|
||||
Model.OraAdat.OsztalyCsoportId = foglalkozas.OsztalyCsoportId;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception(ErrorResource.NincsSemOsztalycsoportSemFoglalkozas);
|
||||
}
|
||||
|
||||
if (Model.OraAdat.TantargyId.IsEntityId())
|
||||
{
|
||||
var tantargy = new TantargyHelper(ConnectionType).GetTantargyById(Model.OraAdat.TantargyId.Value);
|
||||
Model.OraAdat.TantargyNev = tantargy.TantargyNev;
|
||||
}
|
||||
else if (foglalkozas != null)
|
||||
{
|
||||
Model.OraAdat.TantargyId = foglalkozas.TantargyId;
|
||||
Model.OraAdat.TantargyNev = foglalkozas.TantargyNev;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception(ErrorResource.NincsSemTantargySemFoglalkozas);
|
||||
}
|
||||
}
|
||||
|
||||
protected void SetEgyediOraTema(TanoraHelper tanoraHelper)
|
||||
{
|
||||
Model.OraAdat.Tema = tanoraHelper.GetTemaEvesOraSorszamhoz(Model.OraAdat.TantargyId.Value, Model.OraAdat.OsztalyCsoportId.Value, ConnectionType.FelhasznaloId, Model.OraAdat.EvesOraSorszam.Value);
|
||||
}
|
||||
|
||||
protected void SetEgyediOraEvesOraszam(TanoraHelper tanoraHelper, bool sorszamozando)
|
||||
{
|
||||
var evesOraszam = tanoraHelper.GetOraEvesSorszamaSP(Model.OraAdat.TantargyId.Value, Model.OraAdat.OsztalyCsoportId.Value, Model.OraAdat.OraKezdete, Model.OraAdat.TanarId.Value);
|
||||
if (Model.OraAdat.IsElmaradt)
|
||||
{
|
||||
Model.OraAdat.EvesOraSorszam = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
Model.OraAdat.EvesOraSorszam = sorszamozando ? evesOraszam + 1 : evesOraszam;
|
||||
}
|
||||
}
|
||||
|
||||
protected void SetHazifeladat()
|
||||
{
|
||||
Enum.TryParse(new OsztalyCsoportHelper(ConnectionType).GetOsztalyCsoportFeladatKategoria(Model.OraAdat.OsztalyCsoportId.Value).ToString(), out OktNevelesiKategoriaEnum kategoria);
|
||||
|
||||
var helper = new DktFeladatHelper(ConnectionType);
|
||||
|
||||
var hazi = Model.IsTanora ?
|
||||
helper.GetTanitasiOraHaziFeladatDetail(Model.OraAdat.TanitasiOraId, kategoria, isTanuloOrGondviselo: false) :
|
||||
helper.GetOrarendiOraHaziFeladatDetail(Model.OraAdat.OrarendiOraId, Model.OraAdat.OraKezdete, isTanuloOrGondviselo: false, oraszam: null, kategoria);
|
||||
|
||||
if (hazi.Id.HasValue)
|
||||
{
|
||||
Model.Hazifeladat.Id = hazi.Id;
|
||||
Model.Hazifeladat.Szoveg = hazi.Szoveg;
|
||||
Model.Hazifeladat.Hatarido = hazi.Hatarido;
|
||||
}
|
||||
}
|
||||
|
||||
public bool TeremUtkozesEllenorzes()
|
||||
{
|
||||
return Validator.TeremUtkozesEllenorzes(Model);
|
||||
}
|
||||
|
||||
public string GetOsztalyEsTanarOraiUtkozes()
|
||||
{
|
||||
return Validator.GetOsztalyEsTanarOraiUtkozes(Model);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,294 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.Enums;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
|
||||
{
|
||||
public class NaplozasElokeszitesModel
|
||||
{
|
||||
public bool IsEgyediNaplozas { get; set; }
|
||||
|
||||
public int UserId { get; set; }
|
||||
|
||||
public bool IsHelyettesites
|
||||
{
|
||||
get
|
||||
{
|
||||
return Helyettesites.TanarId.HasValue;
|
||||
}
|
||||
}
|
||||
|
||||
public bool HasOrarendiOra
|
||||
{
|
||||
get
|
||||
{
|
||||
return OraAdat.OrarendiOraId.HasValue;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsTanora
|
||||
{
|
||||
get
|
||||
{
|
||||
return OraAdat.TanitasiOraId.HasValue;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsElmaradtOra
|
||||
{
|
||||
get
|
||||
{
|
||||
return OraAdat.IsElmaradt;
|
||||
}
|
||||
}
|
||||
|
||||
private bool IsOraTulajdonosa
|
||||
{
|
||||
get
|
||||
{
|
||||
if (IsEgyediNaplozas)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (IsHelyettesites)
|
||||
{
|
||||
return Helyettesites.TanarId == UserId;
|
||||
}
|
||||
|
||||
return OraAdat.TanarId == UserId;
|
||||
}
|
||||
}
|
||||
|
||||
public bool NaplozhatoDatum
|
||||
{
|
||||
get
|
||||
{
|
||||
return OraAdat.OraKezdete < DateTime.Now.Date.AddDays(1);
|
||||
}
|
||||
}
|
||||
|
||||
public bool Ertekelhet
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!NaplozhatoDatum)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (IsHelyettesites && (Helyettesites.Tipus == (int)HelyettesitesTipusEnum.oraosszevonas || Helyettesites.Tipus == (int)HelyettesitesTipusEnum.szakszeru_helyettesites))
|
||||
{
|
||||
return Helyettesites.TanarId == UserId;
|
||||
}
|
||||
|
||||
return OraAdat.TanarId == UserId;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public bool Naplozhat
|
||||
{
|
||||
get
|
||||
{
|
||||
return IsTanora ? IsOraTulajdonosa : (OraAdat.IsOraOsszevonas || IsOraTulajdonosa) && NaplozhatoDatum;
|
||||
}
|
||||
}
|
||||
|
||||
public string OraTartamText
|
||||
{
|
||||
get
|
||||
{
|
||||
return $"{OraAdat.OraKezdete.ToShortDateString()} {OraAdat.OraKezdete.ToShortTimeString()}-{OraAdat.OraVege.ToShortTimeString()}";
|
||||
}
|
||||
}
|
||||
|
||||
public bool KellElozoOraTema
|
||||
{
|
||||
get
|
||||
{
|
||||
return !IsTanora || IsEgyediNaplozas;
|
||||
}
|
||||
}
|
||||
|
||||
public int MaxKeses
|
||||
{
|
||||
get
|
||||
{
|
||||
var span = OraAdat.OraVege.Subtract(OraAdat.OraKezdete);
|
||||
return (span.Hours * 60) + span.Minutes - 1;
|
||||
}
|
||||
}
|
||||
|
||||
internal NaplozasElokeszitesModel(int userId, int? szervezetTipusId = null)
|
||||
{
|
||||
UserId = userId;
|
||||
OraAdat = new OraAdatModel();
|
||||
Helyettesites = new HelyettesitesModel();
|
||||
OraTulajdonsag = new OraTulajdonsagModel();
|
||||
Hazifeladat = new HazifeladatModel();
|
||||
Mulasztas = new MulasztasModel();
|
||||
DigitalisOktatas = new DigitalisOktatasAdatok();
|
||||
SzervezetTipusId = szervezetTipusId;
|
||||
}
|
||||
|
||||
public OraAdatModel OraAdat { get; set; }
|
||||
|
||||
public HelyettesitesModel Helyettesites { get; set; }
|
||||
|
||||
public OraTulajdonsagModel OraTulajdonsag { get; set; }
|
||||
|
||||
public HazifeladatModel Hazifeladat { get; set; }
|
||||
|
||||
public MulasztasModel Mulasztas { get; set; }
|
||||
|
||||
public DigitalisOktatasAdatok DigitalisOktatas { get; set; }
|
||||
|
||||
public int? SzervezetTipusId { get; set; }
|
||||
|
||||
public bool IsMentorOra { get; set; }
|
||||
|
||||
public void ConvertTo(TanoraCO co)
|
||||
{
|
||||
co.IsTanoranKivuli = OraAdat.IsTanorankivuli;
|
||||
co.ID = OraAdat.TanitasiOraId;
|
||||
co.Datum = OraAdat.OraKezdete.Date;
|
||||
co.BejegyIdo = OraAdat.RogzitesDatuma;
|
||||
co.HetNapja = OraAdat.HetNapja;
|
||||
co.Hetirend = OraAdat.Hetirend;
|
||||
co.Megjegyzes = OraAdat.Megjegyzes;
|
||||
co.Megtartott = !IsElmaradtOra;
|
||||
co.MobilNaplozott = OraAdat.IsMobilNaplozott;
|
||||
co.AdminAltalKiirt = OraAdat.IsAdminAltalKiirt;
|
||||
co.OraKezd = OraAdat.OraKezdete;
|
||||
co.OraVeg = OraAdat.OraVege;
|
||||
co.EvesOraSorszam = OraAdat.EvesOraSorszam;
|
||||
co.Oraszam = OraAdat.Oraszam ?? -1;
|
||||
co.Sorszamozando = OraAdat.IsSorszamozando;
|
||||
co.TemaTanmenetId = OraAdat.TemaTanmenetId;
|
||||
co.TanulasiEgysegId = OraAdat.TanulasiEgysegId;
|
||||
co.Tema = OraAdat.Tema;
|
||||
co.Targy = OraAdat.TantargyId;
|
||||
co.OrarendiOra = OraAdat.OrarendiOraId;
|
||||
co.Fogl = OraAdat.FoglakozasId;
|
||||
co.Tulaj = UserId;
|
||||
co.OrarendiOraGroupId = OraAdat.GroupId;
|
||||
co.Tanar = OraAdat.TanarId;
|
||||
co.Terem = OraAdat.TeremId;
|
||||
co.OsztCsop = OraAdat.OsztalyCsoportId;
|
||||
co.CsengetesiRendOraId = OraAdat.CsengetesirendOraId;
|
||||
co.CsengetesiRendID = OraAdat.CsengetesirendId;
|
||||
|
||||
co.IktTanora = OraTulajdonsag.IktTanora;
|
||||
co.Bontott = OraTulajdonsag.Bontott;
|
||||
co.IsFelnottoktatasiSzerzodes = OraTulajdonsag.IsFelnottoktatasiSzerzodes;
|
||||
co.OnlineOra = OraTulajdonsag.OnlineOra;
|
||||
co.NemzetisegiOra = OraTulajdonsag.NemzetisegiOra;
|
||||
co.MindennaposTestneveles = OraTulajdonsag.MindennaposTestneveles;
|
||||
co.IPRTanora = OraTulajdonsag.IPRTanora;
|
||||
co.Differencialt = OraTulajdonsag.Differencialt;
|
||||
co.Kooperativ = OraTulajdonsag.Kooperativ;
|
||||
co.Meres = OraTulajdonsag.Meres;
|
||||
co.Drama = OraTulajdonsag.Drama;
|
||||
co.Tiop = OraTulajdonsag.Tiop;
|
||||
co.ParhuzamosOra = OraTulajdonsag.ParhuzamosOra;
|
||||
co.NemSzakrendszeru = OraTulajdonsag.NemSzakrendszeru;
|
||||
co.TAMOP = OraTulajdonsag.TAMOP;
|
||||
co.KIPOra = OraTulajdonsag.KIPOra;
|
||||
co.VEKOP73317 = OraTulajdonsag.VEKOP73317;
|
||||
co.KAPOra = OraTulajdonsag.KAPOra;
|
||||
co.Tulora = OraTulajdonsag.Tulora;
|
||||
co.Multikulturalis = OraTulajdonsag.Multikulturalis;
|
||||
co.EFOP32317 = OraTulajdonsag.EFOP32317;
|
||||
co.KomplexOra = OraTulajdonsag.KomplexOra;
|
||||
co.GINOP623 = OraTulajdonsag.GINOP623;
|
||||
co.EFOP31716EselyteremtesAKoznevelesben = OraTulajdonsag.EFOP31716EselyteremtesAKoznevelesben;
|
||||
co.EFOP33717 = OraTulajdonsag.EFOP33717;
|
||||
co.TIOP11112120120001 = OraTulajdonsag.TIOP11112120120001;
|
||||
co.DFHT = OraTulajdonsag.DFHT;
|
||||
co.Rahangolodas = OraTulajdonsag.Rahangolodas;
|
||||
co.Testmozgas = OraTulajdonsag.Testmozgas;
|
||||
co.Muveszet = OraTulajdonsag.Muveszet;
|
||||
co.Eletgyakorlat = OraTulajdonsag.Eletgyakorlat;
|
||||
co.Logika = OraTulajdonsag.Logika;
|
||||
co.TeOrad = OraTulajdonsag.TeOrad;
|
||||
co.DigitalisAlapProgram = OraTulajdonsag.DigitalisAlapProgram;
|
||||
co.EFOP23517201700038Miapalya = OraTulajdonsag.EFOP23517201700038Miapalya;
|
||||
co.TanevTananyaganakIsmetlese = OraTulajdonsag.TanevTananyaganakIsmetlese;
|
||||
co.TanevTananyaganakKiegeszitese = OraTulajdonsag.TanevTananyaganakKiegeszitese;
|
||||
co.TanulokDigitalisKeszsegfejlesztese = OraTulajdonsag.TanulokDigitalisKeszsegfejlesztese;
|
||||
co.Projektmunka = OraTulajdonsag.Projektmunka;
|
||||
co.TanulokKompenzaciosIraskeszsegFejlesztese = OraTulajdonsag.TanulokKompenzaciosIraskeszsegFejlesztese;
|
||||
co.TanulokKompenzaciosOlvasasiKepessegFejlesztese = OraTulajdonsag.TanulokKompenzaciosOlvasasiKepessegFejlesztese;
|
||||
co.TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese = OraTulajdonsag.TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese;
|
||||
co.TanulokNyelviKepessegenekKompenzaciosFejlesztese = OraTulajdonsag.TanulokNyelviKepessegenekKompenzaciosFejlesztese;
|
||||
co.TanulokOnmegismeresenekSegitese = OraTulajdonsag.TanulokOnmegismeresenekSegitese;
|
||||
co.TanulokOnallosagraNevelese = OraTulajdonsag.TanulokOnallosagraNevelese;
|
||||
co.TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese = OraTulajdonsag.TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese;
|
||||
co.TanulokOrientaciosTamogatasa = OraTulajdonsag.TanulokOrientaciosTamogatasa;
|
||||
co.TanulokSzocialitasanakFejlesztese = OraTulajdonsag.TanulokSzocialitasanakFejlesztese;
|
||||
co.TanulokTovabbhaladasatElokeszitoTevekenysegek = OraTulajdonsag.TanulokTovabbhaladasatElokeszitoTevekenysegek;
|
||||
co.PedagogusAltalJelzettEgyeniEsetkezeles = OraTulajdonsag.PedagogusAltalJelzettEgyeniEsetkezeles;
|
||||
co.ProjektmunkaTamogatasa = OraTulajdonsag.ProjektmunkaTamogatasa;
|
||||
co.DigitalisKeszsegfejlesztes = OraTulajdonsag.DigitalisKeszsegfejlesztes;
|
||||
co.KozossegiMunkaTamogatasa = OraTulajdonsag.KozossegiMunkaTamogatasa;
|
||||
co.TanoraElokeszitesenekTamogatasa = OraTulajdonsag.TanoraElokeszitesenekTamogatasa;
|
||||
co.TanoraLebonyolitasanakTamogatasa = OraTulajdonsag.TanoraLebonyolitasanakTamogatasa;
|
||||
co.NapkozisTevekenysegKeretebenEgyeniFejlesztes = OraTulajdonsag.NapkozisTevekenysegKeretebenEgyeniFejlesztes;
|
||||
|
||||
co.HaziFeladat = Hazifeladat.Szoveg;
|
||||
co.HaziHatarideje = Hazifeladat.Hatarido;
|
||||
co.HaziFeladatId = Hazifeladat.Id;
|
||||
co.CheckedOpenBoardFileIdList = OraAdat.CheckedOpenBoardFileIdList;
|
||||
co.HaziFeladatCsatolmanyId = Hazifeladat.CsatolmanyId;
|
||||
|
||||
co.HelyettesitesId = Helyettesites.Id ?? 0;
|
||||
co.Helyettesito = Helyettesites.TanarId;
|
||||
co.HelyettesitesOka = Helyettesites.Oka;
|
||||
co.HelyettesitesTipus = Helyettesites.Tipus;
|
||||
co.DigEszkozTipusId = OraAdat.DigEszkozTipusId ?? (int)DigEszkozTipusEnum.na;
|
||||
co.DigPlatformTipusId = OraAdat.DigPlatformTipusId ?? (int)DigPlatformTipusEnum.na;
|
||||
co.DigTamEszkozTipusIdList = OraAdat.DigTamEszkozTipusIdList != null && OraAdat.DigTamEszkozTipusIdList.Count > 0 ? OraAdat.DigTamEszkozTipusIdList : new List<int>() { (int)DigTamEszkozTipusEnum.na };
|
||||
}
|
||||
|
||||
public void ConvertTo(List<MulasztasokCo> coList)
|
||||
{
|
||||
foreach (var row in Mulasztas.MulasztasList)
|
||||
{
|
||||
var co = new MulasztasokCo();
|
||||
|
||||
if (row.Keses.HasValue && row.Keses.Value > 0 && row.MulasztasTipus != (int)MulasztasTipusEnum.potlas)
|
||||
{
|
||||
row.MulasztasTipus = (int)MulasztasTipusEnum.keses;
|
||||
}
|
||||
|
||||
if (!row.MulasztasTipus.HasValue)
|
||||
{
|
||||
row.MulasztasTipus = (int)MulasztasTipusEnum.ures;
|
||||
}
|
||||
|
||||
co.ID = row.MulasztasId;
|
||||
co.TanuloId = row.TanuloId;
|
||||
co.MulTip = row.MulasztasTipus;
|
||||
|
||||
if (row.MulasztasTipus == (int)MulasztasTipusEnum.keses || row.MulasztasTipus == (int)MulasztasTipusEnum.potlas)
|
||||
{
|
||||
co.KesIdo = row.Keses ?? 0;
|
||||
}
|
||||
|
||||
co.HazifeladatHiany = row.HazifeladatHiany;
|
||||
co.FelszerelesHiany = row.FelszerelesHiany;
|
||||
co.Felmentes = row.Felmentes;
|
||||
co.TanoraiDicseret = row.TanoraiDicseret;
|
||||
|
||||
co.HazifeladatHianyId = row.HazifeladatHianyId;
|
||||
co.FelszerelesHianyId = row.FelszerelesHianyId;
|
||||
co.FelmentesId = row.FelmentesId;
|
||||
co.TanoraiDicseretId = row.TanoraiDicseretId;
|
||||
|
||||
coList.Add(co);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
243
Kreta.BusinessLogic/Logic/Naplozas/Elokeszites/OraAdatModel.cs
Normal file
243
Kreta.BusinessLogic/Logic/Naplozas/Elokeszites/OraAdatModel.cs
Normal file
|
@ -0,0 +1,243 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.BusinessLogic.Helpers;
|
||||
using Kreta.BusinessLogic.Utils;
|
||||
using Kreta.Core.ConnectionType;
|
||||
using Kreta.Enums;
|
||||
using Kreta.Resources;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
|
||||
{
|
||||
public class OraAdatModel
|
||||
{
|
||||
internal OraAdatModel()
|
||||
{
|
||||
Hetirend = (int)HetiRendTipusEnum.MindegyikHet;
|
||||
TemaLista = new Dictionary<string, string>();
|
||||
}
|
||||
|
||||
public DateTime OraKezdete { get; set; }
|
||||
public DateTime OraVege { get; set; }
|
||||
public DateTime RogzitesDatuma { get; set; }
|
||||
|
||||
public int? OrarendiOraId { get; set; }
|
||||
public int? TanitasiOraId { get; set; }
|
||||
public int? CsengetesirendOraId { get; set; }
|
||||
public int? CsengetesirendId { get; set; }
|
||||
public int? Hanyadikora { get; set; }
|
||||
public int? TanarId { get; set; }
|
||||
public string TanarNev { get; set; }
|
||||
public int? OsztalyfonokId { get; set; }
|
||||
public string Tema { get; set; }
|
||||
public int? TemaTanmenetId { get; set; }
|
||||
public int? TanulasiEgysegId { get; set; }
|
||||
public int? FoglakozasId { get; set; }
|
||||
public int? OsztalyCsoportId { get; set; }
|
||||
public string OsztalyCsoportNev { get; set; }
|
||||
public int? TantargyId { get; set; }
|
||||
public string TantargyNev { get; set; }
|
||||
public int? TeremId { get; set; }
|
||||
public bool IsOraOsszevonas { get; set; }
|
||||
public bool IsElmaradt { get; set; }
|
||||
public bool IsSorszamozando { get; set; }
|
||||
public bool IsTanorankivuli { get; set; }
|
||||
public int? EvesOraSorszam { get; set; }
|
||||
public string Megjegyzes { get; set; }
|
||||
public int? Oraszam { get; set; }
|
||||
public string ElozoOraAdat { get; set; }
|
||||
public string ElozoOraTema { get; set; }
|
||||
public int? SzamonkeresModId { get; set; }
|
||||
public string SzamonkeresModja { get; set; }
|
||||
public string SzamonkeresMegnevezes { get; set; }
|
||||
|
||||
public string SzamonkeresAdatai
|
||||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(SzamonkeresModja))
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
return string.Format(OrarendResource.SzamonkeresElorejelzesModjaTemajaStr, SzamonkeresModja, string.IsNullOrWhiteSpace(SzamonkeresMegnevezes) ? "-" : SzamonkeresMegnevezes);
|
||||
}
|
||||
}
|
||||
|
||||
public string Hetesek { get; set; }
|
||||
public int Hetirend { get; set; }
|
||||
public IDictionary<string, string> TemaLista { get; internal set; }
|
||||
public bool IsMobilNaplozott { get; set; }
|
||||
public bool IsAdminAltalKiirt { get; set; }
|
||||
public int GroupId { get; set; }
|
||||
public int? HetNapja { get; set; }
|
||||
public bool VanOralatogatasa { get; set; }
|
||||
public List<int> CheckedOpenBoardFileIdList { get; internal set; }
|
||||
|
||||
public int? DigEszkozTipusId { get; set; }
|
||||
public int? DigPlatformTipusId { get; set; }
|
||||
public List<int> DigTamEszkozTipusIdList { get; set; }
|
||||
|
||||
internal void Fill(TanoraCO co, bool helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando)
|
||||
{
|
||||
OrarendiOraId = co.OrarendiOra;
|
||||
TanitasiOraId = co.ID;
|
||||
OraKezdete = co.OraKezd;
|
||||
OraVege = co.OraVeg;
|
||||
CsengetesirendOraId = co.CsengetesiRendOraId;
|
||||
CsengetesirendId = co.CsengetesiRendID;
|
||||
TanarId = co.Tanar;
|
||||
FoglakozasId = co.Fogl;
|
||||
OsztalyCsoportId = co.OsztCsop;
|
||||
TantargyId = co.Targy;
|
||||
TeremId = co.Terem;
|
||||
TanarNev = co.TanarNev;
|
||||
OsztalyCsoportNev = co.OsztalyCsoportNev;
|
||||
TantargyNev = co.TantargyNev;
|
||||
EvesOraSorszam = co.EvesOraSorszam;
|
||||
TemaTanmenetId = co.TemaTanmenetId;
|
||||
Tema = co.Tema;
|
||||
TanulasiEgysegId = co.TanulasiEgysegId;
|
||||
IsSorszamozando = GetSorszamozandoBaseValue(co.Sorszamozando, co.HelyettesitesTipus, helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando);
|
||||
Megjegyzes = co.Megjegyzes;
|
||||
Oraszam = co.Oraszam;
|
||||
IsTanorankivuli = co.IsTanoranKivuli;
|
||||
Hetirend = co.Hetirend ?? (int)HetiRendTipusEnum.MindegyikHet;
|
||||
IsMobilNaplozott = co.MobilNaplozott ?? false;
|
||||
IsAdminAltalKiirt = co.AdminAltalKiirt;
|
||||
GroupId = co.OrarendiOraGroupId;
|
||||
HetNapja = co.HetNapja;
|
||||
RogzitesDatuma = co.BejegyIdo;
|
||||
IsElmaradt = !co.Megtartott ?? false;
|
||||
VanOralatogatasa = co.OraLatogatok != null && co.OraLatogatok.Count > 0;
|
||||
CheckedOpenBoardFileIdList = co.CheckedOpenBoardFileIdList;
|
||||
DigEszkozTipusId = co.DigEszkozTipusId;
|
||||
DigPlatformTipusId = co.DigPlatformTipusId;
|
||||
DigTamEszkozTipusIdList = co.DigTamEszkozTipusIdList;
|
||||
}
|
||||
|
||||
internal void Fill(IConnectionType connectionType, EgyediNaplozasElokeszitesCo input, bool helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando)
|
||||
{
|
||||
OraKezdete = input.Start;
|
||||
OraVege = input.End;
|
||||
OrarendiOraId = input.OrarendiOraId;
|
||||
TanitasiOraId = input.TanitasiOraId;
|
||||
CsengetesirendOraId = input.CsengetesirendOraId;
|
||||
CsengetesirendId = input.CsengetesirendId;
|
||||
IsTanorankivuli = !(input.CsengetesirendOraId.HasValue && input.CsengetesirendOraId > 0);
|
||||
|
||||
if (!IsTanorankivuli && !CsengetesirendId.HasValue)
|
||||
{
|
||||
var cshelper = new CsengetesiRendHelper(connectionType);
|
||||
CsengetesirendId = cshelper.GetCsengetesiRendId(CsengetesirendOraId.Value);
|
||||
}
|
||||
|
||||
TanarId = input.TanarId;
|
||||
FoglakozasId = input.FoglakozasId;
|
||||
OsztalyCsoportId = input.OsztalyCsoportId;
|
||||
TantargyId = input.TantargyId;
|
||||
TeremId = input.TeremId;
|
||||
IsOraOsszevonas = input.IsOraOsszevonas;
|
||||
IsSorszamozando = GetSorszamozandoBaseValue(baseValue: true, input.HelyettesitesTipus, helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando);
|
||||
HetNapja = CommonUtils.GetHetNapja(OraKezdete);
|
||||
}
|
||||
|
||||
internal void Fill(NaplozasCo input)
|
||||
{
|
||||
OraKezdete = input.OraAdat.OraKezdete;
|
||||
OraVege = input.OraAdat.OraVege;
|
||||
|
||||
if (input.OraAdat.OrarendiOraId.HasValue)
|
||||
{
|
||||
OrarendiOraId = input.OraAdat.OrarendiOraId;
|
||||
}
|
||||
if (input.OraAdat.TanitasiOraId.HasValue)
|
||||
{
|
||||
TanitasiOraId = input.OraAdat.TanitasiOraId;
|
||||
}
|
||||
if (input.OraAdat.CsengetesirendOraId.HasValue)
|
||||
{
|
||||
CsengetesirendOraId = input.OraAdat.CsengetesirendOraId;
|
||||
}
|
||||
if (input.OraAdat.CsengetesirendId.HasValue)
|
||||
{
|
||||
CsengetesirendId = input.OraAdat.CsengetesirendId;
|
||||
}
|
||||
if (input.OraAdat.TanarId.HasValue && !TanarId.HasValue)
|
||||
{
|
||||
TanarId = input.OraAdat.TanarId;
|
||||
}
|
||||
if (input.OraAdat.TemaTanmenetId.HasValue)
|
||||
{
|
||||
TemaTanmenetId = input.OraAdat.TemaTanmenetId;
|
||||
}
|
||||
if (input.OraAdat.TanulasiEgysegId.HasValue)
|
||||
{
|
||||
TanulasiEgysegId = input.OraAdat.TanulasiEgysegId;
|
||||
}
|
||||
if (input.OraAdat.FoglakozasId.HasValue)
|
||||
{
|
||||
FoglakozasId = input.OraAdat.FoglakozasId;
|
||||
}
|
||||
if (input.OraAdat.OsztalyCsoportId.HasValue)
|
||||
{
|
||||
OsztalyCsoportId = input.OraAdat.OsztalyCsoportId;
|
||||
}
|
||||
if (input.OraAdat.TantargyId.HasValue)
|
||||
{
|
||||
TantargyId = input.OraAdat.TantargyId;
|
||||
}
|
||||
if (input.OraAdat.TeremId.HasValue)
|
||||
{
|
||||
TeremId = input.OraAdat.TeremId;
|
||||
}
|
||||
if (input.OraAdat.Oraszam.HasValue)
|
||||
{
|
||||
Oraszam = input.OraAdat.Oraszam;
|
||||
}
|
||||
if (!input.IsEgyediNaplozas)
|
||||
{
|
||||
CheckedOpenBoardFileIdList = input.OraAdat.CheckedOpenBoardFileIdList;
|
||||
}
|
||||
Tema = input.OraAdat.Tema;
|
||||
IsSorszamozando = input.OraAdat.IsSorszamozando;
|
||||
IsTanorankivuli = input.OraAdat.IsTanorankivuli;
|
||||
Megjegyzes = input.OraAdat.Megjegyzes;
|
||||
|
||||
if (RogzitesDatuma == default)
|
||||
{
|
||||
RogzitesDatuma = DateTime.Now;
|
||||
}
|
||||
|
||||
if (!HetNapja.HasValue)
|
||||
{
|
||||
HetNapja = CommonUtils.GetHetNapja(OraKezdete);
|
||||
}
|
||||
|
||||
IsMobilNaplozott = false;
|
||||
DigPlatformTipusId = input.OraAdat.DigPlatformTipusId;
|
||||
DigEszkozTipusId = input.OraAdat.DigEszkozTipusId;
|
||||
DigTamEszkozTipusIdList = input.OraAdat.DigTamEszkozTipusIdList;
|
||||
}
|
||||
|
||||
internal void Fill(NaplozasMobilCo input)
|
||||
{
|
||||
OrarendiOraId = input.OraAdat.OrarendiOraId;
|
||||
TanitasiOraId = input.OraAdat.TanitasiOraId;
|
||||
Tema = input.OraAdat.Tema;
|
||||
IsElmaradt = input.OraAdat.IsElmaradt;
|
||||
RogzitesDatuma = input.OraAdat.RogzitesDatuma == default ? DateTime.Now : input.OraAdat.RogzitesDatuma;
|
||||
IsMobilNaplozott = true;
|
||||
}
|
||||
|
||||
private bool GetSorszamozandoBaseValue(bool baseValue, int? helyettesitesTipus, bool helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando)
|
||||
{
|
||||
if (!TanitasiOraId.HasValue && (helyettesitesTipus == (int)HelyettesitesTipusEnum.nem_szakszeru_helyettesites_felugyelet_ || helyettesitesTipus == (int)HelyettesitesTipusEnum.osszevont_felugyelet))
|
||||
{
|
||||
return helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando;
|
||||
}
|
||||
|
||||
return baseValue;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,187 @@
|
|||
using Kreta.BusinessLogic.HelperClasses;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
|
||||
{
|
||||
public class OraTulajdonsagModel
|
||||
{
|
||||
public bool Bontott { get; set; }
|
||||
public bool NemzetisegiOra { get; set; }
|
||||
public bool IsFelnottoktatasiSzerzodes { get; set; }
|
||||
public bool OnlineOra { get; set; }
|
||||
public bool MindennaposTestneveles { get; set; }
|
||||
public bool IPRTanora { get; set; }
|
||||
public bool Differencialt { get; set; }
|
||||
public bool Kooperativ { get; set; }
|
||||
public bool Meres { get; set; }
|
||||
public bool Drama { get; set; }
|
||||
public bool Tiop { get; set; }
|
||||
public bool ParhuzamosOra { get; set; }
|
||||
public bool IktTanora { get; set; }
|
||||
public bool TAMOP { get; set; }
|
||||
public bool NemSzakrendszeru { get; set; }
|
||||
public bool Tulora { get; set; }
|
||||
public bool Multikulturalis { get; set; }
|
||||
public bool EFOP32317 { get; set; }
|
||||
public bool KomplexOra { get; set; }
|
||||
public bool KIPOra { get; set; }
|
||||
public bool VEKOP73317 { get; set; }
|
||||
public bool KAPOra { get; set; }
|
||||
public bool GINOP623 { get; set; }
|
||||
public bool EFOP31716EselyteremtesAKoznevelesben { get; set; }
|
||||
public bool EFOP33717 { get; set; }
|
||||
public bool TIOP11112120120001 { get; set; }
|
||||
public bool DFHT { get; set; }
|
||||
public bool Rahangolodas { get; set; }
|
||||
public bool Testmozgas { get; set; }
|
||||
public bool Muveszet { get; set; }
|
||||
public bool Eletgyakorlat { get; set; }
|
||||
public bool Logika { get; set; }
|
||||
public bool TeOrad { get; set; }
|
||||
public bool DigitalisAlapProgram { get; set; }
|
||||
|
||||
public bool EFOP23517201700038Miapalya { get; set; }
|
||||
public bool TanevTananyaganakIsmetlese { get; set; }
|
||||
public bool TanevTananyaganakKiegeszitese { get; set; }
|
||||
public bool TanulokDigitalisKeszsegfejlesztese { get; set; }
|
||||
public bool Projektmunka { get; set; }
|
||||
public bool TanulokKompenzaciosIraskeszsegFejlesztese { get; set; }
|
||||
public bool TanulokKompenzaciosOlvasasiKepessegFejlesztese { get; set; }
|
||||
public bool TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese { get; set; }
|
||||
public bool TanulokNyelviKepessegenekKompenzaciosFejlesztese { get; set; }
|
||||
public bool TanulokOnmegismeresenekSegitese { get; set; }
|
||||
public bool TanulokOnallosagraNevelese { get; set; }
|
||||
public bool TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese { get; set; }
|
||||
public bool TanulokOrientaciosTamogatasa { get; set; }
|
||||
public bool TanulokSzocialitasanakFejlesztese { get; set; }
|
||||
public bool TanulokTovabbhaladasatElokeszitoTevekenysegek { get; set; }
|
||||
public bool PedagogusAltalJelzettEgyeniEsetkezeles { get; set; }
|
||||
public bool ProjektmunkaTamogatasa { get; set; }
|
||||
public bool DigitalisKeszsegfejlesztes { get; set; }
|
||||
public bool KozossegiMunkaTamogatasa { get; set; }
|
||||
public bool TanoraElokeszitesenekTamogatasa { get; set; }
|
||||
public bool TanoraLebonyolitasanakTamogatasa { get; set; }
|
||||
public bool NapkozisTevekenysegKeretebenEgyeniFejlesztes { get; set; }
|
||||
public bool IsEgybefuggoGyakorlat { get; set; }
|
||||
|
||||
internal void Fill(TanoraCO co)
|
||||
{
|
||||
Bontott = co.Bontott;
|
||||
NemzetisegiOra = co.NemzetisegiOra;
|
||||
IsFelnottoktatasiSzerzodes = co.IsFelnottoktatasiSzerzodes;
|
||||
OnlineOra = co.OnlineOra;
|
||||
MindennaposTestneveles = co.MindennaposTestneveles;
|
||||
IPRTanora = co.IPRTanora;
|
||||
Differencialt = co.Differencialt;
|
||||
Kooperativ = co.Kooperativ;
|
||||
Meres = co.Meres;
|
||||
Drama = co.Drama;
|
||||
Tiop = co.Tiop;
|
||||
ParhuzamosOra = co.ParhuzamosOra;
|
||||
IktTanora = co.IktTanora;
|
||||
TAMOP = co.TAMOP;
|
||||
KIPOra = co.KIPOra;
|
||||
VEKOP73317 = co.VEKOP73317;
|
||||
KAPOra = co.KAPOra;
|
||||
NemSzakrendszeru = co.NemSzakrendszeru;
|
||||
Tulora = co.Tulora;
|
||||
Multikulturalis = co.Multikulturalis;
|
||||
EFOP32317 = co.EFOP32317;
|
||||
KomplexOra = co.KomplexOra;
|
||||
GINOP623 = co.GINOP623;
|
||||
EFOP31716EselyteremtesAKoznevelesben = co.EFOP31716EselyteremtesAKoznevelesben;
|
||||
EFOP33717 = co.EFOP33717;
|
||||
TIOP11112120120001 = co.TIOP11112120120001;
|
||||
DFHT = co.DFHT;
|
||||
Rahangolodas = co.Rahangolodas;
|
||||
Testmozgas = co.Testmozgas;
|
||||
Muveszet = co.Muveszet;
|
||||
Eletgyakorlat = co.Eletgyakorlat;
|
||||
Logika = co.Logika;
|
||||
TeOrad = co.TeOrad;
|
||||
DigitalisAlapProgram = co.DigitalisAlapProgram;
|
||||
EFOP23517201700038Miapalya = co.EFOP23517201700038Miapalya;
|
||||
TanevTananyaganakIsmetlese = co.TanevTananyaganakIsmetlese;
|
||||
TanevTananyaganakKiegeszitese = co.TanevTananyaganakKiegeszitese;
|
||||
TanulokDigitalisKeszsegfejlesztese = co.TanulokDigitalisKeszsegfejlesztese;
|
||||
Projektmunka = co.Projektmunka;
|
||||
TanulokKompenzaciosIraskeszsegFejlesztese = co.TanulokKompenzaciosIraskeszsegFejlesztese;
|
||||
TanulokKompenzaciosOlvasasiKepessegFejlesztese = co.TanulokKompenzaciosOlvasasiKepessegFejlesztese;
|
||||
TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese = co.TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese;
|
||||
TanulokNyelviKepessegenekKompenzaciosFejlesztese = co.TanulokNyelviKepessegenekKompenzaciosFejlesztese;
|
||||
TanulokOnmegismeresenekSegitese = co.TanulokOnmegismeresenekSegitese;
|
||||
TanulokOnallosagraNevelese = co.TanulokOnallosagraNevelese;
|
||||
TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese = co.TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese;
|
||||
TanulokOrientaciosTamogatasa = co.TanulokOrientaciosTamogatasa;
|
||||
TanulokSzocialitasanakFejlesztese = co.TanulokSzocialitasanakFejlesztese;
|
||||
TanulokTovabbhaladasatElokeszitoTevekenysegek = co.TanulokTovabbhaladasatElokeszitoTevekenysegek;
|
||||
PedagogusAltalJelzettEgyeniEsetkezeles = co.PedagogusAltalJelzettEgyeniEsetkezeles;
|
||||
ProjektmunkaTamogatasa = co.ProjektmunkaTamogatasa;
|
||||
DigitalisKeszsegfejlesztes = co.DigitalisKeszsegfejlesztes;
|
||||
KozossegiMunkaTamogatasa = co.KozossegiMunkaTamogatasa;
|
||||
TanoraElokeszitesenekTamogatasa = co.TanoraElokeszitesenekTamogatasa;
|
||||
TanoraLebonyolitasanakTamogatasa = co.TanoraLebonyolitasanakTamogatasa;
|
||||
NapkozisTevekenysegKeretebenEgyeniFejlesztes = co.NapkozisTevekenysegKeretebenEgyeniFejlesztes;
|
||||
IsEgybefuggoGyakorlat = co.IsEgybefuggoGyakorlat;
|
||||
}
|
||||
|
||||
internal void Fill(NaplozasCo co)
|
||||
{
|
||||
Bontott = co.OraTulajdosag.Bontott;
|
||||
NemzetisegiOra = co.OraTulajdosag.NemzetisegiOra;
|
||||
IsFelnottoktatasiSzerzodes = co.OraTulajdosag.IsFelnottoktatasiSzerzodes;
|
||||
OnlineOra = co.OraTulajdosag.OnlineOra;
|
||||
MindennaposTestneveles = co.OraTulajdosag.MindennaposTestneveles;
|
||||
IPRTanora = co.OraTulajdosag.IPRTanora;
|
||||
Differencialt = co.OraTulajdosag.Differencialt;
|
||||
Kooperativ = co.OraTulajdosag.Kooperativ;
|
||||
Meres = co.OraTulajdosag.Meres;
|
||||
Drama = co.OraTulajdosag.Drama;
|
||||
Tiop = co.OraTulajdosag.Tiop;
|
||||
ParhuzamosOra = co.OraTulajdosag.ParhuzamosOra;
|
||||
IktTanora = co.OraTulajdosag.IktTanora;
|
||||
TAMOP = co.OraTulajdosag.TAMOP;
|
||||
KIPOra = co.OraTulajdosag.KIPOra;
|
||||
VEKOP73317 = co.OraTulajdosag.VEKOP73317;
|
||||
KAPOra = co.OraTulajdosag.KAPOra;
|
||||
NemSzakrendszeru = co.OraTulajdosag.NemSzakrendszeru;
|
||||
Tulora = co.OraTulajdosag.Tulora;
|
||||
Multikulturalis = co.OraTulajdosag.Multikulturalis;
|
||||
EFOP32317 = co.OraTulajdosag.EFOP32317;
|
||||
KomplexOra = co.OraTulajdosag.KomplexOra;
|
||||
GINOP623 = co.OraTulajdosag.GINOP623;
|
||||
EFOP31716EselyteremtesAKoznevelesben = co.OraTulajdosag.EFOP31716EselyteremtesAKoznevelesben;
|
||||
EFOP33717 = co.OraTulajdosag.EFOP33717;
|
||||
TIOP11112120120001 = co.OraTulajdosag.TIOP11112120120001;
|
||||
DFHT = co.OraTulajdosag.DFHT;
|
||||
Rahangolodas = co.OraTulajdosag.Rahangolodas;
|
||||
Testmozgas = co.OraTulajdosag.Testmozgas;
|
||||
Muveszet = co.OraTulajdosag.Muveszet;
|
||||
Eletgyakorlat = co.OraTulajdosag.Eletgyakorlat;
|
||||
Logika = co.OraTulajdosag.Logika;
|
||||
TeOrad = co.OraTulajdosag.TeOrad;
|
||||
DigitalisAlapProgram = co.OraTulajdosag.DigitalisAlapProgram;
|
||||
EFOP23517201700038Miapalya = co.OraTulajdosag.EFOP23517201700038Miapalya;
|
||||
TanevTananyaganakIsmetlese = co.OraTulajdosag.TanevTananyaganakIsmetlese;
|
||||
TanevTananyaganakKiegeszitese = co.OraTulajdosag.TanevTananyaganakKiegeszitese;
|
||||
TanulokDigitalisKeszsegfejlesztese = co.OraTulajdosag.TanulokDigitalisKeszsegfejlesztese;
|
||||
Projektmunka = co.OraTulajdosag.Projektmunka;
|
||||
TanulokKompenzaciosIraskeszsegFejlesztese = co.OraTulajdosag.TanulokKompenzaciosIraskeszsegFejlesztese;
|
||||
TanulokKompenzaciosOlvasasiKepessegFejlesztese = co.OraTulajdosag.TanulokKompenzaciosOlvasasiKepessegFejlesztese;
|
||||
TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese = co.OraTulajdosag.TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese;
|
||||
TanulokNyelviKepessegenekKompenzaciosFejlesztese = co.OraTulajdosag.TanulokNyelviKepessegenekKompenzaciosFejlesztese;
|
||||
TanulokOnmegismeresenekSegitese = co.OraTulajdosag.TanulokOnmegismeresenekSegitese;
|
||||
TanulokOnallosagraNevelese = co.OraTulajdosag.TanulokOnallosagraNevelese;
|
||||
TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese = co.OraTulajdosag.TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese;
|
||||
TanulokOrientaciosTamogatasa = co.OraTulajdosag.TanulokOrientaciosTamogatasa;
|
||||
TanulokSzocialitasanakFejlesztese = co.OraTulajdosag.TanulokSzocialitasanakFejlesztese;
|
||||
TanulokTovabbhaladasatElokeszitoTevekenysegek = co.OraTulajdosag.TanulokTovabbhaladasatElokeszitoTevekenysegek;
|
||||
PedagogusAltalJelzettEgyeniEsetkezeles = co.OraTulajdosag.PedagogusAltalJelzettEgyeniEsetkezeles;
|
||||
ProjektmunkaTamogatasa = co.OraTulajdosag.ProjektmunkaTamogatasa;
|
||||
DigitalisKeszsegfejlesztes = co.OraTulajdosag.DigitalisKeszsegfejlesztes;
|
||||
KozossegiMunkaTamogatasa = co.OraTulajdosag.KozossegiMunkaTamogatasa;
|
||||
TanoraElokeszitesenekTamogatasa = co.OraTulajdosag.TanoraElokeszitesenekTamogatasa;
|
||||
TanoraLebonyolitasanakTamogatasa = co.OraTulajdosag.TanoraLebonyolitasanakTamogatasa;
|
||||
NapkozisTevekenysegKeretebenEgyeniFejlesztes = co.OraTulajdosag.NapkozisTevekenysegKeretebenEgyeniFejlesztes;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
using Kreta.BusinessLogic.HelperClasses;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic.Naplozas
|
||||
{
|
||||
internal class MulasztasBulkUpdateModel
|
||||
{
|
||||
public MulasztasBulkUpdateModel(MulasztasokCo co)
|
||||
{
|
||||
ID = co.ID;
|
||||
Igazolt = co.Igazolt.HasValue ? co.Igazolt.Value ? "T" : "F" : null;
|
||||
Megjegyzes = co.Megjegyzes;
|
||||
Tipus = co.MulTip;
|
||||
IgazolasTipusa = co.IgazolasTipus;
|
||||
OraTanuloId = co.TanuloId;
|
||||
TanitasiOrakId = co.OraId;
|
||||
|
||||
if (co.KesIdo.HasValue && co.KesIdo > 0)
|
||||
{
|
||||
KesesPercben = co.KesIdo.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
KesesPercben = null;
|
||||
}
|
||||
}
|
||||
|
||||
public DbMuvelet Op { get; set; }
|
||||
public int? ID { get; set; }
|
||||
public string Igazolt { get; set; }
|
||||
public int? KesesPercben { get; set; }
|
||||
public string Megjegyzes { get; set; }
|
||||
public int? Tipus { get; set; }
|
||||
public int? IgazolasTipusa { get; set; }
|
||||
public int? OraTanuloId { get; set; }
|
||||
public int? TanitasiOrakId { get; set; }
|
||||
|
||||
public enum DbMuvelet
|
||||
{
|
||||
Insert = 0,
|
||||
|
||||
Update = 1,
|
||||
|
||||
Delete = 2,
|
||||
|
||||
}
|
||||
}
|
||||
}
|
158
Kreta.BusinessLogic/Logic/Naplozas/NaplozasCo.cs
Normal file
158
Kreta.BusinessLogic/Logic/Naplozas/NaplozasCo.cs
Normal file
|
@ -0,0 +1,158 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic.Naplozas
|
||||
{
|
||||
public class NaplozasCo
|
||||
{
|
||||
public NaplozasCo(int? szervezetTipusId = null)
|
||||
{
|
||||
OraAdat = new OraAdatModel();
|
||||
Helyettesites = new HelyettesitesModel();
|
||||
OraTulajdosag = new OraTulajdonsagModel();
|
||||
Hazifeladat = new HazifeladatModel();
|
||||
SzamonkeresElorejelzes = new SzamonkeresElorejelzesModel();
|
||||
MulasztasList = new List<MulasztasModel>();
|
||||
SzervezetTipusId = szervezetTipusId;
|
||||
}
|
||||
|
||||
public bool IsEgyediNaplozas { get { return !OraAdat.OrarendiOraId.HasValue && !OraAdat.TanitasiOraId.HasValue; } }
|
||||
public OraAdatModel OraAdat { get; set; }
|
||||
public HelyettesitesModel Helyettesites { get; set; }
|
||||
public OraTulajdonsagModel OraTulajdosag { get; set; }
|
||||
public HazifeladatModel Hazifeladat { get; set; }
|
||||
public SzamonkeresElorejelzesModel SzamonkeresElorejelzes { get; set; }
|
||||
public List<MulasztasModel> MulasztasList { get; set; }
|
||||
public int? SzervezetTipusId { get; set; }
|
||||
|
||||
public class OraAdatModel
|
||||
{
|
||||
public DateTime OraKezdete { get; set; }
|
||||
public DateTime OraVege { get; set; }
|
||||
|
||||
public int? OrarendiOraId { get; set; }
|
||||
public int? TanitasiOraId { get; set; }
|
||||
public int? CsengetesirendOraId { get; set; }
|
||||
public int? CsengetesirendId { get; set; }
|
||||
public int? TanarId { get; set; }
|
||||
|
||||
public string Tema { get; set; }
|
||||
public int? TemaTanmenetId { get; set; }
|
||||
public int? TanulasiEgysegId { get; set; }
|
||||
public int? FoglakozasId { get; set; }
|
||||
public int? OsztalyCsoportId { get; set; }
|
||||
public int? TantargyId { get; set; }
|
||||
public int? TeremId { get; set; }
|
||||
public bool IsSorszamozando { get; set; }
|
||||
public bool IsTanorankivuli { get; set; }
|
||||
public string Megjegyzes { get; set; }
|
||||
public int? Oraszam { get; set; }
|
||||
public List<int> CheckedOpenBoardFileIdList { get; set; }
|
||||
|
||||
public int? DigEszkozTipusId { get; set; }
|
||||
public int? DigPlatformTipusId { get; set; }
|
||||
public List<int> DigTamEszkozTipusIdList { get; set; }
|
||||
}
|
||||
|
||||
public class HelyettesitesModel
|
||||
{
|
||||
public int? Id { get; set; }
|
||||
public int? TanarId { get; set; }
|
||||
public string Oka { get; set; }
|
||||
public int? Tipus { get; set; }
|
||||
}
|
||||
|
||||
public class MulasztasModel
|
||||
{
|
||||
public int? MulasztasId { get; set; }
|
||||
public int TanuloId { get; set; }
|
||||
public int? MulasztasTipus { get; set; }
|
||||
public int? Keses { get; set; }
|
||||
|
||||
public bool HazifeladatHiany { get; set; }
|
||||
public bool FelszerelesHiany { get; set; }
|
||||
public bool Felmentes { get; set; }
|
||||
public bool TanoraiDicseret { get; set; }
|
||||
|
||||
public int? HazifeladatHianyId { get; set; }
|
||||
public int? FelszerelesHianyId { get; set; }
|
||||
public int? FelmentesId { get; set; }
|
||||
public int? TanoraiDicseretId { get; set; }
|
||||
}
|
||||
|
||||
public class HazifeladatModel
|
||||
{
|
||||
public int? Id { get; set; }
|
||||
public string Szoveg { get; set; }
|
||||
public DateTime? Hatarido { get; set; }
|
||||
public int? CsatolmanyId { get; set; }
|
||||
}
|
||||
|
||||
public class SzamonkeresElorejelzesModel
|
||||
{
|
||||
public int? Id { get; set; }
|
||||
public string Megnevezes { get; set; }
|
||||
public int? ErtekelesModId { get; set; }
|
||||
}
|
||||
|
||||
public class OraTulajdonsagModel
|
||||
{
|
||||
public bool Bontott { get; set; }
|
||||
public bool NemzetisegiOra { get; set; }
|
||||
public bool IsFelnottoktatasiSzerzodes { get; set; }
|
||||
public bool OnlineOra { get; set; }
|
||||
public bool MindennaposTestneveles { get; set; }
|
||||
public bool IPRTanora { get; set; }
|
||||
public bool Differencialt { get; set; }
|
||||
public bool Kooperativ { get; set; }
|
||||
public bool Meres { get; set; }
|
||||
public bool Drama { get; set; }
|
||||
public bool Tiop { get; set; }
|
||||
public bool ParhuzamosOra { get; set; }
|
||||
public bool IktTanora { get; set; }
|
||||
public bool TAMOP { get; set; }
|
||||
public bool NemSzakrendszeru { get; set; }
|
||||
public bool Tulora { get; set; }
|
||||
public bool Multikulturalis { get; set; }
|
||||
public bool EFOP32317 { get; set; }
|
||||
public bool KomplexOra { get; set; }
|
||||
public bool KIPOra { get; set; }
|
||||
public bool VEKOP73317 { get; set; }
|
||||
public bool KAPOra { get; set; }
|
||||
public bool GINOP623 { get; set; }
|
||||
public bool EFOP31716EselyteremtesAKoznevelesben { get; set; }
|
||||
public bool EFOP33717 { get; set; }
|
||||
public bool TIOP11112120120001 { get; set; }
|
||||
public bool DFHT { get; set; }
|
||||
public bool Rahangolodas { get; set; }
|
||||
public bool Testmozgas { get; set; }
|
||||
public bool Muveszet { get; set; }
|
||||
public bool Eletgyakorlat { get; set; }
|
||||
public bool Logika { get; set; }
|
||||
public bool TeOrad { get; set; }
|
||||
public bool DigitalisAlapProgram { get; set; }
|
||||
public bool EFOP23517201700038Miapalya { get; set; }
|
||||
public bool TanevTananyaganakIsmetlese { get; set; }
|
||||
public bool TanevTananyaganakKiegeszitese { get; set; }
|
||||
public bool TanulokDigitalisKeszsegfejlesztese { get; set; }
|
||||
public bool Projektmunka { get; set; }
|
||||
public bool TanulokKompenzaciosIraskeszsegFejlesztese { get; set; }
|
||||
public bool TanulokKompenzaciosOlvasasiKepessegFejlesztese { get; set; }
|
||||
public bool TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese { get; set; }
|
||||
public bool TanulokNyelviKepessegenekKompenzaciosFejlesztese { get; set; }
|
||||
public bool TanulokOnmegismeresenekSegitese { get; set; }
|
||||
public bool TanulokOnallosagraNevelese { get; set; }
|
||||
public bool TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese { get; set; }
|
||||
public bool TanulokOrientaciosTamogatasa { get; set; }
|
||||
public bool TanulokSzocialitasanakFejlesztese { get; set; }
|
||||
public bool TanulokTovabbhaladasatElokeszitoTevekenysegek { get; set; }
|
||||
public bool PedagogusAltalJelzettEgyeniEsetkezeles { get; set; }
|
||||
public bool ProjektmunkaTamogatasa { get; set; }
|
||||
public bool DigitalisKeszsegfejlesztes { get; set; }
|
||||
public bool KozossegiMunkaTamogatasa { get; set; }
|
||||
public bool TanoraElokeszitesenekTamogatasa { get; set; }
|
||||
public bool TanoraLebonyolitasanakTamogatasa { get; set; }
|
||||
public bool NapkozisTevekenysegKeretebenEgyeniFejlesztes { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
148
Kreta.BusinessLogic/Logic/Naplozas/NaplozasLogic.cs
Normal file
148
Kreta.BusinessLogic/Logic/Naplozas/NaplozasLogic.cs
Normal file
|
@ -0,0 +1,148 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.BusinessLogic.Helpers;
|
||||
using Kreta.BusinessLogic.Helpers.SystemSettings;
|
||||
using Kreta.BusinessLogic.Interfaces;
|
||||
using Kreta.BusinessLogic.Logic.Naplozas.Elokeszites;
|
||||
using Kreta.BusinessLogic.Logic.Naplozas.Validacio;
|
||||
using Kreta.Client.CoreApi;
|
||||
using Kreta.Enums;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic.Naplozas
|
||||
{
|
||||
public class NaplozasLogic : NaplozasElokeszitesLogic
|
||||
{
|
||||
public NaplozasLogic(NaploValidacio validator, NaplozasCo input) : base(validator)
|
||||
{
|
||||
FillInnerModel(input);
|
||||
}
|
||||
|
||||
public NaplozasLogic(NaploValidacio validator, NaplozasMobilCo input) : base(validator)
|
||||
{
|
||||
FillInnerModel(input);
|
||||
}
|
||||
|
||||
private void FillInnerModel(NaplozasCo input)
|
||||
{
|
||||
Model = new NaplozasElokeszitesModel(ConnectionType.FelhasznaloId, input.SzervezetTipusId)
|
||||
{
|
||||
IsEgyediNaplozas = input.IsEgyediNaplozas
|
||||
};
|
||||
|
||||
var osztalyHelper = new OsztalyHelper(ConnectionType);
|
||||
var orarendiOraHelper = new OrarendiOraHelper(ConnectionType);
|
||||
var orarendHelper = new OrarendHelper(ConnectionType);
|
||||
|
||||
if (!Model.IsEgyediNaplozas)
|
||||
{
|
||||
var thelper = new TanoraHelper(ConnectionType);
|
||||
|
||||
var oraCo = thelper.GetTanoraByOrarendiId(input.OraAdat.TanitasiOraId ?? input.OraAdat.OrarendiOraId.Value, input.OraAdat.OraKezdete.Date, input.OraAdat.TanitasiOraId.HasValue, isTanuloOrGondviselo: false);
|
||||
|
||||
var systemSettingsHelper = new SystemSettingsHelper(ConnectionType);
|
||||
var helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Helyettesites_eseten_felugyelet_alapertelmezetten_sorszamozando);
|
||||
|
||||
Model.OraAdat.Fill(oraCo, helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando);
|
||||
Model.OraAdat.Fill(input);
|
||||
|
||||
SetTantargyOsztalycsoport();
|
||||
SetOsztalyfonok(osztalyHelper);
|
||||
SetElozoOraAdatai(orarendiOraHelper);
|
||||
SetTemaLista(thelper);
|
||||
SetMentessegList(orarendHelper);
|
||||
|
||||
Model.OraTulajdonsag.Fill(input);
|
||||
|
||||
Model.Helyettesites.Fill(oraCo);
|
||||
Model.Helyettesites.Fill(input, Model.IsEgyediNaplozas);
|
||||
|
||||
Model.Hazifeladat.Fill(input);
|
||||
Model.Mulasztas.Fill(input, Model.MaxKeses);
|
||||
}
|
||||
else
|
||||
{
|
||||
Model.OraAdat.Fill(input);
|
||||
Model.OraTulajdonsag.Fill(input);
|
||||
Model.Helyettesites.Fill(input, Model.IsEgyediNaplozas);
|
||||
SetTantargyOsztalycsoport();
|
||||
SetOsztalyfonok(osztalyHelper);
|
||||
SetElozoOraAdatai(orarendiOraHelper);
|
||||
SetMentessegList(orarendHelper);
|
||||
|
||||
Model.Hazifeladat.Fill(input);
|
||||
Model.Mulasztas.Fill(input, Model.MaxKeses);
|
||||
}
|
||||
}
|
||||
|
||||
private void FillInnerModel(NaplozasMobilCo input)
|
||||
{
|
||||
var thelper = new TanoraHelper(ConnectionType);
|
||||
|
||||
var oraCo = thelper.GetTanoraByOrarendiId(input.OraAdat.TanitasiOraId ?? input.OraAdat.OrarendiOraId.Value, input.OraAdat.Datum, input.OraAdat.TanitasiOraId.HasValue, isTanuloOrGondviselo: false);
|
||||
|
||||
Model = new NaplozasElokeszitesModel(ConnectionType.FelhasznaloId);
|
||||
|
||||
var systemSettingsHelper = new SystemSettingsHelper(ConnectionType);
|
||||
var helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Helyettesites_eseten_felugyelet_alapertelmezetten_sorszamozando);
|
||||
|
||||
Model.OraAdat.Fill(oraCo, helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando);
|
||||
Model.OraAdat.Fill(input);
|
||||
|
||||
SetOsztalyfonok(new OsztalyHelper(ConnectionType));
|
||||
SetElozoOraAdatai(new OrarendiOraHelper(ConnectionType));
|
||||
SetTemaLista(thelper);
|
||||
SetMentessegList(new OrarendHelper(ConnectionType));
|
||||
|
||||
Model.OraTulajdonsag.Fill(oraCo);
|
||||
Model.Helyettesites.Fill(oraCo);
|
||||
|
||||
Model.Hazifeladat.Fill(input);
|
||||
Model.Mulasztas.Fill(ConnectionType, input, Model.MaxKeses, Model.OraAdat.TanitasiOraId);
|
||||
}
|
||||
|
||||
/// INFO @DevKornel: Mobil használja
|
||||
public NaplozasResultCo SaveNaplozas(IFileServiceHelper fileServiceHelper, ICoreApiClient coreApiClient)
|
||||
{
|
||||
if (Model.OraAdat.IsMobilNaplozott)
|
||||
{
|
||||
Validator.MobilValidateModel(Model);
|
||||
}
|
||||
else if (!Model.IsElmaradtOra)
|
||||
{
|
||||
Validator.ValidateModel(Model);
|
||||
}
|
||||
|
||||
var tanoraCo = new TanoraCO();
|
||||
Model.ConvertTo(tanoraCo);
|
||||
|
||||
//Ha van órarendióra akkor nem számít mi jön a felületről az óra kezdete és vége az órarendiórában lévő érték lesz
|
||||
if (Model.OraAdat.OrarendiOraId.HasValue)
|
||||
{
|
||||
var oo = new OrarendiOraHelper(ConnectionType).GetOrarendiOraById(Model.OraAdat.OrarendiOraId.Value);
|
||||
|
||||
var tsKezd = new TimeSpan(oo.OraKezdete.Hour, oo.OraKezdete.Minute, 0);
|
||||
var tsVeg = new TimeSpan(oo.OraVege.Hour, oo.OraVege.Minute, 0);
|
||||
tanoraCo.OraKezd = tanoraCo.OraKezd.Date + tsKezd;
|
||||
tanoraCo.OraVeg = tanoraCo.OraVeg.Date + tsVeg;
|
||||
}
|
||||
|
||||
var mulasztasCoList = new List<MulasztasokCo>();
|
||||
Model.ConvertTo(mulasztasCoList);
|
||||
|
||||
return new TanoraHelper(ConnectionType).TanoraNaplozas(tanoraCo, mulasztasCoList, fileServiceHelper, coreApiClient);
|
||||
}
|
||||
|
||||
public void SaveNemMegtartottNaplozas(IFileServiceHelper fileServiceHelper, ICoreApiClient coreApiClient)
|
||||
{
|
||||
Model.OraAdat.IsElmaradt = true;
|
||||
SaveNaplozas(fileServiceHelper, coreApiClient);
|
||||
}
|
||||
|
||||
public void NaplozasValidacio()
|
||||
{
|
||||
Validator.NaplozasDatumValidacio(Model);
|
||||
Validator.LezartNaploValidacio(Model);
|
||||
}
|
||||
}
|
||||
}
|
58
Kreta.BusinessLogic/Logic/Naplozas/NaplozasMobilCo.cs
Normal file
58
Kreta.BusinessLogic/Logic/Naplozas/NaplozasMobilCo.cs
Normal file
|
@ -0,0 +1,58 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic.Naplozas
|
||||
{
|
||||
public class NaplozasMobilCo
|
||||
{
|
||||
public NaplozasMobilCo()
|
||||
{
|
||||
OraAdat = new OraAdatModel();
|
||||
Hazifeladat = new HazifeladatModel();
|
||||
SzamonkeresElorejelzes = new SzamonkeresElorejelzesModel();
|
||||
MulasztasList = new List<MulasztasModel>();
|
||||
}
|
||||
|
||||
public OraAdatModel OraAdat { get; set; }
|
||||
public HazifeladatModel Hazifeladat { get; set; }
|
||||
public SzamonkeresElorejelzesModel SzamonkeresElorejelzes { get; set; }
|
||||
public List<MulasztasModel> MulasztasList { get; set; }
|
||||
|
||||
public class OraAdatModel
|
||||
{
|
||||
public int? OrarendiOraId { get; set; }
|
||||
public int? TanitasiOraId { get; set; }
|
||||
public string Tema { get; set; }
|
||||
public DateTime Datum { get; set; }
|
||||
public bool IsElmaradt { get; set; }
|
||||
public DateTime RogzitesDatuma { get; set; }
|
||||
}
|
||||
|
||||
public class MulasztasModel
|
||||
{
|
||||
public int TanuloId { get; set; }
|
||||
public int? MulasztasTipus { get; set; }
|
||||
public int? Keses { get; set; }
|
||||
|
||||
public bool HazifeladatHiany { get; set; }
|
||||
public bool FelszerelesHiany { get; set; }
|
||||
public bool Felmentes { get; set; }
|
||||
public bool TanoraiDicseret { get; set; }
|
||||
}
|
||||
|
||||
public class HazifeladatModel
|
||||
{
|
||||
public int? Id { get; set; }
|
||||
public string Szoveg { get; set; }
|
||||
public DateTime? Hatarido { get; set; }
|
||||
public int? CsatolmanyId { get; set; }
|
||||
}
|
||||
|
||||
public class SzamonkeresElorejelzesModel
|
||||
{
|
||||
public int? Id { get; set; }
|
||||
public string Megnevezes { get; set; }
|
||||
public int? ErtekelesModId { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
447
Kreta.BusinessLogic/Logic/Naplozas/Validacio/NaploValidacio.cs
Normal file
447
Kreta.BusinessLogic/Logic/Naplozas/Validacio/NaploValidacio.cs
Normal file
|
@ -0,0 +1,447 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Kreta.BusinessLogic.Classes;
|
||||
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Ora.Common;
|
||||
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Logic;
|
||||
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.BusinessLogic.Helpers;
|
||||
using Kreta.BusinessLogic.Helpers.SystemSettings;
|
||||
using Kreta.BusinessLogic.Logic.Naplozas.Elokeszites;
|
||||
using Kreta.Core.ConnectionType;
|
||||
using Kreta.Core.Validation.Exceptions;
|
||||
using Kreta.Core.Validation.Exceptions.Enum;
|
||||
using Kreta.DataAccessManual;
|
||||
using Kreta.DataAccessManual.Interfaces;
|
||||
using Kreta.Enums;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Resources;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Validacio
|
||||
{
|
||||
public class NaploValidacio
|
||||
{
|
||||
private List<OrarendCO.ExtendedEvent> OrarendLista
|
||||
{
|
||||
get
|
||||
{
|
||||
var helper = new OrarendHelper(ConnectionType);
|
||||
|
||||
return helper.GetOrarendiOrakEsVagyNapirendekEsTanorak(_parameters.FelhasznaloSzerepkor, _parameters.From, _parameters.To, ConnectionType.FelhasznaloId, osztalyCsoportId: null, tanuloId: null, csakOrarend: false, OrarendTipusEnum.Minden, isTanuloOrGondviselo: false, EventColorEnum.Kek);
|
||||
}
|
||||
}
|
||||
|
||||
private readonly NaploValidacioParameters _parameters;
|
||||
|
||||
public IConnectionType ConnectionType
|
||||
{
|
||||
get
|
||||
{
|
||||
return _parameters.ConnectionType;
|
||||
}
|
||||
}
|
||||
|
||||
public NaploValidacio(NaploValidacioParameters parameters)
|
||||
{
|
||||
_parameters = parameters;
|
||||
}
|
||||
|
||||
/// INFO @D.Kornél: Mobil használja
|
||||
public void MobilValidateModel(NaplozasElokeszitesModel model)
|
||||
{
|
||||
OrarendCO.ExtendedEvent ora;
|
||||
LezartNaploValidacio(model);
|
||||
if (!model.IsTanora)
|
||||
{
|
||||
ora = GetOra(model);
|
||||
CheckIsOraExists(ora);
|
||||
HelyettesitettOra(ora);
|
||||
}
|
||||
else
|
||||
{
|
||||
ora = GetTanora(model);
|
||||
CheckIsOraExists(ora);
|
||||
//TODO: ha nem az övé vagy helyettese
|
||||
}
|
||||
|
||||
KorabbanNaplozottOra(model, ora);
|
||||
CheckElmaradtraNaplozas(model, ora);
|
||||
if (!model.IsElmaradtOra)
|
||||
{
|
||||
ValidateMulasztasRekords(model);
|
||||
TemaValidacio(model);
|
||||
}
|
||||
NaplozasDatumValidacio(model);
|
||||
}
|
||||
|
||||
public void ValidateModel(NaplozasElokeszitesModel model)
|
||||
{
|
||||
if (!model.IsEgyediNaplozas)
|
||||
{
|
||||
if (model.IsTanora)
|
||||
{
|
||||
var ora = GetTanora(model);
|
||||
CheckIsOraExists(ora);
|
||||
//TODO: ha nem az övé vagy helyettese
|
||||
}
|
||||
else
|
||||
{
|
||||
OrarendCO.ExtendedEvent ora;
|
||||
if (model.Helyettesites.IsKeresoAltalTalaltOra)
|
||||
{
|
||||
ora = GetHelyettesOra(model);
|
||||
}
|
||||
else
|
||||
{
|
||||
ora = GetOra(model);
|
||||
}
|
||||
|
||||
CheckIsOraExists(ora);
|
||||
KorabbanNaplozottOra(model, ora);
|
||||
HelyettesitettOra(ora);
|
||||
}
|
||||
}
|
||||
|
||||
ValidateMulasztasRekords(model);
|
||||
NaplozasDatumValidacio(model);
|
||||
TemaValidacio(model);
|
||||
}
|
||||
|
||||
public bool TeremUtkozesEllenorzes(NaplozasElokeszitesModel model)
|
||||
{
|
||||
bool teremutkozes;
|
||||
int tanoraID, orarendiOraID, hetirend;
|
||||
var helper = new TanoraHelper(ConnectionType);
|
||||
|
||||
if (!model.OraAdat.TeremId.HasValue)
|
||||
{
|
||||
throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.MenteshezATeremMegadasaKotelezo);
|
||||
}
|
||||
if (model.IsEgyediNaplozas)
|
||||
{
|
||||
tanoraID = 0;
|
||||
orarendiOraID = 0;
|
||||
hetirend = (int)HetiRendTipusEnum.MindegyikHet;
|
||||
}
|
||||
else if (model.IsTanora)
|
||||
{
|
||||
tanoraID = model.OraAdat.TanitasiOraId.Value;
|
||||
|
||||
(var oraId, var hRend) = helper.GetOrarendIdAndHetirend(tanoraID);
|
||||
|
||||
if (oraId.HasValue)
|
||||
{
|
||||
orarendiOraID = oraId.Value;
|
||||
if (hRend.HasValue)
|
||||
{
|
||||
hetirend = hRend.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
hetirend = (int)HetiRendTipusEnum.MindegyikHet;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
orarendiOraID = 0;
|
||||
hetirend = (int)HetiRendTipusEnum.MindegyikHet;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
tanoraID = 0;
|
||||
orarendiOraID = model.OraAdat.OrarendiOraId.Value;
|
||||
var orarendiOraHelper = new OrarendiOraHelper(ConnectionType);
|
||||
hetirend = orarendiOraHelper.GetHetirend(orarendiOraID);
|
||||
}
|
||||
|
||||
teremutkozes = helper.TanitasiOraTeremUtkozesEllenorzes(tanoraID, orarendiOraID, model.OraAdat.TeremId.Value, (int)model.OraAdat.HetNapja, hetirend, model.OraAdat.OraKezdete, model.OraAdat.OraVege);
|
||||
|
||||
return teremutkozes;
|
||||
}
|
||||
|
||||
public string GetOsztalyEsTanarOraiUtkozes(NaplozasElokeszitesModel model)
|
||||
{
|
||||
int osztalyCsoportId;
|
||||
if (!model.OraAdat.OsztalyCsoportId.HasValue && model.OraAdat.FoglakozasId.HasValue)
|
||||
{
|
||||
var helper = new TantargyFelosztasHelper(ConnectionType);
|
||||
var data = helper.GetTantargyFelosztas(model.OraAdat.FoglakozasId.Value);
|
||||
osztalyCsoportId = data.OsztalyCsoportID;
|
||||
}
|
||||
else
|
||||
{
|
||||
osztalyCsoportId = model.OraAdat.OsztalyCsoportId.Value;
|
||||
}
|
||||
|
||||
var tanorahelper = new TanoraHelper(ConnectionType);
|
||||
var errorMsg = tanorahelper.GetOsztalyEsTanarOrai(model.OraAdat.TanarId.Value, osztalyCsoportId, model.OraAdat.OraKezdete, model.OraAdat.OraVege, model.OraAdat.TanitasiOraId, model.OraAdat.OrarendiOraId);
|
||||
|
||||
return errorMsg;
|
||||
}
|
||||
|
||||
public OrarendCO.ExtendedEvent GetTanora(NaplozasElokeszitesModel model)
|
||||
{
|
||||
return OrarendLista.Find(x => x.id == model.OraAdat.TanitasiOraId && x.datum.Value.Date == model.OraAdat.OraKezdete.Date);
|
||||
}
|
||||
|
||||
public void CheckElmaradtraNaplozas(NaplozasElokeszitesModel model, OrarendCO.ExtendedEvent ora)
|
||||
{
|
||||
if (ora.OraAllapota == TanoraAllapotaEnum.Elmaradt && !model.IsElmaradtOra)
|
||||
{
|
||||
throw new ValidationException(ValidationErrorType.ResourceAlreadyExists, ErrorResource.NaplozasSikertelenKorabbanMarElmaradtOrakentNaplozasraKerult);
|
||||
}
|
||||
|
||||
if (ora.OraAllapota == TanoraAllapotaEnum.Naplozott && model.IsElmaradtOra)
|
||||
{
|
||||
throw new ValidationException(ValidationErrorType.ResourceAlreadyExists, ErrorResource.NaplozasSikertelenAzOraMarKorabbanNaplozasraKerult);
|
||||
}
|
||||
}
|
||||
|
||||
private void CheckIsOraExists(OrarendCO.ExtendedEvent ora)
|
||||
{
|
||||
if (ora == null)
|
||||
{
|
||||
throw new ValidationException(ValidationErrorType.ResourceNotFound, ErrorResource.NaplozasSikertelenAzOraMarNemLetezikAKivalasztottNapon);
|
||||
}
|
||||
}
|
||||
|
||||
private OrarendCO.ExtendedEvent GetHelyettesOra(NaplozasElokeszitesModel model)
|
||||
{
|
||||
var helper = new OrarendHelper(ConnectionType);
|
||||
|
||||
var date = model.OraAdat.OraKezdete.Date;
|
||||
var helyettesOralista = helper.GetOrarendiOrakEsVagyNapirendekEsTanorak(_parameters.FelhasznaloSzerepkor, date, date.AddDays(1), model.OraAdat.TanarId, osztalyCsoportId: null, tanuloId: null, csakOrarend: false, OrarendTipusEnum.Minden, isTanuloOrGondviselo: false, EventColorEnum.Kek);
|
||||
return helyettesOralista.Find(x => x.OrarendiOraId == model.OraAdat.OrarendiOraId);
|
||||
}
|
||||
|
||||
private OrarendCO.ExtendedEvent GetOra(NaplozasElokeszitesModel model)
|
||||
{
|
||||
return OrarendLista.Find(x => x.OrarendiOraId == model.OraAdat.OrarendiOraId && x.datum.Value.Date == model.OraAdat.OraKezdete.Date);
|
||||
}
|
||||
|
||||
private void HelyettesitettOra(OrarendCO.ExtendedEvent ora)
|
||||
{
|
||||
if (ora.OraAllapota == TanoraAllapotaEnum.Nem_naplozott && ora.helyettesitoId.HasValue && ora.helyettesitoId != ConnectionType.FelhasznaloId)
|
||||
{
|
||||
throw new ValidationException(ValidationErrorType.ResourceNotFound, ErrorResource.NaplozasSikertelenAzOraraHelyettesitesLettKiivaAzAdminAltal);
|
||||
}
|
||||
}
|
||||
|
||||
private void KorabbanNaplozottOra(NaplozasElokeszitesModel model, OrarendCO.ExtendedEvent ora)
|
||||
{
|
||||
if (model.OraAdat.TanitasiOraId.HasValue)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (ora.OraAllapota == TanoraAllapotaEnum.Nem_naplozott)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (ora.OraAllapota == TanoraAllapotaEnum.Elmaradt)
|
||||
{
|
||||
throw new ValidationException(ValidationErrorType.ResourceAlreadyExists, ErrorResource.NaplozasSikertelenKorabbanMarElmaradtOrakentNaplozasraKerult);
|
||||
}
|
||||
|
||||
if (ora.OraAllapota == TanoraAllapotaEnum.Naplozott)
|
||||
{
|
||||
if (ora.helyettesitoId.HasValue && ora.helyettesitoId != ConnectionType.FelhasznaloId)
|
||||
{
|
||||
throw new ValidationException(ValidationErrorType.ResourceAlreadyExists, ErrorResource.NaplozasSikertelenAzOratKorabbanMarHelyettesitettkentNaploztaEgyMasikTanar);
|
||||
}
|
||||
|
||||
throw new ValidationException(ValidationErrorType.ResourceAlreadyExists, ErrorResource.NaplozasSikertelenAzOraMarKorabbanNaplozasraKerult);
|
||||
}
|
||||
}
|
||||
|
||||
private void TemaValidacio(NaplozasElokeszitesModel model)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(model.OraAdat.Tema))
|
||||
{
|
||||
throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.NaplozasSikertelenTemaMegadasaKotelezo);
|
||||
}
|
||||
if (model.OraAdat.Tema.Length > 1000) /*db ben ez a max char jelenleg*/
|
||||
{
|
||||
throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.TemaTulHosszu);
|
||||
}
|
||||
}
|
||||
|
||||
/// INFO @D.Kornél: használja a mobil
|
||||
public void NaplozasDatumValidacio(NaplozasElokeszitesModel model)
|
||||
{
|
||||
if (!model.NaplozhatoDatum)
|
||||
{
|
||||
throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.NaplozasSikertelenJovobeliDatumraNemLehetNaplozni);
|
||||
}
|
||||
|
||||
if (model.OraAdat.OraKezdete >= model.OraAdat.OraVege)
|
||||
{
|
||||
throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.OraKezdeteNagyobbMintAVege);
|
||||
}
|
||||
|
||||
var isNaplozhatZarastolFuggetlenul = new NaplozarasLogic(ConnectionType).IsNaplozhatZarastolFuggetlenul(model.OraAdat.OraKezdete, model.OraAdat.OsztalyCsoportId);
|
||||
if (!isNaplozhatZarastolFuggetlenul && new OrarendHelper(ConnectionType).GetNaplozarasDate(null) >= model.OraAdat.OraKezdete)
|
||||
{
|
||||
throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.NaplozasSikertelenNemNaplozhatoNaplozarasMiatt);
|
||||
}
|
||||
|
||||
if (model.OraAdat.OraVege.Date != model.OraAdat.OraKezdete.Date)
|
||||
{
|
||||
throw new ValidationException(ValidationErrorType.Undefined, OrarendResource.AtiveloNaplozasNemEngedelyezett);
|
||||
}
|
||||
|
||||
var orarendHelper = new OrarendHelper(ConnectionType);
|
||||
|
||||
if (orarendHelper.GetIsMunkaszunetiNap(model.OraAdat.OraKezdete.Date, model.OraAdat.OsztalyCsoportId.Value))
|
||||
{
|
||||
throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.MunkaszunetiNapraTanoraNemVehetoFel);
|
||||
}
|
||||
|
||||
var sysSettingsHelper = new SystemSettingsHelper(ConnectionType);
|
||||
DateTime? szakGyakKezdDatum, szakGyakVegDatum, utolsoTanitasiNap;
|
||||
var tanevRendHelper = new TanevrendHelper(ConnectionType);
|
||||
var tanevHelper = new TanevHelper(ConnectionType);
|
||||
szakGyakKezdDatum = sysSettingsHelper.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_kezd_datum);
|
||||
szakGyakVegDatum = sysSettingsHelper.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_veg_datum);
|
||||
utolsoTanitasiNap = tanevHelper.GetTanevInfo().UtolsoTanitasiNap;
|
||||
var isRendkivuliNap = tanevRendHelper.IsRendkivuliTanitasiNap(model.OraAdat.OraKezdete);
|
||||
|
||||
if (model.OraAdat.OraKezdete.Date > utolsoTanitasiNap)
|
||||
{
|
||||
if ((model.OraAdat.OraKezdete.Date < szakGyakKezdDatum || model.OraAdat.OraKezdete.Date > szakGyakVegDatum) && !isRendkivuliNap)
|
||||
{
|
||||
throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.NaplozasSikertelenNyariNaplozasMiatt);
|
||||
}
|
||||
|
||||
if (!isRendkivuliNap && !new CsoportHelper(ConnectionType).IsNyariSzakmaiGyakorlatos(model.OraAdat.OsztalyCsoportId.Value) && !model.SzervezetTipusId.HasValue)
|
||||
{
|
||||
throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.EbbenAzIdoszakbanCsakOsszefuggoSzakmaiGyakorlatiCsoportotLehetNaplozni);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void LezartNaploValidacio(NaplozasElokeszitesModel model)
|
||||
{
|
||||
if (model.OraAdat.OsztalyCsoportId.HasValue && new NaplozarasLogic(ConnectionType).GetLezartOsztalyokEsBontottCsoportjaik().Contains(model.OraAdat.OsztalyCsoportId.Value))
|
||||
{
|
||||
throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.AzElektronikusNaploLezarva);
|
||||
}
|
||||
}
|
||||
private void ValidateMulasztasRekords(NaplozasElokeszitesModel model)
|
||||
{
|
||||
if (model.IsElmaradtOra)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Dal.CustomConnection.Run(ConnectionType, h =>
|
||||
{
|
||||
var jelenletList = model.IsEgyediNaplozas ? GetEgyediOraJavasoltJelenlet(model, h)
|
||||
: model.IsTanora ?
|
||||
GetTanitasiOraJavasoltJelenlet(model, h, oktatasNevelesKategoriaEnum: null) : GetOrarendiOraJavasoltJelenlet(model, h);
|
||||
|
||||
SetMulastasValuesToValid(model, jelenletList);
|
||||
});
|
||||
}
|
||||
private void SetMulastasValuesToValid(NaplozasElokeszitesModel model, IEnumerable<IJavasoltJelenletTanuloGetResponseCo> javasoltJelenlet)
|
||||
{
|
||||
var invalidRecords = new List<MulasztasItem>();
|
||||
var template = model.IsTanora ? new JavasoltJelenletTemplateLogic(TanoraAllapotaEnum.Naplozott) : new JavasoltJelenletTemplateLogic(TanoraAllapotaEnum.Nem_naplozott);
|
||||
|
||||
foreach (var item in model.Mulasztas.MulasztasList)
|
||||
{
|
||||
var tanuloMulasztas = javasoltJelenlet.SingleOrDefault(t => t.TanuloId == item.TanuloId);
|
||||
if (tanuloMulasztas != null)
|
||||
{
|
||||
var tanuloMulasztasTemplate = template.GetCalculatedJelenletJavaslatConsideringSzuro(tanuloMulasztas.JavasoltJelenletTemplateTipusSzuroLista);
|
||||
|
||||
MulasztasTipusEnum mulasztasTypus;
|
||||
if (item.Keses.HasValue && item.Keses > 0 && !item.MulasztasTipus.HasValue)
|
||||
{
|
||||
mulasztasTypus = MulasztasTipusEnum.keses;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (item.MulasztasTipus.HasValue)
|
||||
{
|
||||
mulasztasTypus = (MulasztasTipusEnum)item.MulasztasTipus.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
mulasztasTypus = MulasztasTipusEnum.ures;
|
||||
}
|
||||
}
|
||||
|
||||
var mulasztasTemplate = tanuloMulasztasTemplate.SzuroElemLista.First(t => t.MulasztasTipusAdatszotar == mulasztasTypus);
|
||||
if (!mulasztasTemplate.IsEnabled)
|
||||
{
|
||||
invalidRecords.Add(item);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
invalidRecords.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var item in invalidRecords)
|
||||
{
|
||||
model.Mulasztas.MulasztasList.Remove(item);
|
||||
}
|
||||
}
|
||||
private IEnumerable<IJavasoltJelenletTanuloGetResponseCo> GetOrarendiOraJavasoltJelenlet(NaplozasElokeszitesModel model, IDalHandler h, OktNevelesiKategoriaEnum? oktatasNevelesKategoriaEnum = null)
|
||||
{
|
||||
var jelenletList = OrarendiOraSubqueries.ListJavasoltJelenlet(model.UserId, ConnectionType.IntezmenyId, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId, h, new Classes.MobileApi.Naplo.V2.Co.Get.Ora.OrarendiOra.JavasoltJelenlet.JavasoltJelenletGetRequestCo()
|
||||
{
|
||||
Key = new Classes.MobileApi.Naplo.V2.Co.Get.Ora.OrarendiOra.JavasoltJelenlet.JavasoltJelenletKeyGetRequestCo[]
|
||||
{
|
||||
new Classes.MobileApi.Naplo.V2.Co.Get.Ora.OrarendiOra.JavasoltJelenlet.JavasoltJelenletKeyGetRequestCo(){
|
||||
OrarendiOraId = model.OraAdat.OrarendiOraId.Value,
|
||||
OraKezdetDatuma = model.OraAdat.OraKezdete,
|
||||
OraVegDatuma = model.OraAdat.OraVege,
|
||||
IsHelyettesitesKeresoAltalTalaltOra = model.Helyettesites.IsKeresoAltalTalaltOra
|
||||
}
|
||||
}
|
||||
}, oktatasNevelesKategoriaEnum);
|
||||
|
||||
return jelenletList[0].TanuloLista;
|
||||
}
|
||||
|
||||
private IEnumerable<IJavasoltJelenletTanuloGetResponseCo> GetEgyediOraJavasoltJelenlet(NaplozasElokeszitesModel model, IDalHandler h, OktNevelesiKategoriaEnum? oktatasNevelesKategoriaEnum = OktNevelesiKategoriaEnum.NevelesOktatas)
|
||||
{
|
||||
var jelenletList = EgyediOraSubqueries.ListJavasoltJelenlet(model.UserId, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId, h, new Classes.MobileApi.Naplo.V2.Co.Get.Ora.EgyediOra.JavasoltJelenlet.JavasoltJelenletGetRequestCo()
|
||||
{
|
||||
Key = new Classes.MobileApi.Naplo.V2.Co.Get.Ora.EgyediOra.JavasoltJelenlet.JavasoltJelenletKeyGetRequestCo[]
|
||||
{
|
||||
new Classes.MobileApi.Naplo.V2.Co.Get.Ora.EgyediOra.JavasoltJelenlet.JavasoltJelenletKeyGetRequestCo()
|
||||
{
|
||||
OsztalyCsoportId = model.OraAdat.OsztalyCsoportId.Value,
|
||||
TantargyId = model.OraAdat.TantargyId.Value,
|
||||
OraKezdetDatuma = model.OraAdat.OraKezdete,
|
||||
OraVegDatuma = model.OraAdat.OraVege
|
||||
}
|
||||
}
|
||||
}, oktatasNevelesKategoriaEnum, ConnectionType.IntezmenyId);
|
||||
|
||||
return jelenletList[0].TanuloLista;
|
||||
}
|
||||
|
||||
private IEnumerable<IJavasoltJelenletTanuloGetResponseCo> GetTanitasiOraJavasoltJelenlet(NaplozasElokeszitesModel model, IDalHandler h, OktNevelesiKategoriaEnum? oktatasNevelesKategoriaEnum = null)
|
||||
{
|
||||
var jelenletList = TanitasiOraSubqueries.ListJavasoltJelenlet(model.UserId, ConnectionType.IntezmenyId, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId, h, new Classes.MobileApi.Naplo.V2.Co.Get.Ora.TanitasiOra.JavasoltJelenlet.JavasoltJelenletGetRequestCo()
|
||||
{
|
||||
Key = new Classes.MobileApi.Naplo.V2.Co.Get.Ora.TanitasiOra.JavasoltJelenlet.JavasoltJelenletKeyGetRequestCo[]
|
||||
{
|
||||
new Classes.MobileApi.Naplo.V2.Co.Get.Ora.TanitasiOra.JavasoltJelenlet.JavasoltJelenletKeyGetRequestCo(){
|
||||
TanitasiOraId = model.OraAdat.TanitasiOraId.Value
|
||||
}
|
||||
}
|
||||
}, oktatasNevelesKategoriaEnum);
|
||||
|
||||
return jelenletList[0].TanuloLista;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
using System;
|
||||
using Kreta.Core.ConnectionType;
|
||||
using Kreta.Enums;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Validacio
|
||||
{
|
||||
public class NaploValidacioParameters
|
||||
{
|
||||
private NaploValidacioParameters() { }
|
||||
|
||||
public NaploValidacioParameters(DateTime date, IConnectionType connectionType, SzerepkorTipusEnum? felhasznaloSzerepkor) : this(date.ToLocalTime(), date.ToLocalTime().AddDays(1), connectionType, felhasznaloSzerepkor) { }
|
||||
|
||||
public NaploValidacioParameters(DateTime from, DateTime to, IConnectionType connectionType, SzerepkorTipusEnum? felhasznaloSzerepkor)
|
||||
{
|
||||
From = from;
|
||||
To = to;
|
||||
ConnectionType = connectionType;
|
||||
FelhasznaloSzerepkor = felhasznaloSzerepkor;
|
||||
}
|
||||
|
||||
public DateTime From { get; private set; }
|
||||
|
||||
public DateTime To { get; private set; }
|
||||
|
||||
public IConnectionType ConnectionType { get; private set; }
|
||||
|
||||
public SzerepkorTipusEnum? FelhasznaloSzerepkor { get; private set; }
|
||||
}
|
||||
}
|
231
Kreta.BusinessLogic/Logic/RichTextLogic.cs
Normal file
231
Kreta.BusinessLogic/Logic/RichTextLogic.cs
Normal file
|
@ -0,0 +1,231 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Web;
|
||||
using HtmlAgilityPack;
|
||||
using Kreta.BusinessLogic.Utils;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic
|
||||
{
|
||||
public static class RichTextLogic
|
||||
{
|
||||
public static List<string> LegalFastReportHtmlTagList = new List<string> { "br", "b", "i", "u", "sub", "sup" };
|
||||
|
||||
public static string[] RemovableHtmlTags = new string[] { "img" };
|
||||
|
||||
public static string CutHtmlTagsAndDecode(string input)
|
||||
{
|
||||
string result = HttpUtility.HtmlDecode(input);
|
||||
result = Regex.Replace(result, "<.*?>", string.Empty);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string CutHtmlTagsAndDecodeAndBR2Space(string input)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(input))
|
||||
{
|
||||
string result = HttpUtility.HtmlDecode(input.Replace("<br>", " ").Replace("</br>", " "));
|
||||
result = Regex.Replace(result, "<.*?>", string.Empty);
|
||||
return result;
|
||||
}
|
||||
return input;
|
||||
}
|
||||
|
||||
public static string RemoveSpecificHtmlTags(string input, string[] htmlTags)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(input))
|
||||
{
|
||||
return input;
|
||||
}
|
||||
|
||||
var inputHtml = HttpUtility.HtmlDecode(input);
|
||||
|
||||
foreach (var htmlTag in htmlTags)
|
||||
{
|
||||
inputHtml = Regex.Replace(inputHtml, $"<{htmlTag}" + @"([\w\W]+?)>", string.Empty);
|
||||
}
|
||||
|
||||
return inputHtml;
|
||||
|
||||
}
|
||||
|
||||
public static string ConvertRawHtmlToRichTextHtml(string html)
|
||||
{
|
||||
var actions = new List<Action>();
|
||||
|
||||
void AddEscapeElementAction(HtmlNode node)
|
||||
{
|
||||
actions.Add(() => node.ParentNode.ReplaceChild(HtmlNode.CreateNode(WebUtility.HtmlEncode(node.OuterHtml)), node));
|
||||
}
|
||||
|
||||
void AddRemovePropertyAction(HtmlNode node, HtmlAttribute attr)
|
||||
{
|
||||
actions.Add(() => node.Attributes.Remove(attr));
|
||||
}
|
||||
|
||||
void CollectIllegalProperty(HtmlNode node)
|
||||
{
|
||||
var legalAttributes = new List<string> { "style", "href", "target" };
|
||||
foreach (var item in node.Attributes)
|
||||
{
|
||||
if (!legalAttributes.Contains(item.Name))
|
||||
{
|
||||
AddRemovePropertyAction(node, item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool IsLegalItem(HtmlNode node)
|
||||
{
|
||||
var legalItems = new List<string> { "p", "span", "ul", "li", "strong", "del", "ol", "em", "#text", "div", "table", "colgroup", "tr", "td", "th", "tbody", "tfoot", "a", "form", "col", "thead", "head", "br", "strike", "h1", "h2", "h3", "h4", "h5", "h6" };
|
||||
if (legalItems.Contains(node.Name))
|
||||
{
|
||||
CollectIllegalProperty(node);
|
||||
return true;
|
||||
}
|
||||
|
||||
AddEscapeElementAction(node);
|
||||
return false;
|
||||
}
|
||||
|
||||
void CheckChild(HtmlNode node)
|
||||
{
|
||||
if (node.HasChildNodes)
|
||||
{
|
||||
foreach (var childItem in node.ChildNodes)
|
||||
{
|
||||
if (IsLegalItem(childItem))
|
||||
{
|
||||
CheckChild(childItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var doc = new HtmlDocument();
|
||||
doc.LoadHtml(WebUtility.HtmlDecode(html));
|
||||
CheckChild(doc.DocumentNode);
|
||||
|
||||
foreach (var action in actions)
|
||||
{
|
||||
action.Invoke();
|
||||
}
|
||||
|
||||
return doc.DocumentNode.InnerHtml;
|
||||
}
|
||||
|
||||
public static string GetLegalHtmlString(string text, List<string> legalHtmlTagList, bool mustFastReportCompatible = false, bool enableHtmlTagProperties = false)
|
||||
{
|
||||
while (text.Contains("&"))
|
||||
{
|
||||
text = text.Replace("&", "&"); //NOTE: Replace-elni kell az "&"-okat rekurzívan.
|
||||
}
|
||||
|
||||
var result = text
|
||||
.Replace("<", "<") //NOTE: Replace-elni kell az "<"-ket, ha valamiért a "<" encode-olva lenne.
|
||||
.Replace(">", ">") //NOTE: Replace-elni kell az ">"-ket, ha valamiért a ">" encode-olva lenne.
|
||||
.Replace(" ", "\u0020") //NOTE: Replace-elni kell az " "-ket.
|
||||
.Replace("\u00A0", "\u0020"); //NOTE: Replace-elni kell a NO-BREAK SPACE-eket, mert a SPACE-el nem ekvivalens és jöhet be ilyen adat és okozhat problémát.
|
||||
|
||||
if (mustFastReportCompatible)
|
||||
{
|
||||
result = result
|
||||
.Replace("<div><br></div>", "<br>") //NOTE: A külső div-be írt enter-et ezt generálják ki, ezt replace-eljük <br>-re.
|
||||
.Replace("<p> </p>", "<br>") //NOTE: A kendo editor-ba írt enter-et ezt generálják ki, ezt replace-eljük <br>-re.
|
||||
.Replace("<br />", "<br>") //NOTE: Az összes sortörést egységessé tesszük.
|
||||
.Replace("<br/>", "<br>") //NOTE: Az összes sortörést egységessé tesszük.
|
||||
.Replace("<div>", string.Empty) //NOTE: Az összes sortörést egységessé tesszük.
|
||||
.Replace("</div>", "<br>") //NOTE: Az összes sortörést egységessé tesszük.
|
||||
.Replace("<p>", string.Empty) //NOTE: Az összes sortörést egységessé tesszük.
|
||||
.Replace("</p>", "<br>") //NOTE: Az összes sortörést egységessé tesszük.
|
||||
.Replace("<strong>", "<b>") //NOTE: Egységes és FastReport kompatibilis tag-ekre replace-elünk.
|
||||
.Replace("</strong>", "</b>") //NOTE: Egységes és FastReport kompatibilis tag-ekre replace-elünk.
|
||||
.Replace("<em>", "<i>") //NOTE: Egységes és FastReport kompatibilis tag-ekre replace-elünk.
|
||||
.Replace("</em>", "</i>") //NOTE: Egységes és FastReport kompatibilis tag-ekre replace-elünk.
|
||||
.Replace("<span style=\"text-decoration:underline;\">", "<u>") //NOTE: Egységes és FastReport kompatibilis tag-ekre replace-elünk.
|
||||
.Replace("</span>", "</u>"); //NOTE: Egységes és FastReport kompatibilis tag-ekre replace-elünk.
|
||||
}
|
||||
|
||||
//NOTE: --- Start: Replace-eljük az összes nem legális html tag-et.
|
||||
Random random = new Random();
|
||||
//NOTE: Erre a bonyolult random-ozós replace-es logikára azért van szükség, hogy ne tudják hack-elni véletlenül sem a bejövő adatokat!
|
||||
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
||||
string closeTagTempString = $"¤{new string(Enumerable.Repeat(chars, 5).Select(s => s[random.Next(s.Length)]).ToArray())}¤";
|
||||
string openTagTempString = $"÷{new string(Enumerable.Repeat(chars, 5).Select(s => s[random.Next(s.Length)]).ToArray())}÷";
|
||||
//NOTE: Replace-eljük a legális html tag-eket, hogy azokat a RemoveAllHtmlTags, ne szedje ki!
|
||||
foreach (var legalHtmlTag in legalHtmlTagList)
|
||||
{
|
||||
result = result.Replace($"</{legalHtmlTag}>", $"{closeTagTempString}{legalHtmlTag}{closeTagTempString}")
|
||||
.Replace($"<{legalHtmlTag}>", $"{openTagTempString}{legalHtmlTag}{openTagTempString}");
|
||||
|
||||
//NOTE: Ha stílust tartalmaz a legalHtmlTag akkor azt nem szabad leszedni róla (pl szinezés miatt)
|
||||
if (enableHtmlTagProperties)
|
||||
{
|
||||
result = result.Replace($"<{legalHtmlTag}", $"{openTagTempString}{legalHtmlTag}");
|
||||
}
|
||||
}
|
||||
|
||||
//NOTE: Replace-eljük az összes html tag-et, ami bennemaradt a szövegben.
|
||||
result = CommonUtils.RemoveAllHtmlTags(result);
|
||||
//NOTE: Vissza Replace-eljük a legális html tag-eket, hogy azok normális formában mentődjenek el!
|
||||
foreach (var legalHtmlTag in legalHtmlTagList)
|
||||
{
|
||||
result = result.Replace($"{closeTagTempString}{legalHtmlTag}{closeTagTempString}", $"</{legalHtmlTag}>")
|
||||
.Replace($"{openTagTempString}{legalHtmlTag}{openTagTempString}", $"<{legalHtmlTag}>");
|
||||
//NOTE: Ha stílust tartalmaz a legalHtmlTag akkor azt nem szabad leszedni róla (pl szinezés miatt)
|
||||
if (enableHtmlTagProperties)
|
||||
{
|
||||
result = result.Replace($"{openTagTempString}{legalHtmlTag}", $"<{legalHtmlTag}");
|
||||
}
|
||||
}
|
||||
//NOTE: --- End: Replace-eljük az összes nem legális html tag-et.
|
||||
|
||||
//NOTE: Remove-oljuk a rossz lezáró tag-eket, amikhez nem tartozik nyitó tag!
|
||||
HtmlDocument htmlDocument = new HtmlDocument();
|
||||
htmlDocument.LoadHtml(result);
|
||||
List<HtmlParseError> htmlParseErrorList = htmlDocument.ParseErrors.Where(x => x.Code == HtmlParseErrorCode.TagNotOpened).OrderByDescending(x => x.StreamPosition).ToList();
|
||||
foreach (HtmlParseError htmlParseError in htmlParseErrorList)
|
||||
{
|
||||
result = result.Remove(htmlParseError.StreamPosition, htmlParseError.SourceText.Length);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// INFO: Mobil használja
|
||||
public static string RemoveHtmlForMobile(string text)
|
||||
{
|
||||
while (text.Contains("&"))
|
||||
{
|
||||
text = text.Replace("&", "&"); //NOTE: Replace-elni kell az "&"-okat rekurzívan.
|
||||
}
|
||||
|
||||
var result = text
|
||||
.Replace("<", "<") //NOTE: Replace-elni kell az "<"-ket, ha valamiért a "<" encode-olva lenne.
|
||||
.Replace(">", ">") //NOTE: Replace-elni kell az ">"-ket, ha valamiért a ">" encode-olva lenne.
|
||||
.Replace(" ", "\u0020") //NOTE: Replace-elni kell az " "-ket.
|
||||
.Replace("\u00A0", "\u0020") //NOTE: Replace-elni kell a NO-BREAK SPACE-eket, mert a SPACE-el nem ekvivalens és jöhet be ilyen adat és okozhat problémát.
|
||||
.Replace("<div><br></div>", " ") //NOTE: A külső div-be írt enter-et ezt generálják ki, ezt replace-eljük szóközre.
|
||||
.Replace("<p> </p>", " ") //NOTE: A kendo editor-ba írt enter-et ezt generálják ki, ezt replace-eljük szóközre.
|
||||
.Replace("<br />", " ") //NOTE: Az összes sortörést szóközre cseréljük.
|
||||
.Replace("<br/>", " ") //NOTE: Az összes sortörést szóközre cseréljük.
|
||||
.Replace("<br>", " ") //NOTE: Az összes sortörést szóközre cseréljük.
|
||||
.Replace("</div>", " ") //NOTE: Az összes sortörést szóközre cseréljük.
|
||||
.Replace("</p>", " ") //NOTE: Az összes sortörést szóközre cseréljük.
|
||||
.Replace("<div>", string.Empty) //NOTE: Az összes sortörést szóközre cseréljük.
|
||||
.Replace("<p>", string.Empty) //NOTE: Az összes sortörést szóközre cseréljük.
|
||||
.Replace("</li>", " ") //NOTE: A felsorolás elemeit is elválasztjuk.
|
||||
.Replace("<strong>", string.Empty) //NOTE: A formázás tageket töröljük.
|
||||
.Replace("</strong>", string.Empty) //NOTE: A formázás tageket töröljük.
|
||||
.Replace("<em>", string.Empty) //NOTE: A formázás tageket töröljük.
|
||||
.Replace("</em>", string.Empty) //NOTE: A formázás tageket töröljük.
|
||||
.Replace("<span style=\"text-decoration:underline;\">", string.Empty) //NOTE: A formázás tageket töröljük.
|
||||
.Replace("</span>", string.Empty); //NOTE: A formázás tageket töröljük.
|
||||
|
||||
result = CommonUtils.RemoveAllHtmlTags(result);
|
||||
return HttpUtility.HtmlDecode(result);
|
||||
}
|
||||
}
|
||||
}
|
582
Kreta.BusinessLogic/Logic/SimpleExportLogic.cs
Normal file
582
Kreta.BusinessLogic/Logic/SimpleExportLogic.cs
Normal file
|
@ -0,0 +1,582 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using Aspose.Cells;
|
||||
using Kreta.BusinessLogic.Classes;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.BusinessLogic.Utils;
|
||||
using Kreta.Core;
|
||||
using Kreta.Core.CustomAttributes;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Resources;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic
|
||||
{
|
||||
public static class SimpleExportLogic
|
||||
{
|
||||
/// <summary>
|
||||
/// A sablon MemoryStream összeállítása adatok nélkül.
|
||||
/// </summary>
|
||||
/// <param name="worksheetName">A generálandó worksheet neve.</param>
|
||||
/// <param name="simpleExportColumnCos">A Co lista, ami leírja az oszlopok tulajdonságait/viselkedéseit, amik alapján kigeneráljuk az excel-t.</param>
|
||||
public static MemoryStream GetTemplate(string worksheetName, List<SimpleExportColumnCo> simpleExportColumnCos)
|
||||
{
|
||||
using (var workbook = new Workbook())
|
||||
{
|
||||
Worksheet worksheet = GetWorksheet(workbook, worksheetName, simpleExportColumnCos);
|
||||
SetColumnsStyle(worksheet, simpleExportColumnCos);
|
||||
|
||||
MemoryStream memoryStream = GetWorkbookMemoryStream(workbook);
|
||||
return memoryStream;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Az export MemoryStream összeállítása feltöltve adatokkal.
|
||||
/// </summary>
|
||||
public static MemoryStream GetExport<T>(string worksheetName, List<SimpleExportColumnCo> simpleExportColumnCos, List<T> itemList, int tanevId)
|
||||
{
|
||||
return GetExport<T>(worksheetName, simpleExportColumnCos, itemList, null, null, tanevId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Az export MemoryStream összeállítása feltöltve adatokkal.
|
||||
/// </summary>
|
||||
public static MemoryStream GetExport<T>(string worksheetName, List<SimpleExportColumnCo> simpleExportColumnCos, List<T> itemList, Action<Worksheet> worksheetAction, int tanevId)
|
||||
{
|
||||
return GetExport<T>(worksheetName, simpleExportColumnCos, itemList, worksheetAction, null, tanevId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Az export MemoryStream összeállítása feltöltve adatokkal.
|
||||
/// </summary>
|
||||
public static MemoryStream GetExport<T>(string worksheetName, List<SimpleExportColumnCo> simpleExportColumnCos, List<T> itemList, Action<Worksheet, List<T>> worksheetWithItemListAction, int tanevId)
|
||||
{
|
||||
return GetExport<T>(worksheetName, simpleExportColumnCos, itemList, null, worksheetWithItemListAction, tanevId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Az export MemoryStream összeállítása feltöltve adatokkal.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">A co vagy model típusa, aminek a property-jein lévő SimpleExportColumnAttribute alapján generáljuk az excel-t.</typeparam>
|
||||
/// <param name="worksheetName">A generálandó worksheet neve.</param>
|
||||
/// <param name="simpleExportColumnCos">A Co lista, ami leírja az oszlopok tulajdonságait/viselkedéseit, amik alapján kigeneráljuk az excel-t.</param>
|
||||
/// <param name="itemList">Az adatok, amikkel feltöltjük az excel-t. Ide már rendezve kerlüjenek, mert olyan sorrendben kerülnek be az excel-be!</param>
|
||||
/// <param name="worksheetAction">Egyedi logika a worksheeten.</param>
|
||||
/// <param name="worksheetWithItemListAction">Egyedi logika a worksheeten a listával.</param>
|
||||
private static MemoryStream GetExport<T>(string worksheetName, List<SimpleExportColumnCo> simpleExportColumnCos, List<T> itemList, Action<Worksheet> worksheetAction, Action<Worksheet, List<T>> worksheetWithItemListAction, int tanevId)
|
||||
{
|
||||
using (var workbook = new Workbook())
|
||||
{
|
||||
Worksheet worksheet = GetWorksheet(workbook, worksheetName, simpleExportColumnCos);
|
||||
worksheet.FillWithData(itemList, simpleExportColumnCos, tanevId);
|
||||
|
||||
worksheetAction?.Invoke(worksheet);
|
||||
|
||||
worksheetWithItemListAction?.Invoke(worksheet, itemList);
|
||||
|
||||
MemoryStream memoryStream = GetWorkbookMemoryStream(workbook);
|
||||
return memoryStream;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sorba rendezve visszaadja a generikus objektumból a SimpleExportColumnCo-ket.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">A co vagy model típusa, aminek a property-jein lévő SimpleExportColumnAttribute alapján generáljuk az excel-t.</typeparam>
|
||||
/// <param name="attributeId">A property-ken lévő SimpleExportColumnAttribute-nak átadott azonsító, ami meghatározza, hogy mely oszlopkat kell generálni.</param>
|
||||
/// <param name="dropDownColumnSourceDictionary">Az oszlopohoz tartozó adatforrások, amiket külön sheet-ekbe generálunk bele.</param>
|
||||
public static List<SimpleExportColumnCo> GetSimpleExportColumnCos<T>(string attributeId, Dictionary<string, IList<string>> dropDownColumnSourceDictionary = null)
|
||||
{
|
||||
var simpleExportColumnCos = new List<SimpleExportColumnCo>();
|
||||
|
||||
if (dropDownColumnSourceDictionary == null)
|
||||
{
|
||||
dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>();
|
||||
}
|
||||
|
||||
List<PropertyInfo> propertyInfos = typeof(T)
|
||||
.GetProperties()
|
||||
.Where(p =>
|
||||
Attribute.IsDefined(p, typeof(SimpleExportColumnAttribute)) &&
|
||||
p.GetCustomAttributes(typeof(SimpleExportColumnAttribute), false)
|
||||
.Any(a => ((SimpleExportColumnAttribute)a).AttributeId == attributeId))
|
||||
.ToList();
|
||||
|
||||
foreach (PropertyInfo propertyInfo in propertyInfos)
|
||||
{
|
||||
var attribute = (SimpleExportColumnAttribute)propertyInfo
|
||||
.GetCustomAttributes(typeof(SimpleExportColumnAttribute), false)
|
||||
.SingleOrDefault(p => ((SimpleExportColumnAttribute)p).AttributeId == attributeId);
|
||||
if (attribute == null)
|
||||
{
|
||||
throw new NullReferenceException(string.Format(ErrorResource.Az0ValtozoErtekeNemLehetNull, nameof(attribute)));
|
||||
}
|
||||
|
||||
//NOTE: Azért kell kiemelni ezeket külön változóba, mert a reflection miatt, minden hivatkozánál belassul.
|
||||
// Viszont ha változókba vannak kiemelve ezek, akkor nem jön elő lassulás.
|
||||
Type propertyType = propertyInfo.PropertyType;
|
||||
string propertyName = propertyInfo.Name;
|
||||
Type forcedType = attribute.ForcedType;
|
||||
BooleanDisplayFormatEnum booleanDisplayFormat = attribute.BooleanDisplayFormat;
|
||||
int columnIndex = attribute.Index;
|
||||
string columnHeaderName = attribute.HeaderName;
|
||||
string dropDownColumnSourceSheetGroupName = attribute.DropDownColumnSourceSheetGroupName;
|
||||
ExcelAggregateFunctionEnum aggregateFunction = attribute.AggregateFunction;
|
||||
string dateTimeToStringPattern = attribute.DateTimeToStringPattern;
|
||||
int decimalDigitCount = attribute.DecimalDigitCount;
|
||||
bool asHtml = attribute.AsHtml;
|
||||
|
||||
Type columnType = forcedType ?? propertyType;
|
||||
//NOTE: Ha van bool mező, akkor létrehozunk egy source-t, ami alapján majd lenyíló listát csinálunk.
|
||||
if (columnType == typeof(bool) && !dropDownColumnSourceDictionary.ContainsKey(CommonResource.Logikai))
|
||||
{
|
||||
dropDownColumnSourceDictionary.Add(CommonResource.Logikai, CommonUtils.GetIgenNemList(booleanDisplayFormat));
|
||||
}
|
||||
|
||||
var dropDownColumnSource = dropDownColumnSourceDictionary.SingleOrDefault(x => columnType == typeof(bool) && x.Key == CommonResource.Logikai || x.Key == columnHeaderName);
|
||||
simpleExportColumnCos.Add(new SimpleExportColumnCo(
|
||||
columnIndex,
|
||||
columnHeaderName,
|
||||
columnType,
|
||||
dropDownColumnSource.Value,
|
||||
dropDownColumnSourceSheetGroupName ?? dropDownColumnSource.Key,
|
||||
aggregateFunction,
|
||||
booleanDisplayFormat,
|
||||
dateTimeToStringPattern,
|
||||
decimalDigitCount,
|
||||
asHtml,
|
||||
propertyName));
|
||||
}
|
||||
|
||||
//NOTE: Validáljuk, hogy csak egy fajta logikai oszlop megjelenítés lehessen!
|
||||
List<BooleanDisplayFormatEnum> booleanDisplayFormatList = simpleExportColumnCos
|
||||
.Where(x => x.Type == typeof(bool))
|
||||
.GroupBy(x => x.BooleanDisplayFormat)
|
||||
.Select(x => x.Key)
|
||||
.ToList();
|
||||
if (booleanDisplayFormatList.Count > 1)
|
||||
{
|
||||
throw new ApplicationException(ErrorResource.EgyExportbanCsakEgyfeleLogikaiOszlopMegjelenitesLehetseges);
|
||||
}
|
||||
|
||||
return simpleExportColumnCos.OrderBy(o => o.Index).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sorba rendezve visszaadja egy header dictionary alapján a a SimpleExportColumnCo-ket.
|
||||
/// </summary>
|
||||
/// <param name="headerNameDictionary">A header nevek dictionary-ja, ami az oszlop index-ét és a header nevét tartalmazza.</param>
|
||||
/// <param name="dropDownColumnSourceDictionary">Az oszlopohoz tartozó adatforrások, amiket külön sheet-ekbe generálunk bele.</param>
|
||||
public static List<SimpleExportColumnCo> GetSimpleExportColumnCos(Dictionary<int, string> headerNameDictionary, Dictionary<string, IList<string>> dropDownColumnSourceDictionary = null)
|
||||
{
|
||||
var simpleExportColumnCos = new List<SimpleExportColumnCo>();
|
||||
|
||||
if (dropDownColumnSourceDictionary == null)
|
||||
{
|
||||
dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>();
|
||||
}
|
||||
|
||||
foreach (KeyValuePair<int, string> item in headerNameDictionary)
|
||||
{
|
||||
var dropDownColumnSource = dropDownColumnSourceDictionary.SingleOrDefault(x => x.Key == item.Value);
|
||||
simpleExportColumnCos.Add(new SimpleExportColumnCo(
|
||||
item.Key,
|
||||
item.Value,
|
||||
null,
|
||||
dropDownColumnSource.Value,
|
||||
dropDownColumnSource.Key)
|
||||
);
|
||||
}
|
||||
|
||||
return simpleExportColumnCos.OrderBy(o => o.Index).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A worksheet összeállítása a törzsadatlista sheet-ekkel együtt.
|
||||
/// </summary>
|
||||
/// <param name="workbook">A workbook, amiben létrehozzuk a worksheet-et és a törzsadatlista sheet-eket.</param>
|
||||
/// <param name="worksheetName">A worksheet neve.</param>
|
||||
/// <param name="simpleExportColumnCos">A Co lista, ami leírja az oszlopok tulajdonságait/viselkedéseit, amik alapján a header-öket és törzsadatlistákat beállítjuk.</param>
|
||||
/// <param name="worksheetIndex">a worksheet indexe.</param>
|
||||
public static Worksheet GetWorksheet(Workbook workbook, string worksheetName, List<SimpleExportColumnCo> simpleExportColumnCos, int worksheetIndex = 0)
|
||||
{
|
||||
string safeWorksheetName = CellsHelper.CreateSafeSheetName(worksheetName);
|
||||
Worksheet worksheet = workbook.Worksheets.ElementAtOrDefault(worksheetIndex) != null ?
|
||||
workbook.Worksheets[worksheetIndex] :
|
||||
workbook.Worksheets.Add(safeWorksheetName);
|
||||
worksheet.Name = safeWorksheetName;
|
||||
|
||||
worksheet.CreateWorksheetHeaders(simpleExportColumnCos);
|
||||
CreateDropDownColumnSourceSheets(workbook, simpleExportColumnCos, worksheet.Validations);
|
||||
|
||||
return worksheet;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adatsorok feltöltése a worksheet-en.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Az objektum típusa, amiből feltöltjük az adatokat.</typeparam>
|
||||
/// <param name="worksheet">A worksheet, aminek a sorait feltöltjük a SimpleExportColumnCo lista alapján.</param>
|
||||
/// <param name="rows">A sorok listája, amikkel feltöltjük a worksheet sorait a SimpleExportColumnCo alapján.</param>
|
||||
/// <param name="simpleExportColumnCos">A Co lista, ami leírja az oszlopok tulajdonságait/viselkedéseit, amik alapján a worksheetbe feltöltjük a sorokat.</param>
|
||||
public static void FillWithData<T>(this Worksheet worksheet, List<T> rows, List<SimpleExportColumnCo> simpleExportColumnCos, int tanevId)
|
||||
{
|
||||
int rowNumber = 1;
|
||||
Type type = typeof(T);
|
||||
var simpleExportColumnCosToAggregate = new List<SimpleExportColumnCo>();
|
||||
//NOTE: Feltöltjük adatokkal az excel-t!
|
||||
foreach (T row in rows)
|
||||
{
|
||||
foreach (SimpleExportColumnCo simpleExportColumnCo in simpleExportColumnCos)
|
||||
{
|
||||
PropertyInfo propertyInfo = type.GetProperty(simpleExportColumnCo.PropertyName);
|
||||
if (propertyInfo == null)
|
||||
{
|
||||
throw new NullReferenceException(string.Format(ErrorResource.Az0ValtozoErtekeNemLehetNull, nameof(propertyInfo)));
|
||||
}
|
||||
|
||||
object cellValue = propertyInfo.GetValue(row);
|
||||
worksheet.Cells[rowNumber, simpleExportColumnCo.Index].SetCellValue(cellValue, simpleExportColumnCo.BooleanDisplayFormat, simpleExportColumnCo.AsHtml, tanevId);
|
||||
//NOTE: Kiemeljük azokat az oszlopokat, ahol szeretnénk(azaz megadtuk SimpleExportColumnAttribute-ban az AggregateFunction-t) az utolsó adatsor után valamilyen összegzést csinálni.
|
||||
if (simpleExportColumnCo.AggregateFunction != ExcelAggregateFunctionEnum.NONE)
|
||||
{
|
||||
simpleExportColumnCosToAggregate.Add(simpleExportColumnCo);
|
||||
}
|
||||
}
|
||||
|
||||
rowNumber++;
|
||||
}
|
||||
|
||||
foreach (var simpleExportColumnCo in simpleExportColumnCosToAggregate)
|
||||
{
|
||||
string columnName = CellsHelper.ColumnIndexToName(simpleExportColumnCo.Index);
|
||||
//NOTE: Itt állítjuk be a megjelölt oszlopokra a kiválasztott aggregációs függvényt az excel-es AGGREGATE függvénnyel.
|
||||
// =AGGREGATE(function_num, options, array)
|
||||
// - A function_num paraméter az ExcelAggregateFunctionEnum-ból jön.
|
||||
// - Az options = 3 - Ignorálja a rejtett sorokat, hibás értékeket, beágyazott SUBTOTAL és AGGREGATE függvényeket.
|
||||
// - Az array paraméter pedig beállítja az aggregálandó adatokat - Pl: H2:H54
|
||||
// Azért 2-től, mert az első sorban a fejléc van, ami nem aggregálandó, a rowNumber pedig az utolsó adatsor utánra mutat.
|
||||
// FONTOS: AGGREGATE function is designed vertical ranges, not horizontal ranges.
|
||||
// https://support.microsoft.com/en-us/office/aggregate-function-43b9278e-6aa7-4f17-92b6-e19993fa26df
|
||||
worksheet.Cells[rowNumber, simpleExportColumnCo.Index].Formula = $"=AGGREGATE({(int)simpleExportColumnCo.AggregateFunction}, 3, {columnName}2:{columnName}{rowNumber})";
|
||||
}
|
||||
|
||||
//NOTE: Beállítjuk az oszlopok stílusát!
|
||||
SetColumnsStyle(worksheet, simpleExportColumnCos);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A már elkészült workbook MemoryStream összeállítása és a sheet-eken lévő oszlopok/sorok szélességének/magasságának beállítása.
|
||||
/// </summary>
|
||||
/// <param name="workbook">A már elkészült workbook, amiből MemoryStrem-et készítünk.</param>
|
||||
/// <param name="sheetCodeNameAndColumnsToWrapIndexDictionary">Az adott kódú sheet-eken lévő adott index-ű oszlopok sortöréseinek beállításához kell. Pl.: Amikor több sorba kell törni egy adott cella értékét.</param>
|
||||
public static MemoryStream GetWorkbookMemoryStream(Workbook workbook, Dictionary<string, List<int>> sheetCodeNameAndColumnsToWrapIndexDictionary = null)
|
||||
{
|
||||
//NOTE: Beállítjuk a default style-t. Ez van alapból az excel-ben.
|
||||
Style style = InitializeDefaultStyle(workbook.CreateStyle());
|
||||
workbook.DefaultStyle = style;
|
||||
|
||||
foreach (Worksheet worksheet in workbook.Worksheets)
|
||||
{
|
||||
//NOTE: Beállítjuk a cella magasságokat és szélességeket.
|
||||
//FONTOS: Hogy ebben a sorrendben történjen, az esetleges text wrap-ok miatt, amikor sortörések vannak a cellákban.
|
||||
worksheet.AutoFitRows();
|
||||
worksheet.AutoFitColumns();
|
||||
|
||||
foreach (Column column in worksheet.Cells.Columns)
|
||||
{
|
||||
List<int> columnsToWrapIndexList = sheetCodeNameAndColumnsToWrapIndexDictionary?.SingleOrDefault(x => x.Key == worksheet.CodeName).Value;
|
||||
if (columnsToWrapIndexList != null && columnsToWrapIndexList.Any() && columnsToWrapIndexList.Contains(column.Index))
|
||||
{
|
||||
//NOTE: Erre azért van szükség, hogy ha a cellákban van Environment.NewLine és be van állítva IsTextWrapped = true, akkor AutoFitColumns szavanként fogja törni a szöveget.
|
||||
// Viszont, ha kiszélesítjük, majd úgy hívjuk meg az AutoFitColumn-ot, akkor a sortörésekig állítja be a szélességet.
|
||||
worksheet.Cells.SetColumnWidth(column.Index, 254.86);
|
||||
worksheet.AutoFitColumn(column.Index);
|
||||
//NOTE: Miután beállítottuk a szélességet, az Aspose valamiért rövidebbre vágja a wrap-olt sorokat és emiatt plusz sortörések jelenhetnek meg hibásan.
|
||||
// Ezért hozzáadunk 5-öt a már beállított szélességhez és így jól fog megjelenni. Extrém széles/hosszú szövegnél jöhet csak elő a probléma,
|
||||
// mivel az excel, a sortöréseket, valamiért arányosan hosszabbított szélességgel tudja csak rendesen megjeleníteni. De max 150 széles legyen.
|
||||
double columnWidth = worksheet.Cells.GetColumnWidth(column.Index);
|
||||
worksheet.Cells.SetColumnWidth(column.Index, columnWidth + 5 > 150 ? 150 : columnWidth + 5);
|
||||
}
|
||||
|
||||
//Note: Erre azért van szükség, hogyha túl szélesek lennék az oszlopok, akkor max 150 széles lehessen, hogy ne tolja nagyon szét az excel-t.
|
||||
if (column.Width > 150)
|
||||
{
|
||||
column.Width = 150;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var memorystream = new MemoryStream();
|
||||
workbook.Save(memorystream, SaveFormat.Xlsx);
|
||||
memorystream.Position = 0;
|
||||
return memorystream;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Törzsadatlista beszúrása az excelbe külön sheet-eken.
|
||||
/// </summary>
|
||||
/// <param name="workbook">A workbook, amiben létrehozzuk a törzsadatlista sheet-eket.</param>
|
||||
/// <param name="simpleExportColumnCos">A Co lista, ami leírja az oszlopok tulajdonságait/viselkedéseit, amik alapján a törzsadatlistákat beállítjuk.</param>
|
||||
/// <param name="validationCollection">Az adott worksheet-hez tartozó ValidationCollection, a lenyílólista beállításához.</param>
|
||||
private static void CreateDropDownColumnSourceSheets(Workbook workbook, List<SimpleExportColumnCo> simpleExportColumnCos, ValidationCollection validationCollection)
|
||||
{
|
||||
foreach (var simpleExportColumnCo in simpleExportColumnCos)
|
||||
{
|
||||
if (simpleExportColumnCo.IsDropDownColumn)
|
||||
{
|
||||
string safeWorksheetName = CellsHelper.CreateSafeSheetName(simpleExportColumnCo.DropDownColumnSourceSheetGroupName);
|
||||
IList<string> dropDownColumnSource = simpleExportColumnCo.DropDownColumnSource;
|
||||
CreateDropDownColumnSourceSheet(workbook, safeWorksheetName, dropDownColumnSource);
|
||||
|
||||
var cellArea = new CellArea();
|
||||
cellArea.StartColumn = cellArea.EndColumn = simpleExportColumnCo.Index;
|
||||
cellArea.StartRow = 1;
|
||||
cellArea.EndRow = Constants.General.MaxRowNumberXlsx - 1;
|
||||
Aspose.Cells.Validation validation = validationCollection[validationCollection.Add(cellArea)];
|
||||
validation.Type = ValidationType.List;
|
||||
validation.Operator = OperatorType.None;
|
||||
validation.InCellDropDown = true;
|
||||
validation.Formula1 = $"={safeWorksheetName.RemoveSpecialCharacters()}";
|
||||
validation.ShowError = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Fejléc sor feltöltése és a stílusának beállítása.
|
||||
/// </summary>
|
||||
/// <param name="worksheet">A worksheet, aminek a worksheet, aminek a fejléc sorát beállítjuk.</param>
|
||||
/// <param name="simpleExportColumnCos">A Co lista, ami leírja az oszlopok tulajdonságait/viselkedéseit, amik alapján a fejléceket beállítjuk.</param>
|
||||
private static void CreateWorksheetHeaders(this Worksheet worksheet, List<SimpleExportColumnCo> simpleExportColumnCos)
|
||||
{
|
||||
Style style = InitializeDefaultHeaderStyle();
|
||||
|
||||
foreach (SimpleExportColumnCo simpleExportColumnCo in simpleExportColumnCos)
|
||||
{
|
||||
int columnIndex = simpleExportColumnCo.Index;
|
||||
worksheet.Cells[0, columnIndex].Value = simpleExportColumnCo.HeaderName;
|
||||
worksheet.Cells[0, columnIndex].SetStyle(style);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Törzsadatlista beszúrása az excelbe külön sheet-en.
|
||||
/// </summary>
|
||||
/// <param name="workbook">A workbook, amiben létrehozzuk a törzsadatlista sheet-et.</param>
|
||||
/// <param name="worksheetName">A sheet neve, amibe beszúrjuk a törzsadatlistát.</param>
|
||||
/// <param name="dropDownColumnSource">A törzsadatlista, amit beszúrúnk a külön sheet-be.</param>
|
||||
private static void CreateDropDownColumnSourceSheet(Workbook workbook, string worksheetName, IList<string> dropDownColumnSource)
|
||||
{
|
||||
if (workbook.Worksheets[worksheetName] != null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Worksheet validationWorksheet = workbook.Worksheets.Add(worksheetName);
|
||||
Range range = validationWorksheet.Cells.CreateRange(0, 0, Math.Max(dropDownColumnSource.Count, 1), 1);
|
||||
range.Name = worksheetName.RemoveSpecialCharacters();
|
||||
|
||||
for (int index = 0; index < dropDownColumnSource.Count; index++)
|
||||
{
|
||||
string item = dropDownColumnSource[index];
|
||||
range[index, 0].PutValue(item);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Beállítjuk a cella értékét a bejövő stílus alapján.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Az érték típusa, ami alapján formázva beállítjuk a cella értékét.</typeparam>
|
||||
/// <param name="cell">A cella, aminek beállítjuk az értékét.</param>
|
||||
/// <param name="value">Az érték, amit beállítunk a cellának, típus szerint formázva.</param>
|
||||
/// <param name="booleanDisplayFormatEnum">Ha az oszlop bool típusú, akkor annak a megjelenítéséhez használható paraméter.</param>
|
||||
private static void SetCellValue<T>(this Cell cell, T value, BooleanDisplayFormatEnum booleanDisplayFormatEnum, bool asHtml, int tanevId)
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
case string nullableStringValue:
|
||||
var stringValue = !string.IsNullOrWhiteSpace(nullableStringValue) ? nullableStringValue : string.Empty;
|
||||
if (asHtml)
|
||||
{
|
||||
cell.HtmlString = stringValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
cell.Value = stringValue;
|
||||
}
|
||||
break;
|
||||
case int intValue:
|
||||
cell.Value = intValue;
|
||||
break;
|
||||
case decimal decimalValue:
|
||||
cell.Value = decimalValue;
|
||||
break;
|
||||
case double doubleValue:
|
||||
cell.Value = doubleValue;
|
||||
break;
|
||||
case DateTime dateValue:
|
||||
cell.Value = dateValue;
|
||||
break;
|
||||
case bool boolvalue:
|
||||
cell.Value = boolvalue.GetDisplayName(booleanDisplayFormatEnum);
|
||||
break;
|
||||
case Enum enumValue:
|
||||
cell.Value = enumValue.GetDisplayName(tanevId);
|
||||
break;
|
||||
default:
|
||||
cell.Value = value != null ? value.ToString() : string.Empty;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Beállítjuk a worksheet oszlopainak a stílusait.
|
||||
/// </summary>
|
||||
/// <param name="worksheet">A worksheet, aminek a worksheet, aminek az oszlopainak a stílusait állítjuk.</param>
|
||||
/// <param name="simpleExportColumnCos">A Co lista, ami leírja az oszlopok tulajdonságait/viselkedéseit, amik alapján a stílusokat állítjuk.</param>
|
||||
private static void SetColumnsStyle(Worksheet worksheet, List<SimpleExportColumnCo> simpleExportColumnCos)
|
||||
{
|
||||
//NOTE: Beállítjuk az oszlopok stílusát!
|
||||
foreach (SimpleExportColumnCo simpleExportColumnCo in simpleExportColumnCos)
|
||||
{
|
||||
Style columnStyle = InitializeDefaultStyle();
|
||||
Type columnType = simpleExportColumnCo.Type;
|
||||
if (columnType == typeof(string))
|
||||
{
|
||||
columnStyle.Number = 49; //NOTE: Text (https://docs.aspose.com/display/cellsnet/Data+Formatting)
|
||||
}
|
||||
else if (columnType == typeof(int))
|
||||
{
|
||||
columnStyle.Number = 1; //NOTE: Decimal 0 (https://docs.aspose.com/display/cellsnet/Data+Formatting)
|
||||
}
|
||||
else if (columnType == typeof(int?))
|
||||
{
|
||||
columnStyle.Number = 1; //NOTE: Decimal 0 (https://docs.aspose.com/display/cellsnet/Data+Formatting)
|
||||
}
|
||||
else if (columnType == typeof(decimal))
|
||||
{
|
||||
columnStyle.Custom = GetDecimalCustom(simpleExportColumnCo.DecimalDigitCount);
|
||||
}
|
||||
else if (columnType == typeof(decimal?))
|
||||
{
|
||||
columnStyle.Custom = GetDecimalCustom(simpleExportColumnCo.DecimalDigitCount);
|
||||
}
|
||||
else if (columnType == typeof(double))
|
||||
{
|
||||
columnStyle.Custom = GetDecimalCustom(simpleExportColumnCo.DecimalDigitCount);
|
||||
}
|
||||
else if (columnType == typeof(double?))
|
||||
{
|
||||
columnStyle.Custom = GetDecimalCustom(simpleExportColumnCo.DecimalDigitCount);
|
||||
}
|
||||
else if (columnType == typeof(DateTime))
|
||||
{
|
||||
columnStyle.Custom = string.IsNullOrWhiteSpace(simpleExportColumnCo.DateTimeToStringPattern) ? Constants.ToStringPattern.HungarianDate : simpleExportColumnCo.DateTimeToStringPattern;
|
||||
}
|
||||
else if (columnType == typeof(DateTime?))
|
||||
{
|
||||
columnStyle.Custom = string.IsNullOrWhiteSpace(simpleExportColumnCo.DateTimeToStringPattern) ? Constants.ToStringPattern.HungarianDate : simpleExportColumnCo.DateTimeToStringPattern;
|
||||
}
|
||||
else if (columnType == typeof(bool))
|
||||
{
|
||||
columnStyle.Number = 0; //NOTE: General (https://docs.aspose.com/display/cellsnet/Data+Formatting)
|
||||
}
|
||||
else if (columnType == typeof(bool?))
|
||||
{
|
||||
columnStyle.Number = 0; //NOTE: General (https://docs.aspose.com/display/cellsnet/Data+Formatting)
|
||||
}
|
||||
else if (columnType == typeof(Enum))
|
||||
{
|
||||
columnStyle.Number = 0; //NOTE: General (https://docs.aspose.com/display/cellsnet/Data+Formatting)
|
||||
}
|
||||
else
|
||||
{
|
||||
columnStyle.Number = 0; //NOTE: General (https://docs.aspose.com/display/cellsnet/Data+Formatting)
|
||||
}
|
||||
|
||||
worksheet.Cells.Columns[simpleExportColumnCo.Index].ApplyStyle(columnStyle, new StyleFlag { All = true });
|
||||
}
|
||||
|
||||
Style defaultHeaderStyle = InitializeDefaultHeaderStyle();
|
||||
//NOTE: Beállítjuk a header-ök(azaz az első sor) stílusát, mivel ezek eltérnek az adott osztloptól!
|
||||
foreach (SimpleExportColumnCo simpleExportColumnCo in simpleExportColumnCos)
|
||||
{
|
||||
worksheet.Cells[0, simpleExportColumnCo.Index].SetStyle(defaultHeaderStyle);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Visszaadjuk a stílusnak decimalDigitCount által tizedesjegyekkel formázott custom-ot.
|
||||
/// https://docs.aspose.com/display/cellsnet/Data+Formatting
|
||||
/// </summary>
|
||||
/// <param name="decimalDigitCount">Az excel-ben megjelenő tizedes jegyek számát határozza meg.</param>
|
||||
private static string GetDecimalCustom(int? decimalDigitCount)
|
||||
{
|
||||
var custom = "# ##0";
|
||||
if (decimalDigitCount.IsNotNullAndPositive())
|
||||
{
|
||||
//NOTE: Az IsNotNullAndPositive vizsgálat miatt a decimalDigitCount nem lehet soha null!
|
||||
// ReSharper disable once PossibleInvalidOperationException
|
||||
custom += $".{new string('0', decimalDigitCount.Value)}";
|
||||
}
|
||||
|
||||
return custom;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A cellák default stílusának inicializálása.
|
||||
/// </summary>
|
||||
/// <param name="style">A stílus, aminek bizonyos property-jeit módosítjuk a default értékekre. Ha null, akkor új stílust hozunk létre.</param>
|
||||
private static Style InitializeDefaultStyle(Style style = null)
|
||||
{
|
||||
if (style == null)
|
||||
{
|
||||
var cellFactory = new CellsFactory();
|
||||
style = cellFactory.CreateStyle();
|
||||
}
|
||||
|
||||
style.Font.Name = "Calibri";
|
||||
style.Font.Size = 11;
|
||||
|
||||
return style;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A header cellák default stílusának inicializálása.
|
||||
/// </summary>
|
||||
/// <param name="style">A stílus, aminek bizonyos property-jeit módosítjuk a default értékekre. Ha null, akkor új stílust hozunk létre.</param>
|
||||
private static Style InitializeDefaultHeaderStyle(Style style = null)
|
||||
{
|
||||
if (style == null)
|
||||
{
|
||||
var cellFactory = new CellsFactory();
|
||||
style = cellFactory.CreateStyle();
|
||||
}
|
||||
|
||||
style = InitializeDefaultStyle(style);
|
||||
style.Number = 0; //NOTE: General (https://docs.aspose.com/display/cellsnet/Data+Formatting)
|
||||
style.VerticalAlignment = TextAlignmentType.Center;
|
||||
style.HorizontalAlignment = TextAlignmentType.Center;
|
||||
style.Font.IsBold = Constants.Export.HeaderIsBold;
|
||||
style.ForegroundColor = Constants.Export.HeaderColor;
|
||||
style.Pattern = BackgroundType.Solid;
|
||||
|
||||
return style;
|
||||
}
|
||||
|
||||
public static void EgyediSzovegesOszlopFormazas(this Worksheet worksheet, int column)
|
||||
{
|
||||
Style columnStyle = SimpleExportLogic.InitializeDefaultStyle();
|
||||
columnStyle.Number = 49; //NOTE: Text (https://docs.aspose.com/display/cellsnet/Data+Formatting)
|
||||
worksheet.Cells.Columns[column].ApplyStyle(columnStyle, new StyleFlag { FontName = true, FontSize = true });
|
||||
|
||||
Style defaultHeaderStyle = SimpleExportLogic.InitializeDefaultHeaderStyle();
|
||||
worksheet.Cells[0, column].SetStyle(defaultHeaderStyle);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Kreta.Enums.ManualEnums.SystemSettings;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic.SystemSettings
|
||||
{
|
||||
public static class SystemSettingsLogic
|
||||
{
|
||||
public static long MaxFileSizeMB { get; } = 4;
|
||||
public static long AllowedMaxHeight { get; } = 140;
|
||||
public static long AllowedMaxWidth { get; } = 980;
|
||||
|
||||
private static Dictionary<string, string> allowedFileTypes =
|
||||
new Dictionary<string, string>() {
|
||||
{ ".bmp", "image/bmp" },
|
||||
{ ".jpg", "image/jpeg" },
|
||||
{ ".jpeg", "image/jpeg" },
|
||||
{ ".png", "image/png" },
|
||||
};
|
||||
|
||||
public static SystemSettingsFejlecLablecSzerkesztoHibakEnum ImageValidate(string content)
|
||||
{
|
||||
var sumLength = 0;
|
||||
var sumWidth = 0;
|
||||
var maxHeight = 0;
|
||||
var imgTags = System.Text.RegularExpressions.Regex.Matches(content, "<img(.*?)src=\"(?<src>(.*?))\"(.*?)/>");
|
||||
foreach (System.Text.RegularExpressions.Match imgTag in imgTags)
|
||||
{
|
||||
var group = imgTag.Groups["src"];
|
||||
if (group.Success)
|
||||
{
|
||||
string[] parts = group.Value.Split(new string[] { ";", ":", "," }, StringSplitOptions.None);
|
||||
if (!allowedFileTypes.ContainsValue(parts[1]))
|
||||
{
|
||||
return SystemSettingsFejlecLablecSzerkesztoHibakEnum.AFajlKiterjeszteseVagyTipusaNemMegfelelo;
|
||||
}
|
||||
var bytes = Convert.FromBase64String(parts[3]);
|
||||
sumLength += bytes.Length;
|
||||
using (System.Drawing.Image image = System.Drawing.Image.FromStream(new System.IO.MemoryStream(bytes)))
|
||||
{
|
||||
maxHeight = Math.Max(maxHeight, image.Height);
|
||||
sumWidth += image.Width;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (sumLength > (MaxFileSizeMB * 1024 * 1024))
|
||||
{
|
||||
return SystemSettingsFejlecLablecSzerkesztoHibakEnum.HibaTortentXMBNalNemLehetNagyobbAFajlMerete;
|
||||
}
|
||||
if (maxHeight > AllowedMaxHeight)
|
||||
{
|
||||
return SystemSettingsFejlecLablecSzerkesztoHibakEnum.AKepMagassagaMeghaladjaAMegengedettMeretet;
|
||||
}
|
||||
if (sumWidth > AllowedMaxWidth)
|
||||
{
|
||||
return SystemSettingsFejlecLablecSzerkesztoHibakEnum.AzOsszesKepSzelessegeMeghaladjaAMegengedettMeretet;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,225 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.Core;
|
||||
using Kreta.DataAccess.Interfaces;
|
||||
using Kreta.Enums;
|
||||
using Kreta.Resources;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic.TanuloErtekeles
|
||||
{
|
||||
public class TanuloErtekelesLogicBase
|
||||
{
|
||||
#region Fields
|
||||
|
||||
public static List<int> NyelviesithetoTanuloErtekelesTipusIdList => new List<int>
|
||||
{
|
||||
//NOTE: Egyelőre ez azért egy elemű lista, mert a jövőben bővülni fog és így csak itt kell kiegészíteni nem sok helyen átírni.
|
||||
// Ha 1-nél több eleme van, akkor törölni ezt a NOTE-ot!
|
||||
(int) ErtekelesTipusEnum.evvegi_jegy_ertekeles
|
||||
};
|
||||
|
||||
public static List<int> HaviAtlagbaNemSzamitoErtekelesTipusIdList => new List<int>
|
||||
{
|
||||
(int) ErtekelesTipusEnum.muveszeti_alapvizsga,
|
||||
(int) ErtekelesTipusEnum.muveszeti_zarovizsga
|
||||
};
|
||||
|
||||
#endregion Fields
|
||||
|
||||
/// INFO @DevKornel: Mobil használja
|
||||
public static string GetOsztalyzatTextShort(int? osztalyzat, List<int> egyszerAdhatoErtekelesTipusIds, bool isDefaultReturnValueNull = false, int? tipusId = null, string tema = null)
|
||||
{
|
||||
switch (osztalyzat)
|
||||
{
|
||||
case (int)OsztalyzatTipusEnum.elegtelen_1_:
|
||||
return "1";
|
||||
|
||||
case (int)OsztalyzatTipusEnum.elegseges_2_:
|
||||
return "2";
|
||||
|
||||
case (int)OsztalyzatTipusEnum.kozepes_3_:
|
||||
return "3";
|
||||
|
||||
case (int)OsztalyzatTipusEnum.jo_4_:
|
||||
return "4";
|
||||
|
||||
case (int)OsztalyzatTipusEnum.jeles_5_:
|
||||
var jeles = "5";
|
||||
if (tipusId.IsEntityId() && egyszerAdhatoErtekelesTipusIds.Contains(tipusId.Value))
|
||||
{
|
||||
if (tema.ReplaceMultipleSpacesAndTrim(string.Empty).ToLower() == TanuloErtekelesResource.Dicseret.ReplaceMultipleSpacesAndTrim()?.ToLower())
|
||||
{
|
||||
jeles = TanuloErtekelesResource.DicseretRovidNev;
|
||||
}
|
||||
else if (tema.ReplaceMultipleSpacesAndTrim(string.Empty).ToLower() == TanuloErtekelesResource.Kituno.ReplaceMultipleSpacesAndTrim()?.ToLower())
|
||||
{
|
||||
jeles = TanuloErtekelesResource.KitunoRovidNev;
|
||||
}
|
||||
}
|
||||
|
||||
return jeles;
|
||||
|
||||
default:
|
||||
return isDefaultReturnValueNull ? null : "-";
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetDefaultTanuloErtekelesProperties(ITanuloErtekeles entity, TanuloErtekelesCo tanuloErtekelesCo, DateTime datum, bool isMagatartasSzorgalom, bool isNew)
|
||||
{
|
||||
int tipusId = tanuloErtekelesCo.TipusId;
|
||||
entity.TipusId = tipusId;
|
||||
entity.Datum = datum;
|
||||
entity.IsFromMobil = tanuloErtekelesCo.IsFromMobil;
|
||||
if (!isMagatartasSzorgalom)
|
||||
{
|
||||
SetErtekelesProperties(entity, tanuloErtekelesCo, isNew, tipusId);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetMagatartasSzorgalomProperties(entity, tanuloErtekelesCo);
|
||||
}
|
||||
|
||||
if (tanuloErtekelesCo.IntezmenyId.IsEntityId())
|
||||
{
|
||||
entity.IntezmenyId = tanuloErtekelesCo.IntezmenyId.Value;
|
||||
}
|
||||
}
|
||||
|
||||
private static void SetErtekelesProperties(ITanuloErtekeles entity, TanuloErtekelesCo tanuloErtekelesCo, bool isNew, int tipusId)
|
||||
{
|
||||
if (isNew)
|
||||
{
|
||||
entity.TantargyId = tanuloErtekelesCo.TantargyId.Value;
|
||||
}
|
||||
|
||||
if (tanuloErtekelesCo.ErtekelesOsztalyzatId.IsEntityId())
|
||||
{
|
||||
entity.ErtekelesOsztalyzatId = tanuloErtekelesCo.ErtekelesOsztalyzatId.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
entity.ErtekelesOsztalyzatId = null;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(tanuloErtekelesCo.ErtekelesSzoveg))
|
||||
{
|
||||
entity.ErtekelesSzoveg = tanuloErtekelesCo.ErtekelesSzoveg;
|
||||
entity.ErtekelesSzovegFormazott = tanuloErtekelesCo.ErtekelesSzovegFormazott;
|
||||
string ertekelesSzovegRovidNev = tanuloErtekelesCo.ErtekelesSzovegRovidNev;
|
||||
entity.ErtekelesSzovegRovidNev = !string.IsNullOrWhiteSpace(ertekelesSzovegRovidNev) ? ertekelesSzovegRovidNev : null;
|
||||
}
|
||||
else
|
||||
{
|
||||
entity.ErtekelesSzoveg = null;
|
||||
entity.ErtekelesSzovegFormazott = null;
|
||||
entity.ErtekelesSzovegRovidNev = null;
|
||||
}
|
||||
|
||||
if (tanuloErtekelesCo.ErtekelesSzazalek.HasValue)
|
||||
{
|
||||
entity.ErtekelesSzazalek = tanuloErtekelesCo.ErtekelesSzazalek.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
entity.ErtekelesSzazalek = null;
|
||||
}
|
||||
|
||||
if (tipusId == (int)ErtekelesTipusEnum.evkozi_jegy_ertekeles && tanuloErtekelesCo.ErtekelesModId.IsEntityId())
|
||||
{
|
||||
entity.ErtekelesModId = tanuloErtekelesCo.ErtekelesModId.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
entity.ErtekelesModId = null;
|
||||
}
|
||||
|
||||
entity.ErtekelesTema = !string.IsNullOrWhiteSpace(tanuloErtekelesCo.ErtekelesTema) ? tanuloErtekelesCo.ErtekelesTema : null;
|
||||
}
|
||||
|
||||
private static void SetMagatartasSzorgalomProperties(ITanuloErtekeles entity, TanuloErtekelesCo tanuloErtekelesCo)
|
||||
{
|
||||
if (tanuloErtekelesCo.MagatartasOsztalyzatId.IsEntityId())
|
||||
{
|
||||
entity.MagatartasOsztalyzatId = tanuloErtekelesCo.MagatartasOsztalyzatId.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
entity.MagatartasOsztalyzatId = null;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(tanuloErtekelesCo.MagatartasSzoveg))
|
||||
{
|
||||
entity.MagatartasSzoveg = tanuloErtekelesCo.MagatartasSzoveg;
|
||||
entity.MagatartasSzovegFormazott = tanuloErtekelesCo.MagatartasSzovegFormazott;
|
||||
string magatartasSzovegRovidNev = tanuloErtekelesCo.MagatartasSzovegRovidNev;
|
||||
entity.MagatartasSzovegRovidNev = !string.IsNullOrWhiteSpace(magatartasSzovegRovidNev) ? magatartasSzovegRovidNev : null;
|
||||
}
|
||||
else
|
||||
{
|
||||
entity.MagatartasSzoveg = null;
|
||||
entity.MagatartasSzovegFormazott = null;
|
||||
entity.MagatartasSzovegRovidNev = null;
|
||||
}
|
||||
|
||||
if (tanuloErtekelesCo.MagatartasErtekId.IsEntityId())
|
||||
{
|
||||
entity.MagatartasErtekId = tanuloErtekelesCo.MagatartasErtekId.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
entity.MagatartasErtekId = null;
|
||||
}
|
||||
|
||||
if (tanuloErtekelesCo.SzorgalomOsztalyzatId.IsEntityId())
|
||||
{
|
||||
entity.SzorgalomOsztalyzatId = tanuloErtekelesCo.SzorgalomOsztalyzatId.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
entity.SzorgalomOsztalyzatId = null;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(tanuloErtekelesCo.SzorgalomSzoveg))
|
||||
{
|
||||
entity.SzorgalomSzoveg = tanuloErtekelesCo.SzorgalomSzoveg;
|
||||
entity.SzorgalomSzovegFormazott = tanuloErtekelesCo.SzorgalomSzovegFormazott;
|
||||
string szorgalomSzovegRovidNev = tanuloErtekelesCo.SzorgalomSzovegRovidNev;
|
||||
entity.SzorgalomSzovegRovidNev = !string.IsNullOrWhiteSpace(szorgalomSzovegRovidNev) ? szorgalomSzovegRovidNev : null;
|
||||
}
|
||||
else
|
||||
{
|
||||
entity.SzorgalomSzoveg = null;
|
||||
entity.SzorgalomSzovegFormazott = null;
|
||||
entity.SzorgalomSzovegRovidNev = null;
|
||||
}
|
||||
|
||||
if (tanuloErtekelesCo.SzorgalomErtekId.IsEntityId())
|
||||
{
|
||||
entity.SzorgalomErtekId = tanuloErtekelesCo.SzorgalomErtekId.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
entity.SzorgalomErtekId = null;
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetNewTanuloErtekelesProperties(ITanuloErtekeles entity, TanuloErtekelesCo tanuloErtekelesCo, int felhasznaloId, bool isMagatartasSzorgalom, int? rogziteskoriTanuloOsztalyId)
|
||||
{
|
||||
entity.TanuloId = tanuloErtekelesCo.TanuloId;
|
||||
entity.ErtekeloId = tanuloErtekelesCo.ErtekeloId ?? felhasznaloId;
|
||||
entity.RogzitesDatum = DateTime.Now;
|
||||
entity.OsztalyCsoportId = tanuloErtekelesCo.OsztalyCsoportId.Value;
|
||||
entity.IsMagatartasSzorgalom = isMagatartasSzorgalom;
|
||||
if (tanuloErtekelesCo.OsszefuggoSzakGyakId.IsEntityId())
|
||||
{
|
||||
entity.OsszefuggoSzakGyakId = tanuloErtekelesCo.OsszefuggoSzakGyakId.Value;
|
||||
}
|
||||
|
||||
if (rogziteskoriTanuloOsztalyId.IsEntityId())
|
||||
{
|
||||
entity.RogziteskoriTanuloOsztalyId = rogziteskoriTanuloOsztalyId.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,97 @@
|
|||
using System.Collections.Generic;
|
||||
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Post.Ertekeles;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.BusinessLogic.Utils;
|
||||
using Kreta.Core.Validation.Exceptions;
|
||||
using Kreta.Core.Validation.Exceptions.Enum;
|
||||
using Kreta.Enums;
|
||||
using Kreta.Resources;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic.TanuloErtekeles
|
||||
{
|
||||
public class TanuloErtekelesLogicMobil : TanuloErtekelesLogicBase
|
||||
{
|
||||
/// INFO @DevKornel: Mobil használja
|
||||
public static List<TanuloErtekelesCo> GetTanuloErtekelesCoListV2(int intezmenyId, int felhasznaloId, OsztalyCsoportErtekelesRequestCo osztalyCsoportErtekelesRequestCo)
|
||||
{
|
||||
var tanuloErtekelesCoList = new List<TanuloErtekelesCo>();
|
||||
|
||||
foreach (var item in osztalyCsoportErtekelesRequestCo.TanuloLista)
|
||||
{
|
||||
var tanuloErtekelesCo = new TanuloErtekelesCo
|
||||
{
|
||||
MobilId = item.MobilId,
|
||||
TanuloId = item.TanuloId,
|
||||
ErtekelesModId = osztalyCsoportErtekelesRequestCo.Mod?.Id,
|
||||
TipusId = osztalyCsoportErtekelesRequestCo.Tipus.Id,
|
||||
ErtekeloId = felhasznaloId,
|
||||
IntezmenyId = intezmenyId,
|
||||
OsztalyCsoportId = osztalyCsoportErtekelesRequestCo.OsztalyCsoportId,
|
||||
TantargyId = osztalyCsoportErtekelesRequestCo.TantargyId,
|
||||
ErtekelesOsztalyzatId = item.Ertekeles.OsztalyzatTipus?.Id,
|
||||
ErtekelesSzazalek = item.Ertekeles.Szazalek,
|
||||
ErtekelesTema = osztalyCsoportErtekelesRequestCo.Tema,
|
||||
Datum = osztalyCsoportErtekelesRequestCo.Datum,
|
||||
IsFromMobil = true
|
||||
};
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(item.Ertekeles.Szoveg))
|
||||
{
|
||||
string ertekelesSzovegFormazott = RichTextLogic.GetLegalHtmlString(item.Ertekeles.Szoveg, RichTextLogic.LegalFastReportHtmlTagList, true);
|
||||
tanuloErtekelesCo.ErtekelesSzovegFormazott = ertekelesSzovegFormazott;
|
||||
tanuloErtekelesCo.ErtekelesSzoveg = CommonUtils.RemoveAllHtmlTags(ertekelesSzovegFormazott);
|
||||
}
|
||||
|
||||
tanuloErtekelesCoList.Add(tanuloErtekelesCo);
|
||||
}
|
||||
|
||||
return tanuloErtekelesCoList;
|
||||
}
|
||||
|
||||
public static List<TanuloErtekelesCo> GetTanuloErtekelesCoList(int intezmenyId, int felhasznaloId, Classes.MobileApi.Naplo.V3.Co.Ertekeles.OsztalyCsoportErtekelesRequestCo osztalyCsoportErtekelesRequestCo)
|
||||
{
|
||||
var tanuloErtekelesCoList = new List<TanuloErtekelesCo>();
|
||||
|
||||
foreach (var item in osztalyCsoportErtekelesRequestCo.TanuloLista)
|
||||
{
|
||||
var tanuloErtekelesCo = new TanuloErtekelesCo
|
||||
{
|
||||
TanuloId = item.TanuloId,
|
||||
ErtekelesModId = osztalyCsoportErtekelesRequestCo.Mod?.Id,
|
||||
TipusId = (int)ErtekelesTipusEnum.evkozi_jegy_ertekeles, // Direkt van beégetve, mobilról csak évközi jegy értékelés lehet
|
||||
ErtekeloId = felhasznaloId,
|
||||
IntezmenyId = intezmenyId,
|
||||
OsztalyCsoportId = osztalyCsoportErtekelesRequestCo.OsztalyCsoportId,
|
||||
TantargyId = osztalyCsoportErtekelesRequestCo.TantargyId,
|
||||
ErtekelesOsztalyzatId = item.Ertekeles.OsztalyzatTipus?.Id,
|
||||
ErtekelesSzazalek = int.TryParse(item.Ertekeles.Szazalek, out var szam) ? (int?)szam : null,
|
||||
ErtekelesTema = osztalyCsoportErtekelesRequestCo.Tema,
|
||||
Datum = osztalyCsoportErtekelesRequestCo.Datum,
|
||||
IsFromMobil = true
|
||||
};
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(item.Ertekeles.Szoveg))
|
||||
{
|
||||
var ertekelesSzovegFormazott = RichTextLogic.GetLegalHtmlString(item.Ertekeles.Szoveg, RichTextLogic.LegalFastReportHtmlTagList, true);
|
||||
tanuloErtekelesCo.ErtekelesSzovegFormazott = ertekelesSzovegFormazott;
|
||||
tanuloErtekelesCo.ErtekelesSzoveg = CommonUtils.RemoveAllHtmlTags(ertekelesSzovegFormazott);
|
||||
}
|
||||
|
||||
tanuloErtekelesCoList.Add(tanuloErtekelesCo);
|
||||
}
|
||||
|
||||
return tanuloErtekelesCoList;
|
||||
}
|
||||
|
||||
public static ValidationException GetValidationException(List<ValidationExceptionItem> errors)
|
||||
{
|
||||
var validationException = new ValidationException(ValidationErrorType.Undefined, TanuloErtekelesResource.HibasErtekeles);
|
||||
foreach (var item in errors)
|
||||
{
|
||||
validationException.AddValidationItem(item);
|
||||
}
|
||||
|
||||
return validationException;
|
||||
}
|
||||
}
|
||||
}
|
1287
Kreta.BusinessLogic/Logic/TanuloErtekeles/TanuloErtekelesLogicWeb.cs
Normal file
1287
Kreta.BusinessLogic/Logic/TanuloErtekeles/TanuloErtekelesLogicWeb.cs
Normal file
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,580 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.SqlTypes;
|
||||
using System.Linq;
|
||||
using Kreta.BusinessLogic.Classes;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.BusinessLogic.Helpers;
|
||||
using Kreta.BusinessLogic.Helpers.DokumentumHelpers;
|
||||
using Kreta.BusinessLogic.Helpers.SystemSettings;
|
||||
using Kreta.BusinessLogic.Utils;
|
||||
using Kreta.Core;
|
||||
using Kreta.Core.ConnectionType;
|
||||
using Kreta.DataAccess.Interfaces;
|
||||
using Kreta.DataAccessManual.Interfaces;
|
||||
using Kreta.Enums;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Resources;
|
||||
|
||||
namespace Kreta.BusinessLogic.Logic.TanuloErtekeles
|
||||
{
|
||||
public abstract class TanuloErtekelesValidacioBase
|
||||
{
|
||||
#region Fields
|
||||
|
||||
public readonly List<string> ErrorMessageList = new List<string>();
|
||||
|
||||
protected bool IsValid = true;
|
||||
|
||||
private const int ErtekelesTemaMaxLength = 2000;
|
||||
|
||||
protected IConnectionType ConnectionType;
|
||||
|
||||
#endregion Fields
|
||||
|
||||
#region Constructors
|
||||
|
||||
protected TanuloErtekelesValidacioBase(IConnectionType connectionType)
|
||||
{
|
||||
ConnectionType = connectionType;
|
||||
}
|
||||
|
||||
#endregion Constructors
|
||||
|
||||
protected void IsExists(TanuloErtekelesCo tanuloErtekelesCo)
|
||||
{
|
||||
if (tanuloErtekelesCo == null)
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.NincsKitoltveEgyetlenErtekelesSem);
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
|
||||
protected void IsValidOsztalyCsoportId(TanuloErtekelesCo tanuloErtekelesCo)
|
||||
{
|
||||
if (!tanuloErtekelesCo.OsztalyCsoportId.IsEntityId())
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.OsztalyCsoportKivalasztasaKotelezo);
|
||||
IsValid = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (new NaplozarasLogic(ConnectionType).GetLezartOsztalyokEsBontottCsoportjaik().Contains(tanuloErtekelesCo.OsztalyCsoportId.Value))
|
||||
{
|
||||
ErrorMessageList.Add(tanuloErtekelesCo.Id.HasValue ? TanuloErtekelesResource.AKivalasztottOsztalyNaplojaLezartNemModosithatoErtekelesAzOsztalyTanuloinaknak : TanuloErtekelesResource.AKivalasztottOsztalyNaplojaLezartNemAdhatoErtekelesAzOsztalyTanuloinaknak);
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void IsValidTanoraiCeluOsztalyCsoport(TanuloErtekelesCo tanuloErtekelesCo)
|
||||
{
|
||||
if (tanuloErtekelesCo.OsztalyCsoportId.IsEntityId())
|
||||
{
|
||||
bool nemTanoraiCeluCsoportokErtekelesiLehetosege = new SystemSettingsHelper(ConnectionType).GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.nem_tanorai_celu_csoportok_ertekelesi_lehetosege);
|
||||
bool isOsztalyCsoportNemTanoraiCeluCsoport = new OsztalyCsoportHelper(ConnectionType).IsOsztalyCsoportNemTanoraiCeluCsoport(tanuloErtekelesCo.OsztalyCsoportId.Value);
|
||||
|
||||
if (!nemTanoraiCeluCsoportokErtekelesiLehetosege && isOsztalyCsoportNemTanoraiCeluCsoport)
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.NemTanoraiCeluCsoporthozNemLehetErtekelestRogziteni);
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void IsValidTipusId(TanuloErtekelesCo tanuloErtekelesCo)
|
||||
{
|
||||
if (!tanuloErtekelesCo.TipusId.IsEntityId())
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesTipusanakMegadasaKotelezo);
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
|
||||
protected void IsValidDatum(TanuloErtekelesCo tanuloErtekelesCo)
|
||||
{
|
||||
DateTime datum = tanuloErtekelesCo.Datum;
|
||||
if (datum == default)
|
||||
{
|
||||
ErrorMessageList.Add(string.Format(CommonResource.Required, $"\"{TanuloErtekelesResource.BejegyzesDatuma}\""));
|
||||
IsValid = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (datum > DateTime.Today)
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.BejegyzesDatumaNemlehetKesobbiMintAMaiNap);
|
||||
IsValid = false;
|
||||
}
|
||||
|
||||
var isCsakNaplozasZarasa = new SystemSettingsHelper(ConnectionType).GetSystemSettingValue<NaplozarasErvenyessegiKoreEnum>(RendszerBeallitasTipusEnum.elektronikus_naplo_zarasanak_datuma_beallitas_ervenyesegi_kore) == NaplozarasErvenyessegiKoreEnum.CsakNaplozasZarasa;
|
||||
|
||||
if (!isCsakNaplozasZarasa && datum < new OrarendHelper(ConnectionType).GetNaplozarasDate(startDate: null))
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.BejegyzesDatumaNemLehetKorabbiMintAMegengedett);
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void IsValidSpecialisErtekelesOsztalyzatId(List<TanuloErtekelesCo> model, List<int> egyszerAdhatoErtekelesTipusIds, int tipusId)
|
||||
{
|
||||
foreach (TanuloErtekelesCo item in model)
|
||||
{
|
||||
if (item.SpecialisErtekelesOsztalyzatId.IsEntityId())
|
||||
{
|
||||
if (item.SpecialisErtekelesOsztalyzatId.Value == (int)SpecialisErtekelesOsztalyzatEnum.NemIrt &&
|
||||
egyszerAdhatoErtekelesTipusIds.Contains(tipusId))
|
||||
{
|
||||
ErrorMessageList.Add(string.Format(
|
||||
TanuloErtekelesResource.NemKaphatTipusuErtekelesOsztalyzatotAKovetkezoTanulonal,
|
||||
tipusId.GetDisplayName<ErtekelesTipusEnum>(ConnectionType.TanevId),
|
||||
item.SpecialisErtekelesOsztalyzatId.Value.GetDisplayName<SpecialisErtekelesOsztalyzatEnum>(ConnectionType.TanevId),
|
||||
item.TanuloSzuletesiNev));
|
||||
IsValid = false;
|
||||
}
|
||||
else if ((item.SpecialisErtekelesOsztalyzatId.Value == (int)SpecialisErtekelesOsztalyzatEnum.Dicseret ||
|
||||
item.SpecialisErtekelesOsztalyzatId.Value == (int)SpecialisErtekelesOsztalyzatEnum.Kituno ||
|
||||
item.SpecialisErtekelesOsztalyzatId.Value == (int)SpecialisErtekelesOsztalyzatEnum.Mentesitve) &&
|
||||
!egyszerAdhatoErtekelesTipusIds.Contains(tipusId))
|
||||
{
|
||||
ErrorMessageList.Add(string.Format(
|
||||
TanuloErtekelesResource.NemKaphatTipusuErtekelesOsztalyzatotAKovetkezoTanulonal,
|
||||
tipusId.GetDisplayName<ErtekelesTipusEnum>(ConnectionType.TanevId),
|
||||
item.SpecialisErtekelesOsztalyzatId.Value.GetDisplayName<SpecialisErtekelesOsztalyzatEnum>(ConnectionType.TanevId),
|
||||
item.TanuloSzuletesiNev));
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void IsValidErtekelesFajta(List<TanuloErtekelesCo> model)
|
||||
{
|
||||
bool isOsztalyzattalErtekelheto = false;
|
||||
bool isSzovegesenErtekelheto = false;
|
||||
bool isSzazalekosanErtekelheto = false;
|
||||
|
||||
if (model != null && model.Count > 0 && model[0].TantargyId.HasValue)
|
||||
{
|
||||
(isOsztalyzattalErtekelheto, isSzovegesenErtekelheto, isSzazalekosanErtekelheto) = new TantargyHelper(ConnectionType).GetErtekelesKorlatozasok(model[0].TantargyId.Value);
|
||||
}
|
||||
|
||||
foreach (TanuloErtekelesCo item in model)
|
||||
{
|
||||
bool hasErtekelesOsztalyzat = false;
|
||||
bool hasErtekelesSzoveges = false;
|
||||
bool hasErtekelesSzazalekos = false;
|
||||
|
||||
int? specialisErtekelesOsztalyzatId = item.SpecialisErtekelesOsztalyzatId;
|
||||
if (item.ErtekelesOsztalyzatId.IsEntityId() || specialisErtekelesOsztalyzatId.IsEntityId())
|
||||
{
|
||||
if (!isOsztalyzattalErtekelheto)
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesFajtajaNemLehetOsztalyzat);
|
||||
IsValid = false;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
hasErtekelesOsztalyzat = true;
|
||||
}
|
||||
|
||||
// NOTE: A Mentesitve és a NemIrt speciális osztályzat esetén szöveges értékelés jön létre osztályzat helyett, viszont az osztályzatok tabfülről jön,
|
||||
// így ezt nem vesszük szöveges értékelésnek validációkor. Emiatt nem is dobunk validációs hibát, mert olyan mintha osztályzat lenne.
|
||||
// Ezt az ErtekelesListSaveModel.cs-ben állítjuk ToCoList függvényben.
|
||||
if (!string.IsNullOrWhiteSpace(item.ErtekelesSzoveg) &&
|
||||
(!specialisErtekelesOsztalyzatId.IsEntityId() ||
|
||||
(specialisErtekelesOsztalyzatId.IsEntityId() &&
|
||||
specialisErtekelesOsztalyzatId != (int)SpecialisErtekelesOsztalyzatEnum.Mentesitve &&
|
||||
specialisErtekelesOsztalyzatId != (int)SpecialisErtekelesOsztalyzatEnum.NemIrt)))
|
||||
{
|
||||
if (!isSzovegesenErtekelheto)
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesFajtajaNemLehetSzoveges);
|
||||
IsValid = false;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
hasErtekelesSzoveges = true;
|
||||
}
|
||||
|
||||
if (item.ErtekelesSzazalek.HasValue)
|
||||
{
|
||||
if (!isSzazalekosanErtekelheto)
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesFajtajaNemLehetSzazalek);
|
||||
IsValid = false;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
hasErtekelesSzazalekos = true;
|
||||
}
|
||||
|
||||
if (!hasErtekelesOsztalyzat &&
|
||||
!hasErtekelesSzoveges &&
|
||||
!hasErtekelesSzazalekos)
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesFajtajaNemLehetNull);
|
||||
IsValid = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!CommonUtils.TernaryXor(
|
||||
hasErtekelesOsztalyzat,
|
||||
hasErtekelesSzoveges,
|
||||
hasErtekelesSzazalekos))
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesFajtajaNemLehetKulonbozo);
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void IsValidTantargyId(TanuloErtekelesCo tanuloErtekelesCo)
|
||||
{
|
||||
if (!tanuloErtekelesCo.TantargyId.IsEntityId())
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.TantargyKivalasztasaKotelezo);
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
|
||||
protected void IsValidErtekelesTema(TanuloErtekelesCo tanuloErtekelesCo)
|
||||
{
|
||||
string ertekelesTema = tanuloErtekelesCo.ErtekelesTema;
|
||||
if (!string.IsNullOrWhiteSpace(ertekelesTema))
|
||||
{
|
||||
if (ertekelesTema.Length > ErtekelesTemaMaxLength)
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesTemaTulHosszu);
|
||||
IsValid = false;
|
||||
}
|
||||
List<int> nemzetiDokumentumNyelvek = new SystemSettingsHelper(ConnectionType).GetSystemSettingValue<List<int>>(RendszerBeallitasTipusEnum.Nemzeti_Nyelvi_Dokumentum_Nyelvek);
|
||||
if (nemzetiDokumentumNyelvek.Any() && TanuloErtekelesLogicBase.NyelviesithetoTanuloErtekelesTipusIdList.Contains(tanuloErtekelesCo.TipusId))
|
||||
{
|
||||
if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.nemet))
|
||||
{
|
||||
string ertekelesTemaNemet = tanuloErtekelesCo.ErtekelesTemaNemet;
|
||||
if (!string.IsNullOrWhiteSpace(ertekelesTemaNemet) && ertekelesTemaNemet.Length > ErtekelesTemaMaxLength)
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesTemaNemetTulHosszu);
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.horvat))
|
||||
{
|
||||
string ertekelesTemaHorvat = tanuloErtekelesCo.ErtekelesTemaHorvat;
|
||||
if (!string.IsNullOrWhiteSpace(ertekelesTemaHorvat) && ertekelesTemaHorvat.Length > ErtekelesTemaMaxLength)
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesTemaHorvatTulHosszu);
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.roman))
|
||||
{
|
||||
string ertekelesTemaRoman = tanuloErtekelesCo.ErtekelesTemaRoman;
|
||||
if (!string.IsNullOrWhiteSpace(ertekelesTemaRoman) && ertekelesTemaRoman.Length > ErtekelesTemaMaxLength)
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesTemaRomanTulHosszu);
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.szerb))
|
||||
{
|
||||
string ertekelesTemaSzerb = tanuloErtekelesCo.ErtekelesTemaSzerb;
|
||||
if (!string.IsNullOrWhiteSpace(ertekelesTemaSzerb) && ertekelesTemaSzerb.Length > ErtekelesTemaMaxLength)
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesTemaSzerbTulHosszu);
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void IsValidMagatartasSzorgalomFajta(List<TanuloErtekelesCo> model)
|
||||
{
|
||||
bool hasMagatartasSzorgalomOsztalyzat = false;
|
||||
bool hasMagatartasSzorgalomSzoveges = false;
|
||||
bool hasMagatartasSzorgalomErtek = false;
|
||||
|
||||
foreach (TanuloErtekelesCo item in model)
|
||||
{
|
||||
if (item.MagatartasOsztalyzatId.IsEntityId() || item.SzorgalomOsztalyzatId.IsEntityId())
|
||||
{
|
||||
hasMagatartasSzorgalomOsztalyzat = true;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(item.MagatartasSzoveg) || !string.IsNullOrWhiteSpace(item.SzorgalomSzoveg))
|
||||
{
|
||||
hasMagatartasSzorgalomSzoveges = true;
|
||||
}
|
||||
|
||||
if (item.MagatartasErtekId.IsEntityId() || item.SzorgalomErtekId.IsEntityId())
|
||||
{
|
||||
hasMagatartasSzorgalomErtek = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!hasMagatartasSzorgalomOsztalyzat && !hasMagatartasSzorgalomSzoveges && !hasMagatartasSzorgalomErtek)
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.MagatartasSzorgalomFajtajaNemLehetNull);
|
||||
IsValid = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!CommonUtils.TernaryXor(
|
||||
hasMagatartasSzorgalomOsztalyzat,
|
||||
hasMagatartasSzorgalomSzoveges,
|
||||
hasMagatartasSzorgalomErtek))
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.MagatartasSzorgalomFajtajaNemLehetKulonbozo);
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void IsValidDatumIsTanitasiNap(TanuloErtekelesCo tanuloErtekelesCo)
|
||||
{
|
||||
DateTime datum = tanuloErtekelesCo.Datum;
|
||||
int? osztalyCsoportId = tanuloErtekelesCo.OsztalyCsoportId;
|
||||
|
||||
if (!IsTanitasiNap(datum, osztalyCsoportId))
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.CsakTanitasiNapraVehetoFelErtekeles);
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
|
||||
protected void IsValidEgyszerAdhatoTanuloErtekeles(TanuloErtekelesCo tanuloErtekelesCo, List<TanuloErtekelesCo> tanuloErtekelesCoList, List<int> egyszerAdhatoErtekelesTipusIds)
|
||||
{
|
||||
int tipusId = tanuloErtekelesCo.TipusId;
|
||||
int? tantargyId = tanuloErtekelesCo.TantargyId;
|
||||
DateTime datum = tanuloErtekelesCo.Datum;
|
||||
int feladatKategoriaId = new OsztalyCsoportHelper(ConnectionType).GetOsztalyCsoportFeladatKategoria(tanuloErtekelesCo.OsztalyCsoportId.Value);
|
||||
|
||||
if (egyszerAdhatoErtekelesTipusIds.Contains(tipusId))
|
||||
{
|
||||
var helper = new TanuloErtekelesHelper(ConnectionType);
|
||||
Dictionary<int, int?> tanuloErtekelesDictionary = tanuloErtekelesCoList.Select(x => new { x.TanuloId, x.Id }).ToDictionary(x => x.TanuloId, x => x.Id);
|
||||
if (helper.CheckTanuloListEgyszerAdhatoTanuloErtekelesValidation(tanuloErtekelesDictionary, tipusId, tantargyId, datum, feladatKategoriaId))
|
||||
{
|
||||
var message = string.Format(TanuloErtekelesResource.AzErtekelesTipusbolNemLehetTobbATanevben, tipusId.GetDisplayName<ErtekelesTipusEnum>(ConnectionType.TanevId));
|
||||
if (!ErrorMessageList.Contains(message))
|
||||
{
|
||||
ErrorMessageList.Add(message);
|
||||
}
|
||||
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void IsValidErtekelesModId(TanuloErtekelesCo tanuloErtekelesCo)
|
||||
{
|
||||
int tipusId = tanuloErtekelesCo.TipusId;
|
||||
int? ertekelesModId = tanuloErtekelesCo.ErtekelesModId;
|
||||
|
||||
if (tipusId == (int)ErtekelesTipusEnum.evkozi_jegy_ertekeles)
|
||||
{
|
||||
if (!ertekelesModId.IsEntityId())
|
||||
{
|
||||
ErrorMessageList.Add(string.Format(CommonResource.Required, $"\"{TanuloErtekelesResource.ErtekelesModja}\""));
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ertekelesModId.IsEntityId())
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesModjaCsakEvkozinélTolthetoKi);
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void IsValidUtolsoTanitasiNapUtanErtekeles(TanuloErtekelesCo tanuloErtekelesCo)
|
||||
{
|
||||
var tanevCo = new TanevHelper(ConnectionType).GetTanevInfo();
|
||||
DateTime datum = tanuloErtekelesCo.Datum;
|
||||
int tipusId = tanuloErtekelesCo.TipusId;
|
||||
int? osztalyCsoportId = tanuloErtekelesCo.OsztalyCsoportId;
|
||||
|
||||
if (tanevCo.UtolsoTanitasiNap < datum)
|
||||
{
|
||||
List<TanevrendOsztalycsoportCO> osztalyTanevrendjei = new TanevrendHelper(ConnectionType).GetOsztalycsoportTanevrendje(datum, osztalyCsoportId ?? 0);
|
||||
if (osztalyTanevrendjei.All(x => x.Naptipus != (int)NapTipusEnum.RendkivuliTanitasiNap))
|
||||
{
|
||||
if (tipusId == (int)ErtekelesTipusEnum.na || tipusId == (int)ErtekelesTipusEnum.evkozi_jegy_ertekeles)
|
||||
{
|
||||
ErrorMessageList.Add(string.Format(
|
||||
TanuloErtekelesResource.ErtekelesUtolsoTanitasiNapUtanValidacio,
|
||||
tanevCo.UtolsoTanitasiNap.ToString(Constants.ToStringPattern.HungarianDate),
|
||||
tipusId.GetDisplayName<ErtekelesTipusEnum>(ConnectionType.TanevId)));
|
||||
IsValid = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (osztalyTanevrendjei.All(x => x.Naptipus != (int)NapTipusEnum.vizsganap))
|
||||
{
|
||||
ErrorMessageList.Add(string.Format(TanuloErtekelesResource.ErtekelesUtolsoTanitasiNapUtanValidacioEgyszerAdhato,
|
||||
tanevCo.UtolsoTanitasiNap.ToString(Constants.ToStringPattern.HungarianDate),
|
||||
tipusId.GetDisplayName<ErtekelesTipusEnum>(ConnectionType.TanevId),
|
||||
NapTipusEnum.RendkivuliTanitasiNap.GetDisplayName(ConnectionType.TanevId),
|
||||
NapTipusEnum.vizsganap.GetDisplayName(ConnectionType.TanevId)));
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void IsValidTanuloMentesseg(TanuloErtekelesCo tanuloErtekelesCo, DataSet tanuloMentessegValidationDataSet)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(tanuloErtekelesCo.ErtekelesSzoveg))
|
||||
{
|
||||
if (tanuloErtekelesCo.ErtekelesSzoveg.ReplaceMultipleSpacesAndTrim()?.ToLower() != TanuloErtekelesResource.Mentesitve.ToLower() ||
|
||||
tanuloErtekelesCo.ErtekelesSzovegRovidNev.ReplaceMultipleSpacesAndTrim()?.ToLower() != TanuloErtekelesResource.MentesitveRovidNev.ToLower())
|
||||
{
|
||||
foreach (var tanuloMentessegValidationDataRow in tanuloMentessegValidationDataSet.Tables[0].AsEnumerable())
|
||||
{
|
||||
if (SDAConvert.ToInt32(tanuloMentessegValidationDataRow["ID"]) == tanuloErtekelesCo.TanuloId &&
|
||||
SDAConvert.ToBoolean(tanuloMentessegValidationDataRow["ErtkelesMentesseg_BOOL"]) &&
|
||||
!SDAConvert.ToBoolean(tanuloMentessegValidationDataRow["SzovegesenErtekelheto_BOOL"]))
|
||||
{
|
||||
ErrorMessageList.Add(string.Format(TanuloErtekelesResource.ValidateErtekelesSzovegesFelmentes, tanuloMentessegValidationDataRow["Nev"], tanuloErtekelesCo.Datum.ToShortDateString()));
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var tanuloMentessegValidationDataRow in tanuloMentessegValidationDataSet.Tables[0].AsEnumerable())
|
||||
{
|
||||
if (SDAConvert.ToInt32(tanuloMentessegValidationDataRow["ID"]) == tanuloErtekelesCo.TanuloId &&
|
||||
SDAConvert.ToBoolean(tanuloMentessegValidationDataRow["ErtkelesMentesseg_BOOL"]))
|
||||
{
|
||||
ErrorMessageList.Add(string.Format(TanuloErtekelesResource.ValidateErtekelesFelmentes, tanuloMentessegValidationDataRow["Nev"], tanuloErtekelesCo.Datum.ToShortDateString()));
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected bool IsValidTanuloOsztalyCsoportTagja(IDalHandler dalHandler, TanuloErtekelesCo tanuloErtekelesCo, OsztalyCsoportHelper osztalyCsoportHelper)
|
||||
{
|
||||
var isTanuloOsztalyCsoportTagja = osztalyCsoportHelper.IsTanuloOsztalyCsoportTagja(tanuloErtekelesCo.TanuloId, tanuloErtekelesCo.OsztalyCsoportId.Value, tanuloErtekelesCo.Datum);
|
||||
if (!isTanuloOsztalyCsoportTagja)
|
||||
{
|
||||
ITanulo tanulo = dalHandler.Tanulo().Get(tanuloErtekelesCo.TanuloId);
|
||||
ErrorMessageList.Add(string.Format(TanuloErtekelesResource.AdottNaponATanuloNemTagjaAzOsztalyCsoportnak, tanulo.SzuletesiNev));
|
||||
IsValid = false;
|
||||
}
|
||||
|
||||
return isTanuloOsztalyCsoportTagja;
|
||||
}
|
||||
|
||||
protected void IsValidErtekelesSzazalek(TanuloErtekelesCo model)
|
||||
{
|
||||
if (model.ErtekelesSzazalek.HasValue && (model.ErtekelesSzazalek < 0 || model.ErtekelesSzazalek > 100))
|
||||
{
|
||||
ErrorMessageList.Add(TanuloErtekelesResource.SzazalekosErtekNincsAMegengedettTartomanyban);
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
|
||||
protected void IsValidSzorgalomTargykategoriaErtekeles(TanuloErtekelesCo model, List<TantargyItemCo> tantargyCoList)
|
||||
{
|
||||
var tantargyCo = tantargyCoList.SingleOrDefault(x => x.Id == model.TantargyId);
|
||||
if (tantargyCo != null &&
|
||||
tantargyCo.TargykategoriaTipusId == (int)TargyKategoriaTipusEnum.Szorgalom &&
|
||||
model.ErtekelesOsztalyzatId == (int)OsztalyzatTipusEnum.elegtelen_1_)
|
||||
{
|
||||
ErrorMessageList.Add(string.IsNullOrWhiteSpace(model.TanuloSzuletesiNev) ?
|
||||
TanuloErtekelesResource.SzorgalomTargykategoriabaTartozoTantargybolNemAhatoElegtelenOsztalyzat :
|
||||
string.Format(TanuloErtekelesResource.TanulonakElegelenOsztalyzatotAdtakSzorgalomTargykategoriabaTartozoTantargybolNemAhatoElegtelenOsztalyzat, model.TanuloSzuletesiNev));
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
|
||||
protected void IsValidErtekelesSzoveg(TanuloErtekelesCo model)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(model.ErtekelesSzoveg) && (model.ErtekelesSzoveg.Length > Constants.MinMaxValues.MaxSzovegesErtekelesHossz))
|
||||
{
|
||||
ErrorMessageList.Add(string.Format(ErrorResource.ASzovegNemLehetHosszabbMint0Karakter, Constants.MinMaxValues.MaxSzovegesErtekelesHossz));
|
||||
IsValid = false;
|
||||
}
|
||||
List<int> nemzetiDokumentumNyelvek = new SystemSettingsHelper(ConnectionType).GetSystemSettingValue<List<int>>(RendszerBeallitasTipusEnum.Nemzeti_Nyelvi_Dokumentum_Nyelvek);
|
||||
if (nemzetiDokumentumNyelvek.Any() && TanuloErtekelesLogicBase.NyelviesithetoTanuloErtekelesTipusIdList.Contains(model.TipusId))
|
||||
{
|
||||
if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.nemet))
|
||||
{
|
||||
string ertekelesSzovegNemet = model.ErtekelesSzovegNemet;
|
||||
if (!string.IsNullOrWhiteSpace(ertekelesSzovegNemet) && ertekelesSzovegNemet.Length > Constants.MinMaxValues.MaxSzovegesErtekelesHossz)
|
||||
{
|
||||
ErrorMessageList.Add(string.Format(ErrorResource.ASzovegNemetNemLehetHosszabbMint0Karakter, Constants.MinMaxValues.MaxSzovegesErtekelesHossz));
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.horvat))
|
||||
{
|
||||
string ertekelesSzovegHorvat = model.ErtekelesSzovegHorvat;
|
||||
if (!string.IsNullOrWhiteSpace(ertekelesSzovegHorvat) && ertekelesSzovegHorvat.Length > Constants.MinMaxValues.MaxSzovegesErtekelesHossz)
|
||||
{
|
||||
ErrorMessageList.Add(string.Format(ErrorResource.ASzovegHorvatNemLehetHosszabbMint0Karakter, Constants.MinMaxValues.MaxSzovegesErtekelesHossz));
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.roman))
|
||||
{
|
||||
string ertekelesSzovegRoman = model.ErtekelesSzovegRoman;
|
||||
if (!string.IsNullOrWhiteSpace(ertekelesSzovegRoman) && ertekelesSzovegRoman.Length > Constants.MinMaxValues.MaxSzovegesErtekelesHossz)
|
||||
{
|
||||
ErrorMessageList.Add(string.Format(ErrorResource.ASzovegRomanNemLehetHosszabbMint0Karakter, Constants.MinMaxValues.MaxSzovegesErtekelesHossz));
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.szerb))
|
||||
{
|
||||
string ertekelesSzovegSzerb = model.ErtekelesSzovegSzerb;
|
||||
if (!string.IsNullOrWhiteSpace(ertekelesSzovegSzerb) && ertekelesSzovegSzerb.Length > Constants.MinMaxValues.MaxSzovegesErtekelesHossz)
|
||||
{
|
||||
ErrorMessageList.Add(string.Format(ErrorResource.ASzovegSzerbNemLehetHosszabbMint0Karakter, Constants.MinMaxValues.MaxSzovegesErtekelesHossz));
|
||||
IsValid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private bool IsTanitasiNap(DateTime date, int? osztalycsoportId)
|
||||
{
|
||||
var sqlMinDate = SqlDateTime.MinValue.Value.Date;
|
||||
var sqlMaxDate = SqlDateTime.MaxValue.Value.Date;
|
||||
if (date < sqlMinDate || date > sqlMaxDate)
|
||||
{
|
||||
throw new OverflowException(string.Format(ErrorResource.ADatumNemLehetKisebbMintVagyNagyobbMint, sqlMinDate.ToShortDateString(), sqlMaxDate.ToShortDateString()));
|
||||
}
|
||||
|
||||
var osztalyTanevrendjei = new TanevrendHelper(ConnectionType).GetOsztalycsoportTanevrendje(date, osztalycsoportId ?? 0);
|
||||
if (osztalyTanevrendjei.Any(x => x.Naptipus == (int)NapTipusEnum.vizsganap))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool result = new TanevrendHelper(ConnectionType).IsTanitasiNap(date, osztalycsoportId);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,140 @@
|
|||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,97 @@
|
|||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue