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

198 lines
7 KiB
C#

using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.Core.Exceptions;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.ParameterClasses;
using Kreta.Enums;
namespace Kreta.BusinessLogic.Helpers
{
public class TanmenetHelper : LogicBase
{
public TanmenetHelper(IConnectionType connectionType) : base(connectionType) { }
public DataSet GetTanmenetek(TanmenetKereseseCO co)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
TanmenetKeresesePCO pco = Convert_CO_to_PCO(co);
var dal = h.Tanmenet(GridParameters);
return dal.GetTanmenetek(pco);
});
}
public void SaveTanmenet(TanmenetCO co)
{
Dal.CustomConnection.Run(ConnectionType, h => SaveTanmenet(h, co));
}
private void SaveTanmenet(IDalHandler handler, TanmenetCO co)
{
if (!co.FoglalkozasID.HasValue)
{
throw new BlException(StringResourcesUtils.GetString(2494) /*Foglalkozás megadása kötelező*/);
}
var foglalkozasDal = handler.Foglalkozas();
var tanmenetDal = handler.Tanmenet();
var entity = foglalkozasDal.Get(co.FoglalkozasID.Value);
foreach (var torlendoId in co.Orak.Where(x => x.ID.HasValue).Select(a => a.ID))
{
if (torlendoId.HasValue)
{
DeleteTanmenet(handler, torlendoId.Value);
}
}
foreach (var ujSor in co.Orak.Where(x => !string.IsNullOrWhiteSpace(x.Tema)))
{
var ujElem = tanmenetDal.Get();
ujElem.Oraszam = ujSor.Oraszam;
ujElem.FeltoltoId = co.AlkalmazottID;
ujElem.TantargyId = entity.TantargyId;
ujElem.OsztalyCsoportId = entity.OsztalyCsoportId;
ujElem.Tema = ujSor.Tema.ReplaceMultipleSpacesAndTrim();
ujElem.Nev = $"{ujSor.Oraszam}. {ujSor.Tema}";
tanmenetDal.Insert(ujElem);
}
}
public void DeleteTanmenet(int id)
{
Dal.CustomConnection.Run(ConnectionType, (handler) => { handler.Tanmenet().Delete(id); });
}
private void DeleteTanmenet(IDalHandler handler, int id)
{
handler.Tanmenet().Delete(id);
}
public DataSet GetTanmenetek(int tantargyId, int osztalyId, int felhasznaloId, bool uresSorokkal = true, int? foglalkozasId = null)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.Tanmenet(GridParameters);
DataSet ds = dal.GetTanmenetek(tantargyId, osztalyId, felhasznaloId, foglalkozasId);
if (uresSorokkal)
{
//Dataset másolása
DataSet copyDataSet;
copyDataSet = ds.Copy();
var tanmenetOrakList = copyDataSet.Tables[0].AsEnumerable().Select(dataRow => new TanmenetOrakCO { ID = dataRow.Field<int>("ID"), Oraszam = dataRow.Field<int>("Oraszam"), Tema = dataRow.Field<string>("Tema") }).ToList();
var sorokszama = 720;
if (tanmenetOrakList.Count > 0)
{
foreach (var item in tanmenetOrakList)
{
if (item.Oraszam > sorokszama)
sorokszama = item.Oraszam;
}
}
//Régi dataset sorainak törlése
ds.Tables[0].Rows.Clear();
//2000-ig feltöltjük a sorokat
for (int i = 1; i <= sorokszama; i++)
{
DataRow row = ds.Tables[0].NewRow();
var ora = tanmenetOrakList.FirstOrDefault(o => o.Oraszam == i);
if (ora != null)
{
row["ID"] = ora.ID;
row["Tema"] = ora.Tema;
row["Oraszam"] = i;
ds.Tables[0].Rows.Add(row);
}
else
{
row["Tema"] = " ";
row["Oraszam"] = i;
ds.Tables[0].Rows.Add(row);
}
}
}
return ds;
});
}
public string GetTanmenetModalHeader(int tanarId, int tantargyId, int osztalycsoportId, OktNevelesiKategoriaEnum? kategoria)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Foglalkozas();
var ds = dal.GetFoglalkozasNev(tanarId, tantargyId, osztalycsoportId, kategoria);
var row = ds?.Tables[0]?.Rows;
if (row?.Count > 0)
{
return $"{row[0].Field<string>("Nev")}";
}
return string.Empty;
});
}
private TanmenetKeresesePCO Convert_CO_to_PCO(TanmenetKereseseCO co)
{
var pco = new TanmenetKeresesePCO()
{
AlkalmazottID = co.AlkalmazottID,
OsztalyID = co.OsztalyID,
TantargyID = co.TantargyID,
Megjegyzes = co.Megjegyzes,
Nev = co.Nev,
Oraszam = co.Oraszam,
RovidNev = co.RovidNev,
Tema = co.Tema
};
return pco;
}
public DataSet GetTantargyTanmenetei(int tantargyId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.Tanmenet(GridParameters);
return dal.GetTantargyTanmenetei(tantargyId, TanevId);
});
}
public DataSet GetOsztalyCsoportTanmenetei(int id, OktNevelesiKategoriaEnum? kategoria)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.Tanmenet(GridParameters);
return dal.GetOsztalyCsoportTanmenetei(id, TanevId, kategoria);
});
}
public List<TanmenetItemCo> GetTanmenetCoList(int? alkalmazottId = null)
{
DataSet dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Tanmenet().GetTanmenetDataSet(TanevId, alkalmazottId));
var result = new List<TanmenetItemCo>();
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
var item = new TanmenetItemCo(dataRow);
result.Add(item);
}
return result;
}
}
}