199 lines
9.4 KiB
C#
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(", ");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|