using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using Kreta.BusinessLogic.HelperClasses; using Kreta.Core; using Kreta.Core.ConnectionType; using Kreta.DataAccessManual; using Kreta.DataAccessManual.Interfaces; using Kreta.Enums; using Kreta.Resources; namespace Kreta.BusinessLogic.Helpers { public class HetesekHelper : LogicBase { public HetesekHelper(IConnectionType connectionType) : base(connectionType) { } public DataSet GetHetSorszamokTanulokkal(int osztalyCsoportId, int? hetSorszam = null) { return Dal.CustomConnection.Run(ConnectionType, h => { IHetesDal dal = h.HetesDal(); return dal.GetHetSorszamokTanulokkal(TanevId, osztalyCsoportId, hetSorszam); }); } public DataSet GetHetesek(int osztalyCsoportId) { return Dal.CustomConnection.Run(ConnectionType, h => { IHetesDal dal = h.HetesDal(); return dal.GetHetesek(TanevId, osztalyCsoportId); }); } public void DeleteFutureHetesInOsztalyCsoport(int osztalyCsoportId) { Dal.CustomConnection.Run(ConnectionType, h => { IHetesDal dal = h.HetesDal(); dal.DeleteFutureHetesInOsztalyCsoport(TanevId, osztalyCsoportId); }); } public void SaveOrDeleteHetesekFeljegyzessel(List hetesekCoList, int osztalyCsoportId, int felhasznaloId) { Dal.CustomConnection.Run(ConnectionType, h => { IHetesDal hetesDal = h.HetesDal(); IFeljegyzesDal feljegyzesDal = h.Feljegyzes(); List beallitottHetesTanuloIdList = new List(); List toroltHetesTanuloIdList = new List(); foreach (var hetesekCO in hetesekCoList) { var (toroltHetesek, beallitottHetesek) = SaveOrDeleteHetesek(osztalyCsoportId, hetesekCO.HetSorszam, hetesekCO.TanuloIdList, hetesDal); beallitottHetesTanuloIdList.AddRange(beallitottHetesek); toroltHetesTanuloIdList.AddRange(toroltHetesek); } if (toroltHetesTanuloIdList.Any()) { DataSet toroltHetesekIdoszakbanDataSet = hetesDal.GetHetesAdatokFeljegyzeshez(TanevId, osztalyCsoportId, toroltHetesTanuloIdList.Distinct().ToList(), true); foreach (var hetesId in toroltHetesTanuloIdList.Distinct().ToList()) { var hetesData = toroltHetesekIdoszakbanDataSet.Tables[0].AsEnumerable().Where(x => x.Field("ID") == hetesId).ToList(); SaveHetesFeljegyzes(true, feljegyzesDal, felhasznaloId, hetesId, hetesData); } } if (beallitottHetesTanuloIdList.Any()) { DataSet beallitottHetesekIdoszakbanDataSet = hetesDal.GetHetesAdatokFeljegyzeshez(TanevId, osztalyCsoportId, beallitottHetesTanuloIdList.Distinct().ToList(), false); foreach (var hetesId in beallitottHetesTanuloIdList.Distinct().ToList()) { var hetesData = beallitottHetesekIdoszakbanDataSet.Tables[0].AsEnumerable().Where(x => x.Field("ID") == hetesId).ToList(); SaveHetesFeljegyzes(false, feljegyzesDal, felhasznaloId, hetesId, hetesData); } } }); } private void SaveHetesFeljegyzes(bool isTorles, IFeljegyzesDal dal, int felhasznaloId, int hetesId, List hetesData) { var entity = dal.Get(); //entity.Kezdete = entity.FaliujsagMegjelenes = true; entity.EsemenyDatuma = hetesData[0].Field("KezdoNap"); entity.Tipus = (int)EsemenyTipusEnum.ElektronikusUzenet; //entity.Vege =; entity.FeljegyzoId = felhasznaloId; entity.Mindenkinek = false; entity.Targy = HetesResource.HetesnekTortenoBeallitas; entity.Tartalom = CreateHetesFeljegyzesSzoveg(isTorles, hetesData); entity.BeirasTanuloId = hetesId; dal.Insert(entity); dal.AddTanulo(entity, hetesId); } private string CreateHetesFeljegyzesSzoveg(bool isTorles, List hetesData) { var hetesFirst = hetesData[0]; var hetesNev = hetesFirst.Field("Nev"); var hetesOsztalyNev = hetesFirst.Field("OsztalyCsoportNev"); var hetesIdoszakokString = new StringBuilder(); foreach (var hetes in hetesData) { hetesIdoszakokString.Append($"{ hetes.Field("KezdoNap").ToString(Constants.ToStringPattern.HungarianDate)} - {hetes.Field("UtolsoNap").ToString(Constants.ToStringPattern.HungarianDateWithSuffix)}, "); } return string.Format(HetesResource.HetesekFaliujsag, Environment.NewLine, hetesNev, hetesIdoszakokString.ToString().TrimEnd(','), isTorles ? HetesResource.hetesBeallitasaTorlesreKerult : HetesResource.hetesnekLettBeallitva, hetesOsztalyNev); } public (List toroltHetesek, List beallitottHetesek) SaveOrDeleteHetesek(int osztalyCsoportId, int hetSorszam, List selectedTanuloIds, IHetesDal hetesDal) { return hetesDal.SaveOrDeleteHetesek(TanevId, osztalyCsoportId, hetSorszam, selectedTanuloIds); } public string GetHetesekForDatum(int osztalyCsoportId, DateTime datum) { return Dal.CustomConnection.Run(ConnectionType, h => { IHetesDal dal = h.HetesDal(); return dal.GetHetesekForDatum(TanevId, osztalyCsoportId, datum); }); } public Dictionary GetHetesSzovegHetsorszammal(List osztalyCsoportIdList) { var hetesString = new StringBuilder(); var hetesDataRowList = Dal.CustomConnection.Run(ConnectionType, h => { IHetesDal dal = h.HetesDal(); return dal.GetHetesNevekHetsorszammal(TanevId, osztalyCsoportIdList).Tables[0].AsEnumerable().ToList(); }); var hetesDictionary = new Dictionary(); var hetsorszamList = hetesDataRowList.Select(x => x.Field("Hetsorszama")).Distinct().OrderBy(x => x).ToList(); foreach (var hetSorszam in hetsorszamList) { hetesDictionary.Add(hetSorszam, CreateHetesSzovegFromDataRowList(hetesString, hetesDataRowList.Where(x => x.Field("Hetsorszama") == hetSorszam))); hetesString.Clear(); } return hetesDictionary; } private string CreateHetesSzovegFromDataRowList(StringBuilder hetesString, IEnumerable hetesDataRowList) { var nevelesOktatasosHetesek = hetesDataRowList.Where(x => x.Field("FeladatKategoriaId") == (int)OktNevelesiKategoriaEnum.NevelesOktatas); var amiHetesek = hetesDataRowList.Where(x => x.Field("FeladatKategoriaId") == (int)OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas); var amiHetesekMuveszetiSzakkgimnazium = amiHetesek.Where(x => x.Field("OktNevFeladatId") == (int)OktatasiNevelesiFeladatEnum.MuveszetiSzakgimnazium); var amiHetesekAmi = amiHetesek.Where(x => x.Field("OktNevFeladatId") == (int)OktatasiNevelesiFeladatEnum.AlapfokuMuveszetoktatas); var kolisHetesek = hetesDataRowList.Where(x => x.Field("FeladatKategoriaId") == (int)OktNevelesiKategoriaEnum.Kollegium); var egymisHetesek = hetesDataRowList.Where(x => x.Field("FeladatKategoriaId") == (int)OktNevelesiKategoriaEnum.EGYMI); hetesString.Append(HetesResource.AHetenHetesnekLettBeallitva); hetesString.Append(" "); AddHetesStringToStringBuilder(hetesString, nevelesOktatasosHetesek); AddHetesStringToStringBuilder(hetesString, amiHetesekMuveszetiSzakkgimnazium); AddHetesStringToStringBuilder(hetesString, amiHetesekAmi); AddHetesStringToStringBuilder(hetesString, kolisHetesek); AddHetesStringToStringBuilder(hetesString, egymisHetesek); hetesString.Remove(hetesString.Length - 2, 2); hetesString.Append("."); return hetesString.ToString(); } private void AddHetesStringToStringBuilder(StringBuilder hetesString, IEnumerable hetesDataRowList) { var osztalyCsoportIdList = hetesDataRowList.Select(x => x.Field("osztalyCsoportId")).Distinct(); foreach (var osztalyId in osztalyCsoportIdList) { var osztalyraszurtDataRowList = hetesDataRowList.Where(x => x.Field("osztalyCsoportId") == osztalyId); if (osztalyraszurtDataRowList.Any()) { hetesString.Append(string.Join(", ", osztalyraszurtDataRowList.Select(x => x.Field("TanuloNev")))); hetesString.Append(" "); hetesString.Append(osztalyraszurtDataRowList.First().Field("OsztalyNev")); hetesString.Append(" "); hetesString.Append(HetesResource.Osztalyban); hetesString.Append(", "); } } } } }