This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

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

View 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;
}
}
}

View 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;
//}
}
}
}

View 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"] = "-"; }
}
}
}

View file

@ -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;
}
}
}

View file

@ -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; }
}
}

View file

@ -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;
}
}
}

View file

@ -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;
}
}
}

View file

@ -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; }
}
}

View file

@ -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; }
}
}

View file

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

View file

@ -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; }
}
}

View file

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

View file

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

View 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;
}
}
}

View file

@ -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;
}
}
}

View file

@ -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,
}
}
}

View 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; }
}
}
}

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

View 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; }
}
}
}

View 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;
}
}
}

View file

@ -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; }
}
}

View 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("&amp;"))
{
text = text.Replace("&amp;", "&"); //NOTE: Replace-elni kell az "&amp;"-okat rekurzívan.
}
var result = text
.Replace("&lt;", "<") //NOTE: Replace-elni kell az "&lt;"-ket, ha valamiért a "<" encode-olva lenne.
.Replace("&gt;", ">") //NOTE: Replace-elni kell az "&gt;"-ket, ha valamiért a ">" encode-olva lenne.
.Replace("&nbsp;", "\u0020") //NOTE: Replace-elni kell az "&nbsp;"-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("&amp;"))
{
text = text.Replace("&amp;", "&"); //NOTE: Replace-elni kell az "&amp;"-okat rekurzívan.
}
var result = text
.Replace("&lt;", "<") //NOTE: Replace-elni kell az "&lt;"-ket, ha valamiért a "<" encode-olva lenne.
.Replace("&gt;", ">") //NOTE: Replace-elni kell az "&gt;"-ket, ha valamiért a ">" encode-olva lenne.
.Replace("&nbsp;", "\u0020") //NOTE: Replace-elni kell az "&nbsp;"-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);
}
}
}

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

View file

@ -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;
}
}
}

View file

@ -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;
}
}
}
}

View file

@ -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;
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -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;
}
}
}

View file

@ -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;
}
}
}
}

View file

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