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

199 lines
9.4 KiB
C#

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<HetesekCO> hetesekCoList, int osztalyCsoportId, int felhasznaloId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
IHetesDal hetesDal = h.HetesDal();
IFeljegyzesDal feljegyzesDal = h.Feljegyzes();
List<int> beallitottHetesTanuloIdList = new List<int>();
List<int> toroltHetesTanuloIdList = new List<int>();
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<int>("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<int>("ID") == hetesId).ToList();
SaveHetesFeljegyzes(false, feljegyzesDal, felhasznaloId, hetesId, hetesData);
}
}
});
}
private void SaveHetesFeljegyzes(bool isTorles, IFeljegyzesDal dal, int felhasznaloId, int hetesId, List<DataRow> hetesData)
{
var entity = dal.Get();
//entity.Kezdete =
entity.FaliujsagMegjelenes = true;
entity.EsemenyDatuma = hetesData[0].Field<DateTime>("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<DataRow> hetesData)
{
var hetesFirst = hetesData[0];
var hetesNev = hetesFirst.Field<string>("Nev");
var hetesOsztalyNev = hetesFirst.Field<string>("OsztalyCsoportNev");
var hetesIdoszakokString = new StringBuilder();
foreach (var hetes in hetesData)
{
hetesIdoszakokString.Append($"{ hetes.Field<DateTime>("KezdoNap").ToString(Constants.ToStringPattern.HungarianDate)} - {hetes.Field<DateTime>("UtolsoNap").ToString(Constants.ToStringPattern.HungarianDateWithSuffix)}, ");
}
return string.Format(HetesResource.HetesekFaliujsag, Environment.NewLine, hetesNev, hetesIdoszakokString.ToString().TrimEnd(','), isTorles ? HetesResource.hetesBeallitasaTorlesreKerult : HetesResource.hetesnekLettBeallitva, hetesOsztalyNev);
}
public (List<int> toroltHetesek, List<int> beallitottHetesek) SaveOrDeleteHetesek(int osztalyCsoportId, int hetSorszam, List<int> 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<int, string> GetHetesSzovegHetsorszammal(List<int> 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<int, string>();
var hetsorszamList = hetesDataRowList.Select(x => x.Field<int>("Hetsorszama")).Distinct().OrderBy(x => x).ToList();
foreach (var hetSorszam in hetsorszamList)
{
hetesDictionary.Add(hetSorszam, CreateHetesSzovegFromDataRowList(hetesString, hetesDataRowList.Where(x => x.Field<int>("Hetsorszama") == hetSorszam)));
hetesString.Clear();
}
return hetesDictionary;
}
private string CreateHetesSzovegFromDataRowList(StringBuilder hetesString, IEnumerable<DataRow> hetesDataRowList)
{
var nevelesOktatasosHetesek = hetesDataRowList.Where(x => x.Field<int>("FeladatKategoriaId") == (int)OktNevelesiKategoriaEnum.NevelesOktatas);
var amiHetesek = hetesDataRowList.Where(x => x.Field<int>("FeladatKategoriaId") == (int)OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas);
var amiHetesekMuveszetiSzakkgimnazium = amiHetesek.Where(x => x.Field<int>("OktNevFeladatId") == (int)OktatasiNevelesiFeladatEnum.MuveszetiSzakgimnazium);
var amiHetesekAmi = amiHetesek.Where(x => x.Field<int>("OktNevFeladatId") == (int)OktatasiNevelesiFeladatEnum.AlapfokuMuveszetoktatas);
var kolisHetesek = hetesDataRowList.Where(x => x.Field<int>("FeladatKategoriaId") == (int)OktNevelesiKategoriaEnum.Kollegium);
var egymisHetesek = hetesDataRowList.Where(x => x.Field<int>("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<DataRow> hetesDataRowList)
{
var osztalyCsoportIdList = hetesDataRowList.Select(x => x.Field<int>("osztalyCsoportId")).Distinct();
foreach (var osztalyId in osztalyCsoportIdList)
{
var osztalyraszurtDataRowList = hetesDataRowList.Where(x => x.Field<int>("osztalyCsoportId") == osztalyId);
if (osztalyraszurtDataRowList.Any())
{
hetesString.Append(string.Join(", ", osztalyraszurtDataRowList.Select(x => x.Field<string>("TanuloNev"))));
hetesString.Append(" ");
hetesString.Append(osztalyraszurtDataRowList.First().Field<string>("OsztalyNev"));
hetesString.Append(" ");
hetesString.Append(HetesResource.Osztalyban);
hetesString.Append(", ");
}
}
}
}
}