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

1137 lines
53 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.BusinessLogic.Logic;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.ParameterClasses;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Resources;
using OfficeOpenXml;
namespace Kreta.BusinessLogic.Helpers
{
public class MulasztasHelper : LogicBase
{
public MulasztasHelper(IConnectionType connectionType) : base(connectionType) { }
public int GetOraTanuloId(int id)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MulasztasDal();
var entity = dal.Get(id);
return entity.OraTanuloiId;
});
}
public TanuloMulasztasInfoCo GetMulasztasById(int id)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MulasztasDal();
var entity = dal.Get(id);
var mulasztas = new TanuloMulasztasInfoCo
{
OraId = entity.TanitasiOrakId,
Datum = entity.TanitasiOrak.Datum,
};
if (entity.TanitasiOrak != null)
{
mulasztas.Oraszam = entity.TanitasiOrak.Oraszam;
if (entity.TanitasiOrak.TantargyId > 0)
{
mulasztas.TargyNev = entity.TanitasiOrak.Tantargy.Nev;
}
}
mulasztas.MulTipNev = entity.Tipus.GetDisplayName<MulasztasTipusEnum>(TanevId);
if (entity.KesesPercben != null)
{
mulasztas.KesIdo = entity.KesesPercben;
}
if (entity.Igazolt != null)
{
mulasztas.Igazolt = entity.Igazolt;
}
if (entity.IgazolasTipusa != null)
{
mulasztas.IgazolasTipusNev = entity.IgazolasTipusa.GetDisplayName<IgazolasTipusEnum>(TanevId);
}
mulasztas.Megjegyzes = entity.Megjegyzes;
mulasztas.TanuloNev = entity.OraTanuloi.NyomtatasiNev;
return mulasztas;
});
}
public DataSet GetHallgatoMulasztasai(MulasztasokCo co)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MulasztasDal(GridParameters);
var pco = co.ToPco(TanevId);
var ds = dal.GetHallgatoMulasztasaiDataSet(pco);
return ds;
});
}
public DataSet GetMulasztasList(MulasztasokCo keresoProfil, bool igazoltEsIgazolatlan = false, bool fromSearchPanel = false, int? csoportVezetoId = null)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
List<int> szervezetIdList = null;
if (keresoProfil.SzervezetId.IsEntityId())
{
szervezetIdList = h.SzervezetDal(GridParameters).GetLathatoSzervezetek(IntezmenyId, TanevId, keresoProfil.SzervezetId.Value, (int)SzervezetAdatokHalmazaEnum.SzervezetEsAlSzervezetek);
}
var result = h.MulasztasDal(GridParameters).GetMulasztasDataSet(keresoProfil.ToPco(TanevId, szervezetIdList), igazoltEsIgazolatlan, fromSearchPanel, csoportVezetoId);
AddColumnsToDataSet(h, result, true, true, !fromSearchPanel);
return result;
});
}
public List<MulasztasItemCo> GetMulasztasokTanuloDetailGridItemCoList(MulasztasokCo keresoProfil, bool igazoltEsIgazolatlan = false, bool fromSearchPanel = false, int? csoportVezetoId = null)
{
var ds = GetMulasztasList(keresoProfil, igazoltEsIgazolatlan, fromSearchPanel, csoportVezetoId);
var result = new List<MulasztasItemCo>();
foreach (DataRow dataRow in ds.Tables[0].Rows)
{
var item = new MulasztasItemCo(dataRow);
result.Add(item);
}
return result;
}
public DataSet GetMulasztasokDatumNezetDetailGrid(DateTime mulasztasDatuma, int osztalyCsoportId, bool isCsoportVezeto)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MulasztasDal(GridParameters);
var ds = dal.GetMulasztasokDatumNezetDetailGrid(mulasztasDatuma, osztalyCsoportId, isCsoportVezeto);
AddColumnsToDataSet(h, ds, true, false, false);
return ds;
});
}
private void AddColumnsToDataSet(IDalHandler h, DataSet ds, bool szuletesiIdoFormattedColumn, bool datumFormatted, bool isMulasztasKezelheto)
{
var igazolasNaplozarasDatuma = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h)).GetIgazolasokNaplozarasDatuma();
var dt = ds.Tables[0];
if (szuletesiIdoFormattedColumn)
{
dt.Columns.Add("SzuletesiIdoFormatted");
}
if (datumFormatted)
{
dt.Columns.Add("DatumFormatted");
}
if (isMulasztasKezelheto)
{
dt.Columns.Add("IsMulasztasKezelheto", typeof(bool));
}
var rows = dt.Rows.Cast<DataRow>().ToList();
foreach (var row in rows)
{
if (szuletesiIdoFormattedColumn)
{
row["SzuletesiIdoFormatted"] = SDAConvert.ToDateTime(row["SzuletesiIdo"]).ToShortDateString();
}
if (datumFormatted)
{
row["DatumFormatted"] = SDAConvert.ToDateTime(row["Datum"]).ToShortDateString();
}
if (isMulasztasKezelheto)
{
row["IsMulasztasKezelheto"] = row.Field<DateTime>("Datum") > igazolasNaplozarasDatuma;
}
}
}
public MulasztasNotificatonCo SaveOrUpdateMulasztas(MulasztasokCo co)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var (mulasztas, needJuttatasUpdate) = ConvertCoToEntity(h, co, true);
SaveOrUpdateMulasztas(h, co, mulasztas);
if ((mulasztas.Intezmeny.IntezmenyAdatok.SingleOrDefault(x => !x.Torolt && x.TanevId == mulasztas.TanevId)?.IsSzakkepzoJuttatas ?? false) && needJuttatasUpdate)
{
var dal = h.JuttatasDAL();
dal.UpdateTanulokSzakkepzesiJuttatasok(TanevId, FelhasznaloId, (int)JuttatasTipusEnum.szakkepzesi_juttatas, tanuloId: co.TanuloId);
dal.UpdateTanulokSzakkepzesiJuttatasok(TanevId, FelhasznaloId, (int)JuttatasTipusEnum.apaczaiosztondij, tanuloId: co.TanuloId);
}
return new MulasztasNotificatonCo(mulasztas);
});
}
public MulasztasNotificatonCo SaveOrUpdateNaplonezetMulasztas(MulasztasokCo co)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var (mulasztas, needJuttatasUpdate) = ConvertNaploNezetCoToEntity(h, co);
if (mulasztas.TanitasiOrak.Torolt)
{
throw new ApplicationException(string.Format(HianyzasResource.MulasztasRogziteseNemLehetsegesMertToroltekANaplozast, mulasztas.TanitasiOrak.Datum.ToString(Constants.ToStringPattern.HungarianDateWithSpaces), mulasztas.TanitasiOrak.Oraszam));
}
SaveOrUpdateMulasztas(h, co, mulasztas);
if ((mulasztas.Intezmeny.IntezmenyAdatok.SingleOrDefault(x => !x.Torolt && x.TanevId == mulasztas.TanevId)?.IsSzakkepzoJuttatas ?? false) && needJuttatasUpdate)
{
var dal = h.JuttatasDAL();
dal.UpdateTanulokSzakkepzesiJuttatasok(mulasztas.TanevId, FelhasznaloId, (int)JuttatasTipusEnum.szakkepzesi_juttatas, tanuloId: co.TanuloId);
dal.UpdateTanulokSzakkepzesiJuttatasok(mulasztas.TanevId, FelhasznaloId, (int)JuttatasTipusEnum.apaczaiosztondij, tanuloId: co.TanuloId);
}
return new MulasztasNotificatonCo(mulasztas);
});
}
private static void SaveOrUpdateMulasztas(IDalHandler h, MulasztasokCo co, ITanuloMulasztas mulasztas)
{
var dal = h.MulasztasDal();
if (co.ID.HasValue)
{
if (mulasztas.Tipus == (int)MulasztasTipusEnum.jelenlet)
{
dal.Delete(mulasztas);
}
else
{
if (!(mulasztas.Tipus == (int)MulasztasTipusEnum.keses || mulasztas.Tipus == (int)MulasztasTipusEnum.potlas))
{
mulasztas.KesesPercben = null;
}
mulasztas.Megjegyzes = co.Megjegyzes;
dal.FullUpdate(mulasztas);
}
}
else if (mulasztas.Tipus != (int)MulasztasTipusEnum.jelenlet)
{
dal.Insert(mulasztas);
}
}
public bool VaneMarIgazolt(int tipusId, int tanuloId, int oraId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MulasztasDal();
return dal.VaneMarIgazolt(tipusId, tanuloId, oraId);
});
}
internal (ITanuloMulasztas mulasztas, bool needJuttatasUpdate) ConvertCoToEntity(IDalHandler h, MulasztasokCo co, bool isMulasztasKezeles = false)
{
var dal = h.MulasztasDal();
var mulasztas = dal.Get();
var needJuttatasUpdate = false;
if (isMulasztasKezeles)
{
mulasztas = dal.Get(co.ID.Value);
needJuttatasUpdate = (mulasztas.Igazolt != co.Igazolt) && (co.Igazolt.HasValue && !co.Igazolt.Value);
mulasztas.Igazolt = co.Igazolt;
mulasztas.IgazolasTipusa = co.Igazolt.HasValue && co.Igazolt.Value && co.IgazolasTipus.HasValue && co.IgazolasTipus.Value > 0 ? (int?)co.IgazolasTipus.Value : null;
if (!string.IsNullOrWhiteSpace(co.Megjegyzes))
{
mulasztas.Megjegyzes = co.Megjegyzes;
}
}
else
{
if (co.ID.HasValue)
{
mulasztas = dal.Get(co.ID.Value);
}
else
{
// új
mulasztas.OraTanuloiId = co.TanuloId.Value;
if (co.OraId.HasValue)
{
mulasztas.TanitasiOrakId = co.OraId.Value;
}
}
if (co.MulTip.HasValue)
{
mulasztas.Tipus = co.MulTip.Value;
}
if (co.KesIdo.HasValue && co.KesIdo > 0)
{
mulasztas.KesesPercben = co.KesIdo.Value;
}
else
{
mulasztas.KesesPercben = null;
}
}
if (mulasztas.TanitasiOrak != null)
{
var igazolasDataRow = new IgazolasHelper(new DalHandlerConnectionType(ConnectionType, h)).GetIgazolasByTanuloId(co.TanuloId.Value).Tables[0].Rows.Cast<DataRow>().FirstOrDefault(row => SDAConvert.ToDateTime(row["Kezdete"]).Value.Date <= mulasztas.TanitasiOrak.Datum.Date && SDAConvert.ToDateTime(row["Vege"]).Value.Date >= mulasztas.TanitasiOrak.Datum.Date);
if (igazolasDataRow != null && (mulasztas.Tipus == (int)MulasztasTipusEnum.hianyzas || mulasztas.Tipus == (int)MulasztasTipusEnum.keses))
{
mulasztas.Igazolt = true;
mulasztas.IgazolasTipusa = SDAConvert.ToInt32(igazolasDataRow["IgazolasTipusa"]);
}
}
return (mulasztas, needJuttatasUpdate);
}
private static (ITanuloMulasztas mulasztas, bool needJuttatasUpdate) ConvertNaploNezetCoToEntity(IDalHandler h, MulasztasokCo co)
{
var dal = h.MulasztasDal();
var mulasztas = dal.Get();
if (co.ID.HasValue)
{
mulasztas = dal.Get(co.ID.Value);
}
mulasztas.OraTanuloiId = co.TanuloId.Value;
if (co.OraId.HasValue)
{
mulasztas.TanitasiOrakId = co.OraId.Value;
}
var needJuttatasUpdate = co.MulTip != mulasztas.Tipus && mulasztas.Igazolt.HasValue && !mulasztas.Igazolt.Value;
if (co.MulTip.HasValue)
{
mulasztas.Tipus = co.MulTip.Value;
}
needJuttatasUpdate = needJuttatasUpdate | (mulasztas.Igazolt != co.Igazolt) && co.Igazolt.HasValue;
mulasztas.Igazolt = co.Igazolt;
mulasztas.IgazolasTipusa = co.Igazolt.HasValue && co.Igazolt.Value && co.IgazolasTipus.HasValue && co.IgazolasTipus.Value > 0 ? (int?)co.IgazolasTipus.Value : null;
if (!string.IsNullOrWhiteSpace(co.Megjegyzes))
{
mulasztas.Megjegyzes = co.Megjegyzes;
}
return (mulasztas, needJuttatasUpdate);
}
public void DeleteMulasztasById(int mulId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MulasztasDal();
var mul = dal.Get(mulId);
var tanuloId = mul.OraTanuloiId;
var needJuttatasUpdate = (mul.Intezmeny.IntezmenyAdatok.SingleOrDefault(x => !x.Torolt && x.TanevId == mul.TanevId)?.IsSzakkepzoJuttatas ?? false) && mul.Igazolt.HasValue && !mul.Igazolt.Value;
dal.Delete(mulId);
if (needJuttatasUpdate)
{
var juttatasDal = h.JuttatasDAL();
juttatasDal.UpdateTanulokSzakkepzesiJuttatasok(mul.TanevId, FelhasznaloId, (int)JuttatasTipusEnum.szakkepzesi_juttatas, tanuloId);
juttatasDal.UpdateTanulokSzakkepzesiJuttatasok(mul.TanevId, FelhasznaloId, (int)JuttatasTipusEnum.apaczaiosztondij, tanuloId);
}
});
}
public DataSet GetTanuloMulasztasai(int tanuloId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MulasztasDal(GridParameters);
return dal.GetTanuloMulasztasai(tanuloId);
});
}
public TanoraMulasztasaiCO GetTanoraMulasztasai(int? tanoraId)
{
if (!tanoraId.HasValue || tanoraId < 1)
{
return new TanoraMulasztasaiCO();
}
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.TanitasiOra();
var entity = dal.Get(tanoraId.Value);
var result = new TanoraMulasztasaiCO();
foreach (var item in entity.OraTanuloi.Where(a => !a.Torolt))
{
result.Add(new TanoraMulasztasCO { MulasztasId = item.ID, TanuloId = item.OraTanuloiId });
}
return result;
});
}
public List<int> GetTanuloIgazolatlanMulasztasIdoszakban(int tanuloId, DateTime kezdete, DateTime vege)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MulasztasDal(GridParameters);
var ds = dal.GetTanuloIgazolatlanMulasztasIdoszakban(tanuloId, kezdete, vege);
// Use GetIdList extension here
var list = ds.Tables[0].AsEnumerable()
.Select(r => r.Field<int>("ID"))
.ToList();
return list;
});
}
public List<int> GetTanuloIgazoltMulasztasIdoszakban(int tanuloId, DateTime kezdete, DateTime vege, int tipus)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MulasztasDal(GridParameters);
var ds = dal.GetTanuloIgazoltMulasztasIdoszakban(tanuloId, kezdete, vege, tipus);
var list = ds.Tables[0].AsEnumerable()
.Select(r => r.Field<int>("ID"))
.ToList();
return list;
});
}
/// INFO @DevKornel: Mobil használja
public List<int> ListParhuzamosOranNaplozottMulasztasTanuloId(DateTime kezdete, DateTime vege, int tanoraId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MulasztasDal();
var ds = dal.GetParhuzamosOraNaplozottMulasztasTanuloId(kezdete, vege, tanoraId);
var list = ds.Tables[0].AsEnumerable()
.Select(r => r.Field<int>("TanuloId"))
.ToList();
return list;
});
}
public string GetTanuloTanoraiMulasztasa(int tanuloId, int oraId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MulasztasDal(GridParameters);
var co = new MulasztasokCo { TanuloId = tanuloId, OraId = oraId };
var ds = dal.GetMulasztasDataSet(co.ToPco(TanevId));
if (ds.Tables[0].Rows.Count > 0)
{
var row = ds.Tables[0].Rows[0];
if (row["MulTip"] is int mulasztasTipus)
{
if (mulasztasTipus == (int)MulasztasTipusEnum.keses || mulasztasTipus == (int)MulasztasTipusEnum.potlas)
{
var igazolt = row["IgazolasTipus_DNAME"].ToString();
if (string.IsNullOrWhiteSpace(igazolt))
{
return $"{row["MulTip_DNAME"]} ({row["KesesPerc"]})";
}
return $"{row["MulTip_DNAME"]} ({row["KesesPerc"]}) ({igazolt})";
}
if (mulasztasTipus == (int)MulasztasTipusEnum.hianyzas)
{
var igazolt = row["IgazolasTipus_DNAME"].ToString();
if (string.IsNullOrWhiteSpace(igazolt))
{
return row["MulTip_DNAME"].ToString();
}
return $"{row["MulTip_DNAME"]} ({igazolt})";
}
}
return string.Empty;
}
return string.Empty;
});
}
public DataSet GetDatumNezetDataByOsztalyCsoportId(int osztalyCsoportId, bool isCsoportVezeto)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MulasztasDal(GridParameters);
return dal.GetDatumNezetDataByOsztalyCsoportId(osztalyCsoportId, IntezmenyId, TanevId, isCsoportVezeto);
});
}
public DataSet GetTanulokMulasztasaiKesesei(int? osztalyCsoportId = null, int? tanuloId = null, bool isCsoportVezeto = false, int? szervezetTipusId = null)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MulasztasDal(GridParameters);
var ds = dal.GetTanulokMulasztasaiKesesei(IntezmenyId, TanevId, osztalyCsoportId, tanuloId, isCsoportVezeto, szervezetTipusId);
var dt = ds.Tables[0];
//Számított oszlopok hozzáadása a táblához
dt.Columns.Add(new DataColumn("TanoraiHianyzasOsszes", typeof(string)));
dt.Columns.Add(new DataColumn("TanoranKivuliHianyzasOsszes", typeof(string)));
dt.Columns.Add(new DataColumn("TanoraiKesesOsszes", typeof(string)));
dt.Columns.Add(new DataColumn("TanoraiKesesIgazolando", typeof(string)));
dt.Columns.Add(new DataColumn("TanoraiKesesIgazolt", typeof(string)));
dt.Columns.Add(new DataColumn("TanoraiKesesIgazolatlan", typeof(string)));
dt.Columns.Add(new DataColumn("SzamitottKesesOsszes", typeof(string)));
//Számított / formázott oszlopok feltöltése
foreach (DataRow row in dt.Rows)
{
//Tanórai hiányzás összes
row["TanoraiHianyzasOsszes"] = row.Field<int>("TanoraiHianyzasIgazolando") + row.Field<int>("TanoraiHianyzasIgazolt") + row.Field<int>("TanoraiHianyzasIgazolatlan")
+ row.Field<int>("Szabadsag") + row.Field<int>("Tappenz") + row.Field<int>("BetegSzabadsag");
//Tanórán kívüli hiányzás összes
row["TanoranKivuliHianyzasOsszes"] = row.Field<int>("TanoranKivuliHianyzasIgazolt") + row.Field<int>("TanoranKivuliHianyzasIgazolando") + row.Field<int>("TanoranKivuliHianyzasIgazolatlan");
//Tanórai késések száma (perc)
row["TanoraiKesesOsszes"] = row.Field<int>("TanoraiKesesDarabszamIgazolt") + row.Field<int>("TanoraiKesesDarabszamIgazolatlan") + row.Field<int>("TanoraiKesesDarabszamIgazolando")
+ " (" + (row.Field<int>("TanoraiKesesIgazolandoPerc") + row.Field<int>("TanoraiKesesIgazoltPerc") + +row.Field<int>("TanoraiKesesIgazolatlanPerc")) + ")";
row["TanoraiKesesIgazolando"] = row.Field<int>("TanoraiKesesDarabszamIgazolando") + " (" + row.Field<int?>("TanoraiKesesIgazolandoPerc") + ")";
row["TanoraiKesesIgazolt"] = row.Field<int>("TanoraiKesesDarabszamIgazolt") + " (" + row.Field<int>("TanoraiKesesIgazoltPerc") + ")";
row["TanoraiKesesIgazolatlan"] = row.Field<int>("TanoraiKesesDarabszamIgazolatlan") + " (" + row.Field<int?>("TanoraiKesesIgazolatlanPerc") + ")";
//Számított késések összes
row["SzamitottKesesOsszes"] = row.Field<int>("SzamitottKesesIgazolando") + row.Field<int>("SzamitottKesesIgazolt") + row.Field<int>("SzamitottKesesIgazolatlan");
}
AddColumnsToDataSet(h, ds, true, false, false);
return ds;
});
}
public DataSet GetTanuloMulasztasaiGrid(int tanuloId, int aktualisTanevId, bool igazolandok, bool? isTanoraiCelu, int? csoportVezetoId, int osztalyCsoportId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MulasztasDal(GridParameters);
var pco = new MulasztasKeresesePCO
{
TanuloId = tanuloId,
TanevId = aktualisTanevId,
IsTanoraiCelu = isTanoraiCelu
};
return dal.GetTanuloMulasztasaiGrid(pco, igazolandok, csoportVezetoId, osztalyCsoportId);
});
}
public DataSet GetTanuloMulasztasaiDetailGrid(MulasztasokCo keresoProfil, bool igazolando, bool? isTanoraiCelu, int? csoportVezetoId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MulasztasDal(GridParameters);
var pco = keresoProfil.ToPco(TanevId);
pco.IsTanoraiCelu = isTanoraiCelu;
return dal.GetTanuloMulasztasaiDetailGrid(pco, igazolando, csoportVezetoId);
});
}
public DataSet GetMulasztasokNaploNezetGrid(int osztalyCsoportId, DateTime datum, bool isCsoportVezeto, int? szervezetTipusId = null)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MulasztasDal();
var naploNezetAdatok = dal.GetMulasztasokNaploNezetData(TanevId, IntezmenyId, osztalyCsoportId, datum, isCsoportVezeto, szervezetTipusId);
var naplonezetGridData = new DataSet();
var dt = new DataTable();
dt.Columns.Add(new DataColumn("ID", typeof(int)));
dt.Columns.Add(new DataColumn("TanuloId", typeof(int)));
dt.Columns.Add(new DataColumn("TanuloNev", typeof(string)));
dt.Columns.Add(new DataColumn("OsztalyNev", typeof(string)));
dt.Columns.Add(new DataColumn("AnyjaNeve", typeof(string)));
dt.Columns.Add(new DataColumn("SzuletesiIdo", typeof(DateTime)));
var jelenletTipus = (int)MulasztasTipusEnum.jelenlet;
for (var i = Constants.Mulasztas.OraSorszamMinValue; i <= Constants.Mulasztas.OraSorszamMaxValue; i++)
{
string oraSorszamString;
if (i < 0)
{
oraSorszamString = "Minusz" + Math.Abs(i);
}
else
{
oraSorszamString = i.ToString();
}
var isMegtartottColumn = new DataColumn("Ora" + oraSorszamString + "IsMegtartott", typeof(bool));
{
isMegtartottColumn.DefaultValue = false;
}
dt.Columns.Add(isMegtartottColumn);
var nevColumn = new DataColumn("Ora" + oraSorszamString + "Nev")
{
AllowDBNull = true
};
dt.Columns.Add(nevColumn);
dt.Columns.Add(new DataColumn("Ora" + oraSorszamString + "OsztalyCsoportNev", typeof(string)));
dt.Columns.Add(new DataColumn("Ora" + oraSorszamString + "TantargyNev", typeof(string)));
dt.Columns.Add(new DataColumn("Ora" + oraSorszamString + "TanarNev", typeof(string)));
dt.Columns.Add(new DataColumn("Ora" + oraSorszamString + "TanitasiOraId", typeof(int)));
var isHiddenColumn = new DataColumn("Ora" + oraSorszamString + "IsHiddenColumn")
{
DefaultValue = true
};
dt.Columns.Add(isHiddenColumn);
var mulasztasIdColumn = new DataColumn("Ora" + oraSorszamString + "MulasztasId")
{
AllowDBNull = true
};
dt.Columns.Add(mulasztasIdColumn);
var mulasztasTipusColumn = new DataColumn("Ora" + oraSorszamString + "MulasztasTipus")
{
AllowDBNull = true
};
dt.Columns.Add(mulasztasTipusColumn);
var kesesPercbenColumn = new DataColumn("Ora" + oraSorszamString + "KesesPercben")
{
AllowDBNull = true
};
dt.Columns.Add(kesesPercbenColumn);
var isIgazolt = new DataColumn("Ora" + oraSorszamString + "IsIgazolt")
{
AllowDBNull = true
};
dt.Columns.Add(isIgazolt);
var igazolasTipus = new DataColumn("Ora" + oraSorszamString + "IgazolasTipus")
{
AllowDBNull = true
};
dt.Columns.Add(igazolasTipus);
dt.Columns.Add(new DataColumn("Ora" + oraSorszamString + "IgazolasTipusText", typeof(string)));
dt.Columns.Add(new DataColumn("Ora" + oraSorszamString + "Megjegyzes", typeof(string)));
}
for (var i = 1; i <= Constants.Mulasztas.FoglalkozasCount; i++)
{
var isMegtartottColumn = new DataColumn("Foglalkozas" + i + "IsMegtartott", typeof(bool));
{
isMegtartottColumn.DefaultValue = false;
}
dt.Columns.Add(isMegtartottColumn);
var nevColumn = new DataColumn("Foglalkozas" + i + "Nev")
{
AllowDBNull = true
};
dt.Columns.Add(nevColumn);
dt.Columns.Add(new DataColumn("Foglalkozas" + i + "OsztalyCsoportNev", typeof(string)));
dt.Columns.Add(new DataColumn("Foglalkozas" + i + "TantargyNev", typeof(string)));
dt.Columns.Add(new DataColumn("Foglalkozas" + i + "TanarNev", typeof(string)));
dt.Columns.Add(new DataColumn("Foglalkozas" + i + "TanitasiOraId", typeof(int)));
var isHiddenColumn = new DataColumn("Foglalkozas" + i + "IsHiddenColumn")
{
DefaultValue = true
};
dt.Columns.Add(isHiddenColumn);
var mulasztasIdColumn = new DataColumn("Foglalkozas" + i + "MulasztasId")
{
AllowDBNull = true
};
dt.Columns.Add(mulasztasIdColumn);
var mulasztasTipusColumn = new DataColumn("Foglalkozas" + i + "MulasztasTipus")
{
AllowDBNull = true
};
dt.Columns.Add(mulasztasTipusColumn);
var kesesPercbenColumn = new DataColumn("Foglalkozas" + i + "KesesPercben")
{
AllowDBNull = true
};
dt.Columns.Add(kesesPercbenColumn);
var isIgazolt = new DataColumn("Foglalkozas" + i + "IsIgazolt")
{
AllowDBNull = true
};
dt.Columns.Add(isIgazolt);
var igazolasTipus = new DataColumn("Foglalkozas" + i + "IgazolasTipus")
{
AllowDBNull = true
};
dt.Columns.Add(igazolasTipus);
dt.Columns.Add(new DataColumn("Foglalkozas" + i + "IgazolasTipusText", typeof(string)));
dt.Columns.Add(new DataColumn("Foglalkozas" + i + "Megjegyzes", typeof(string)));
}
foreach (DataColumn column in dt.Columns)
{
column.AllowDBNull = true;
}
naplonezetGridData.Tables.Add(dt);
var view = new DataView(naploNezetAdatok.Tables[0]);
var tanuloIdList = view.ToTable(true, "TanuloId").AsEnumerable().Select(p => SDAConvert.ToInt32(p["TanuloId"])).ToList();
var orderedFoglalkozasKezdeteList = naploNezetAdatok
.Tables[0]
.AsEnumerable()
.Where(r => SDAConvert.ToDateTime(r["OraKezdete"]) != null)
.GroupBy(x => SDAConvert.ToDateTime(x["OraKezdete"]))
.OrderBy(r => SDAConvert.ToDateTime(r.Key))
.Select(x => x.Key)
.OfType<DateTime>()
.ToList();
var foglalkozasColumnDictionary = new Dictionary<string, int>();
var foglalkozasColumnDictionaryIndex = 1;
foreach (var foglalkozasKezdete in orderedFoglalkozasKezdeteList)
{
var orakezdete = foglalkozasKezdete.ToString("HH:mm");
if (!foglalkozasColumnDictionary.ContainsKey(orakezdete))
{
foglalkozasColumnDictionary.Add(orakezdete, foglalkozasColumnDictionaryIndex);
foglalkozasColumnDictionaryIndex++;
}
}
var visibleColumnList = new List<string>();
foreach (var tanuloId in tanuloIdList)
{
var dr = naplonezetGridData.Tables[0].NewRow();
IEnumerable<DataRow> rows = naploNezetAdatok
.Tables[0]
.AsEnumerable()
.Where(r => SDAConvert.ToInt32(r["TanuloId"]) == tanuloId)
.ToList();
if (rows.Any())
{
var firstRow = rows.First();
dr.SetField("ID", tanuloId);
dr.SetField("TanuloId", tanuloId);
dr.SetField("TanuloNev", SDAConvert.ToString(firstRow["TanuloNev"]));
dr.SetField("OsztalyNev", SDAConvert.ToString(firstRow["OsztalyNev"]));
dr.SetField("AnyjaNeve", SDAConvert.ToString(firstRow["AnyjaNeve"]));
dr.SetField("SzuletesiIdo", SDAConvert.ToDateTime(firstRow["SzuletesiIdo"]));
}
IEnumerable<DataRow> oraRows = naploNezetAdatok
.Tables[0]
.AsEnumerable()
.Where(r => SDAConvert.ToInt32(r["TanuloId"]) == tanuloId && SDAConvert.ToNullableInt32(r["OraSorszam"]) != null)
.OrderBy(r => SDAConvert.ToNullableInt32(r["OraSorszam"]))
.ToList();
oraRows = oraRows
.GroupBy(x => SDAConvert.ToNullableInt32(x["OraSorszam"]))
//NOTE: Az alábbi feltételeket alapján jelenítjük meg a tanítási órát
// - Ahol már van mulasztás felvéve(MulasztasId.IsEntityId()) és a mulasztás típusa hiányzás vagy késés
// - Ha nincs, akkor az osztály órája(IsOsztalyOraja)
// - Ha nincs, akkor a tanórai célú csoport órája(IsTanoraiCelu)
// - Ha nincs, akkor a tanórai célúnak jelölt csoport órája(IsTanoraiCelunakJelolt)
// - Különben az első találatot(First())
.Select(x =>
x.FirstOrDefault(dataRow => SDAConvert.ToNullableInt32(dataRow["MulasztasId"]).IsEntityId() && (SDAConvert.ToNullableInt32(dataRow["MulasztasTipus"]) == (int)MulasztasTipusEnum.hianyzas || SDAConvert.ToNullableInt32(dataRow["MulasztasTipus"]) == (int)MulasztasTipusEnum.keses)) ??
x.FirstOrDefault(dataRow => SDAConvert.ToBoolean(dataRow["IsOsztalyOraja"])) ??
x.FirstOrDefault(dataRow => SDAConvert.ToBoolean(dataRow["IsTanoraiCelu"])) ??
x.FirstOrDefault(dataRow => SDAConvert.ToBoolean(dataRow["IsTanoraiCelunakJelolt"])) ??
x.First())
.ToList();
foreach (var oraRow in oraRows)
{
var oraColumnIndex = SDAConvert.ToNullableInt32(oraRow["OraSorszam"]);
string oraSorszamString;
if (oraColumnIndex < 0)
{
oraSorszamString = "Minusz" + Math.Abs(oraColumnIndex.Value);
}
else
{
//NOTE: A feljebb lévő Where miatt nem lehet null.
oraSorszamString = oraColumnIndex.Value.ToString();
}
dr.SetField("Ora" + oraSorszamString + "IsMegtartott", true);
dr.SetField("Ora" + oraSorszamString + "OsztalyCsoportNev", SDAConvert.ToString(oraRow["OsztalyCsoportNev"]));
dr.SetField("Ora" + oraSorszamString + "TantargyNev", SDAConvert.ToString(oraRow["TantargyNev"]));
dr.SetField("Ora" + oraSorszamString + "TanarNev", SDAConvert.ToString(oraRow["TanarNev"]));
dr.SetField("Ora" + oraSorszamString + "MulasztasId", SDAConvert.ToNullableInt32(oraRow["MulasztasId"]));
var mulasztasTipus = SDAConvert.ToNullableInt32(oraRow["MulasztasTipus"]) != null ? SDAConvert.ToNullableInt32(oraRow["MulasztasTipus"]) : jelenletTipus;
dr.SetField("Ora" + oraSorszamString + "MulasztasTipus", mulasztasTipus);
dr.SetField("Ora" + oraSorszamString + "KesesPercben", SDAConvert.ToNullableInt32(oraRow["KesesPercben"]));
dr.SetField("Ora" + oraSorszamString + "IsIgazolt", SDAConvert.ToNullableBoolean(oraRow["IsIgazolt_BOOL"]));
dr.SetField("Ora" + oraSorszamString + "IgazolasTipus", SDAConvert.ToNullableInt32(oraRow["IgazolasTipus"]));
dr.SetField("Ora" + oraSorszamString + "IgazolasTipusText", SDAConvert.ToString(oraRow["IgazolasTipus_DNAME"]));
dr.SetField("Ora" + oraSorszamString + "Megjegyzes", FormatMulasztasMegjegyzes(SDAConvert.ToString(oraRow["Megjegyzes"])));
dr.SetField("Ora" + oraSorszamString + "TanitasiOraId", SDAConvert.ToNullableInt32(oraRow["TanitasiOraId"]));
var isHiddenColumn = "Ora" + oraSorszamString + "IsHiddenColumn";
if (!visibleColumnList.Contains(isHiddenColumn))
{
visibleColumnList.Add(isHiddenColumn);
}
}
IEnumerable<DataRow> foglalkozasRows = naploNezetAdatok
.Tables[0]
.AsEnumerable()
.Where(r => SDAConvert.ToInt32(r["TanuloId"]) == tanuloId && SDAConvert.ToDateTime(r["OraKezdete"]) != null)
.OrderBy(r => SDAConvert.ToDateTime(r["OraKezdete"]))
.ToList();
foglalkozasRows = foglalkozasRows
.GroupBy(x => SDAConvert.ToDateTime(x["OraKezdete"]))
//NOTE: Az alábbi feltételeket alapján jelenítjük meg a tanítási órát
// - Ahol már van mulasztás felvéve(MulasztasId.IsEntityId()) és a mulasztás típusa hiányzás vagy késés
// - Ha nincs, akkor az osztály órája(IsOsztalyOraja)
// - Ha nincs, akkor a tanórai célú csoport órája(IsTanoraiCelu)
// - Ha nincs, akkor a tanórai célúnak jelölt csoport órája(IsTanoraiCelunakJelolt)
// - Különben az első találatot(First())
.Select(x =>
x.FirstOrDefault(dataRow => SDAConvert.ToNullableInt32(dataRow["MulasztasId"]).IsEntityId() && (SDAConvert.ToNullableInt32(dataRow["MulasztasTipus"]) == (int)MulasztasTipusEnum.hianyzas || SDAConvert.ToNullableInt32(dataRow["MulasztasTipus"]) == (int)MulasztasTipusEnum.keses)) ??
x.FirstOrDefault(dataRow => SDAConvert.ToBoolean(dataRow["IsOsztalyOraja"])) ??
x.FirstOrDefault(dataRow => SDAConvert.ToBoolean(dataRow["IsTanoraiCelu"])) ??
x.FirstOrDefault(dataRow => SDAConvert.ToBoolean(dataRow["IsTanoraiCelunakJelolt"])) ??
x.First())
.ToList();
foreach (var foglalkozasRow in foglalkozasRows)
{
var orakezdete = SDAConvert.ToDateTime(foglalkozasRow["OraKezdete"]).Value.ToString("HH:mm");
var foglalkozasColumnIndex = foglalkozasColumnDictionary[orakezdete];
dr.SetField("Foglalkozas" + foglalkozasColumnIndex + "IsMegtartott", true);
//NOTE: A feljebb lévő Where miatt nem lehet null.
dr.SetField("Foglalkozas" + foglalkozasColumnIndex + "OsztalyCsoportNev", SDAConvert.ToString(foglalkozasRow["OsztalyCsoportNev"]));
dr.SetField("Foglalkozas" + foglalkozasColumnIndex + "TantargyNev", SDAConvert.ToString(foglalkozasRow["TantargyNev"]));
dr.SetField("Foglalkozas" + foglalkozasColumnIndex + "TanarNev", SDAConvert.ToString(foglalkozasRow["TanarNev"]));
dr.SetField("Foglalkozas" + foglalkozasColumnIndex + "MulasztasId", SDAConvert.ToNullableInt32(foglalkozasRow["MulasztasId"]));
var mulasztasTipus = SDAConvert.ToNullableInt32(foglalkozasRow["MulasztasTipus"]) != null ? SDAConvert.ToNullableInt32(foglalkozasRow["MulasztasTipus"]) : jelenletTipus;
dr.SetField("Foglalkozas" + foglalkozasColumnIndex + "MulasztasTipus", mulasztasTipus);
dr.SetField("Foglalkozas" + foglalkozasColumnIndex + "KesesPercben", SDAConvert.ToNullableInt32(foglalkozasRow["KesesPercben"]));
dr.SetField("Foglalkozas" + foglalkozasColumnIndex + "IsIgazolt", SDAConvert.ToNullableBoolean(foglalkozasRow["IsIgazolt_BOOL"]));
dr.SetField("Foglalkozas" + foglalkozasColumnIndex + "IgazolasTipus", SDAConvert.ToNullableInt32(foglalkozasRow["IgazolasTipus"]));
dr.SetField("Foglalkozas" + foglalkozasColumnIndex + "IgazolasTipusText", SDAConvert.ToString(foglalkozasRow["IgazolasTipus_DNAME"]));
dr.SetField("Foglalkozas" + foglalkozasColumnIndex + "Megjegyzes", FormatMulasztasMegjegyzes(SDAConvert.ToString(foglalkozasRow["Megjegyzes"])));
dr.SetField("Foglalkozas" + foglalkozasColumnIndex + "TanitasiOraId", SDAConvert.ToNullableInt32(foglalkozasRow["TanitasiOraId"]));
var isHiddenColumn = "Foglalkozas" + foglalkozasColumnIndex + "IsHiddenColumn";
if (!visibleColumnList.Contains(isHiddenColumn))
{
visibleColumnList.Add(isHiddenColumn);
}
}
naplonezetGridData.Tables[0].Rows.Add(dr);
}
#region "Header helyett nulladik sor"
//NOTE: "Ideiglenesen mivel a grid headerbe nincs lehetőség az összes oszlopérték beállítására egyszerre, ezért bekerül egy nulladik sor, amivel állítani lehet..."
var editorRow = naplonezetGridData.Tables[0].NewRow();
editorRow["ID"] = 0;
editorRow["TanuloId"] = 0;
editorRow["TanuloNev"] = "";
naplonezetGridData.Tables[0].Rows.InsertAt(editorRow, 0);
#endregion "Header helyett nulladik sor"
foreach (var visibleColumn in visibleColumnList)
{
naplonezetGridData.Tables[0].Columns[visibleColumn].Expression = "False";
}
for (var i = Constants.Mulasztas.OraSorszamMinValue; i <= Constants.Mulasztas.OraSorszamMaxValue; i++)
{
string oraSorszamString;
if (i < 0)
{
oraSorszamString = "Minusz" + Math.Abs(i);
}
else
{
//NOTE: A feljebb lévő Where miatt nem lehet null.
oraSorszamString = i.ToString();
}
naplonezetGridData.Tables[0].Columns["Ora" + oraSorszamString + "Nev"].Expression = "'" + i + ". óra'";
}
foreach (var foglalkozasColumn in foglalkozasColumnDictionary)
{
naplonezetGridData.Tables[0].Columns["Foglalkozas" + foglalkozasColumn.Value + "Nev"].Expression = "'" + foglalkozasColumn.Key + "'";
}
AddColumnsToDataSet(h, naplonezetGridData, true, false, false);
return naplonezetGridData;
});
}
public QuintupleList<DateTime?, string, string, string, string> GetTanuloLegutobbiMulasztasai(int tanuloId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MulasztasDal(GridParameters);
var result = new QuintupleList<DateTime?, string, string, string, string>();
var mulasztasok = dal.GetTanuloLegutobbiMulasztasai(tanuloId).Tables[0].AsEnumerable();
foreach (var keses in mulasztasok.Where(r => (MulasztasTipusEnum)SDAConvert.ToInt32(r["C_TIPUS"]) == MulasztasTipusEnum.keses))
{
var oraSzamVagyKezdeteVege = string.IsNullOrWhiteSpace(SDAConvert.ToString(keses["C_ORASZAM"])) ? keses["OraKezdeteVege"] : keses["C_ORASZAM"];
result.Add(SDAConvert.ToDateTime(keses["C_DATUM"]), MulasztasTipusEnum.keses.GetDisplayName(TanevId), SDAConvert.ToDateTime(keses["C_DATUM"])?.ToString("dddd"), $"{oraSzamVagyKezdeteVege}. óra ({keses["C_NEV"]})", keses["ID"].ToString());
}
foreach (var grouping in mulasztasok.Where(r => (MulasztasTipusEnum)SDAConvert.ToInt32(r["C_TIPUS"]) == MulasztasTipusEnum.hianyzas).GroupBy(r => SDAConvert.ToDateTime(r["C_DATUM"])))
{
var first = grouping.First();
var count = grouping.Count();
var oraSzamVagyKezdeteVege = string.IsNullOrWhiteSpace(SDAConvert.ToString(first["C_ORASZAM"])) ? first["OraKezdeteVege"] : first["C_ORASZAM"];
result.Add(
grouping.Key,
MulasztasTipusEnum.hianyzas.GetDisplayName(TanevId),
grouping.Key?.ToString("dddd"),
count > 1 ?
$"{count} db tanóra" :
$"{oraSzamVagyKezdeteVege}. óra ({first["C_NEV"]})",
first["ID"].ToString());
}
return new QuintupleList<DateTime?, string, string, string, string>(result.OrderByDescending(r => r.Item1).Take(6).ToList());
});
}
#region Export
public MemoryStream GetTanulokTantargyaiEsPedagogusaiExcelExport(MulasztasokCo seachModel)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dataSet = h.Tanulo().GetTanulokMulasztasaiExcelExport(seachModel.ToPco(TanevId));
var dataTable = dataSet.Tables[0];
ExportLogic.TryCreateHeaderIfNotExist(dataTable);
var stream = new MemoryStream();
using (var excel = new ExcelPackage(stream))
{
var workSheet = excel.Workbook.Worksheets.Add(HianyzasResource.TanulokMulasztasai);
workSheet.Cells[1, 1].LoadFromDataTable(dataTable, true);
ExportLogic.SetHeaderStyles(workSheet.Cells[1, 1, 1, dataTable.Columns.Count]);
workSheet.Cells.AutoFitColumns();
excel.Save();
}
stream.Position = 0;
return stream;
});
}
public MemoryStream GetTanorakonNemJelenlevokExcelExport(MulasztasokCo seachModel)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dataSet = h.Tanulo().GetTanorakonNemJelenlevokExcelExport(seachModel.ToPco(TanevId));
var dataTable = dataSet.Tables[0];
ExportLogic.TryCreateHeaderIfNotExist(dataTable);
var stream = new MemoryStream();
using (var excel = new ExcelPackage(stream))
{
var workSheet = excel.Workbook.Worksheets.Add(HianyzasResource.TanorakonNemJelenlevok);
workSheet.Cells[1, 1].LoadFromDataTable(dataTable, true);
ExportLogic.SetHeaderStyles(workSheet.Cells[1, 1, 1, dataTable.Columns.Count]);
workSheet.Cells.AutoFitColumns();
excel.Save();
}
stream.Position = 0;
return stream;
});
}
public MemoryStream ExportTanuloKesesekHianyzasok(MulasztasokCo co)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MulasztasDal();
var pco = co.ToPco(TanevId);
var ds = dal.GetHallgatoMulasztasaiDataSet(pco);
var dt = ds.DataSetSort("MulasztasDatum", false).Tables[0];
var mulasztasKesesColumn = dt.Columns.Add("Mulasztas_Keses", typeof(string));
foreach (DataRow row in dt.Rows)
{
var mulasztasKesesResult = row.Field<string>("MulasztasTipus_DNAME");
var mulasztasTipus = row.Field<int>("MulasztasTipus");
if (mulasztasTipus == (int)MulasztasTipusEnum.keses || mulasztasTipus == (int)MulasztasTipusEnum.potlas)
{
var keses = row.Field<int>("Perc");
mulasztasKesesResult += $" ({keses} Perc)";
}
row.SetField(mulasztasKesesColumn, mulasztasKesesResult);
}
var stream = new MemoryStream();
using (var excel = new ExcelPackage(stream))
{
var workSheet = excel.Workbook.Worksheets.Add(HianyzasResource.KesesekHianyzasok);
(string nameFrom, string nameTo, Type type)[] exportColumns =
{
("MulasztasDatum", HianyzasResource.MulasztasDatuma, typeof(DateTime)),
("Oraszam", HianyzasResource.Ora, typeof(int)),
("Targy", HianyzasResource.Tantargy, typeof(string)),
("Tema", TantargyResource.Tema, typeof(string)),
("Mulasztas_Keses", HianyzasResource.MulasztasTipusa, typeof(string)),
("Igazolt_BNAME", HianyzasResource.IgazoltKerdojel, typeof(string)),
("TanoraiCeluMulasztas_BNAME", HianyzasResource.TanoraiCeluMulasztas, typeof(string)),
("IgazolasTipus_DNAME", HianyzasResource.IgazolasTipusa, typeof(string)),
("RogzitesDatum", HianyzasResource.RogzitesDatuma, typeof(DateTime))
};
ExportLogic.MapDataTable(dt, exportColumns, true);
ExportLogic.FormatDateFields(exportColumns, workSheet);
workSheet.Cells[1, 1].LoadFromDataTable(dt, true);
ExportLogic.SetHeaderStyles(workSheet.Cells[1, 1, 1, exportColumns.Length]);
workSheet.Cells.AutoFitColumns();
excel.Save();
}
stream.Position = 0;
return stream;
});
}
public List<MulasztasItemCo> GetMulasztasCoList(MulasztasokCo mulasztasok, bool fromSearchPanel)
{
var coList = new List<MulasztasItemCo>();
var ds = GetMulasztasList(mulasztasok, fromSearchPanel: fromSearchPanel);
foreach (var row in ds.Tables[0].AsEnumerable())
{
coList.Add(new MulasztasItemCo(row));
}
return coList;
}
#endregion
public List<TanitasiOraCo> ListTanitasiOraKezdeteVege(IEnumerable<int> tanitasiOraIdList)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var tanitasiOraDal = h.TanitasiOra();
var tanitasiOraKezdeteVegeDs = tanitasiOraDal.ListTanitasiOraKezdeteVege(tanitasiOraIdList);
var result = tanitasiOraKezdeteVegeDs.Tables[0].AsEnumerable().Select(r => new TanitasiOraCo
{
Id = r.Field<int>("Id"),
OraKezdete = r.Field<DateTime>("OraKezdete"),
OraVege = r.Field<DateTime>("OraVege"),
Oraszam = r.Field<int?>("Oraszam")
}).ToList();
return result;
});
}
public int? GetMulasztasId(int tanuloId, int tanitasiOraId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var mulasztasDal = h.MulasztasDal();
var mulasztasDataSet = mulasztasDal.GetMulasztasDataSet(new MulasztasKeresesePCO() { TanevId = TanevId, TanuloId = tanuloId, TanitasiOraId = tanitasiOraId }, true);
int? mulasztasId = null;
if (mulasztasDataSet.Tables[0].Rows.Count == 1)
{
mulasztasId = Convert.ToInt32(mulasztasDataSet.Tables[0].Rows[0][0]);
}
return mulasztasId;
});
}
public int GetTanuloMulasztasaiHianyzasMiattCount(int tanuloId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var mulasztasDal = h.MulasztasDal();
var mulasztasDataSet = mulasztasDal.GetTanuloMulasztasaiData(TanevId, tanuloId, (int)MulasztasTipusEnum.hianyzas, false);
return mulasztasDataSet.Tables.Count > 0 && mulasztasDataSet.Tables[0].Rows != null ? mulasztasDataSet.Tables[0].Rows.Count : 0;
});
}
private string FormatMulasztasMegjegyzes(string megjegyzes)
{
return megjegyzes?.Length > 30 ? $"{megjegyzes.Substring(0, 29)}…" : megjegyzes;
}
}
}