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

290 lines
10 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using SDA.DataProvider;
namespace Kreta.BusinessLogic.Helpers
{
public class CsengetesiRendHelper : LogicBase
{
public CsengetesiRendHelper(IConnectionType connectionType) : base(connectionType) { }
public IEnumerable<int> GetOsztalyCsoportIdsForCsengetesiRend(DateTime datum, int hanyadikOra, IEnumerable<int> osztalyCsoportIds)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var aktivCsengetesiRendId = GetAktivCsengetesiRendId(h);
var date = datum.Date;
var datumCsengetesiRendList = GetCsengetesiRendekIdoszakra(h, date, date);
var connectionType = new DalHandlerConnectionType(ConnectionType, h);
var foglalkozasok_Rogzitese_Hetvegere = new SystemSettingsHelper(connectionType).GetSystemSettingValue<FoglalkozasokRogziteseHetvegere>(RendszerBeallitasTipusEnum.Foglalkozasok_Rogzitese_Hetvegere);
var orarendHelper = new OrarendHelper(connectionType);
var csengetesiRendOrakHelper = new CsengetesiRendOrakHelper(connectionType);
var osztalyCsoportIdsForCsengetesiRend = new List<int>();
foreach (var osztalyCsoportId in osztalyCsoportIds)
{
var csengetesiRendId = orarendHelper.GetCsengetesiRendForDate(date, datumCsengetesiRendList, aktivCsengetesiRendId, foglalkozasok_Rogzitese_Hetvegere, osztalyCsoportId);
if (csengetesiRendId.HasValue)
{
var csengetesiRendOrak = csengetesiRendOrakHelper.GetCsengetesiRendOraCoList(csengetesiRendId.Value);
var csengetesiRendOrakbanSzerepel = csengetesiRendOrak.Any(x => x.Oraszam == hanyadikOra);
if (csengetesiRendOrakbanSzerepel)
{
osztalyCsoportIdsForCsengetesiRend.Add(osztalyCsoportId);
}
}
}
return osztalyCsoportIdsForCsengetesiRend;
});
}
public DataSet GetCsengetesiRendek()
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRend(GridParameters);
return dal.GetCsengetesiRendekByMukodesiHely(TanevId);
});
}
public CsengetesiRendCO GetCsengetesiRendById(int cId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRend();
var co = new CsengetesiRendCO();
var entity = dal.Get(cId);
co.ID = entity.ID;
co.Nev = entity.Nev;
co.Aktiv = entity.Aktiv ?? false;
return co;
});
}
public List<CsengetesiRendIdoszakraCO> GetCsengetesiRendekIdoszakra(DateTime kezdoDatum, DateTime vegDatum, int? osztalyCsoportId = null)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
return GetCsengetesiRendekIdoszakra(h, kezdoDatum, vegDatum, osztalyCsoportId);
});
}
private List<CsengetesiRendIdoszakraCO> GetCsengetesiRendekIdoszakra(IDalHandler h, DateTime kezdoDatum, DateTime vegDatum, int? osztalyCsoportId = null)
{
var result = new List<CsengetesiRendIdoszakraCO>();
var dal = h.CsengetesiRend();
var ds = dal.GetCsengetesiRendek(kezdoDatum, vegDatum, osztalyCsoportId, IntezmenyId, TanevId);
foreach (DataRow row in ds.Tables[0].Rows)
{
var co = new CsengetesiRendIdoszakraCO();
co.Date = SDAConvert.ToDateTime(row["Datum"]) ?? default(DateTime);
co.CsengetesiRendId = row["CsengetesiRendId"] == DBNull.Value ? (int?)null : SDAConvert.ToInt32(row["CsengetesiRendId"]);
co.TanevRendTipus = SDAConvert.ToInt32(row["TanevRendTipus"]);
co.IsOrarendiNap = SDAConvert.ToBooleanFromTF(row["OrarendiNap"]);
co.IsOsszesCsoport = SDAConvert.ToBooleanFromTF(row["IsOsszesCsoport"]);
co.OsztalyCsoportId = SDAConvert.ToNullableInt32(row["OsztalyCsoportId"]);
co.HetNapja = SDAConvert.ToInt32(row["HetNapja"]);
co.OsztalyCsoportNev = SDAConvert.ToString(row["OsztalyCsoportNev"]);
result.Add(co);
}
return result;
}
public int SaveOrUpdateCsengetesiRend(CsengetesiRendCO co)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRend(GridParameters);
var ds = dal.GetCsengetesiRendekByMukodesiHely(TanevId);
if (ds.Tables[0].Rows.Count < 1)
{
co.Aktiv = true;
}
if (co.ID.HasValue && co.ID > 0)
{
if (dal.IsCsengetesiRendNevExists(co.ID.Value, co.Nev, TanevId))
{
throw new UniqueKeyViolationException();
}
ICsengetesiRend entity = dal.Get(co.ID.Value);
entity.Nev = co.Nev;
entity.Aktiv = Convert.ToBoolean(co.Aktiv);
dal.FullUpdate(entity);
return entity.ID;
}
else
{
var entity = dal.Get();
entity.Nev = co.Nev;
entity.Aktiv = Convert.ToBoolean(co.Aktiv);
entity.TanevId = TanevId;
dal.Insert(entity);
return entity.ID;
}
});
}
public void DeleteCsengetesiRend(int csId)
{
Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRend(GridParameters);
dal.Delete(csId);
});
}
public void SetCsengetesirend(int csRendId, bool aktiv)
{
Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRend(GridParameters);
dal.SetCsengetesirend(csRendId, aktiv, TanevId);
var OrarendDal = h.OrarendiOra();
OrarendDal.UpdateOrarend(IntezmenyId, TanevId, idoszakKezdete: null, idoszakVege: null, orarendioraId: null, osztalyCsoportId: null);
});
}
public (int csengetesiRendId, int oraSzam) GetCsengetesiRendAndOraszam(int csengetesirendOraId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRend();
return dal.GetCsengetesiRendAndOraszam(csengetesirendOraId, IntezmenyId, TanevId);
});
}
public DataSet GetCsengetesiRendEsOrak(string csengetesiRendId, int oraszamId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.CsengetesiRend();
return dal.GetCsengetesiRendEsOrak(csengetesiRendId, oraszamId, TanevId);
});
}
public int GetAktivCsengetesiRendId()
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
return GetAktivCsengetesiRendId(h);
});
}
private int GetAktivCsengetesiRendId(IDalHandler h)
{
var dal = h.CsengetesiRend();
return dal.GetAktivCsengetesiRendId(TanevId, IntezmenyId);
}
public int GetCsengetesiRendId(int csengetesirendOraId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRendOrak();
var csOra = dal.Get(csengetesirendOraId);
return csOra.CsengetesiRendId;
});
}
private bool IsValidRow(DataRow row, int csengetesiRendId)
{
if (row.Field<int?>("C_AKTIVCSENGETESIRENDID") != null && row.Field<int?>("C_AKTIVCSENGETESIRENDID") == csengetesiRendId)
{
return true;
}
if (row.Field<int?>("ID") != null && row.Field<int?>("ID") == csengetesiRendId)
{
return true;
}
return false;
}
public void FollowUpCsengetesiRend(int kovTanevId, int csengetesiRendId)
{
Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRend();
dal.FollowUpCsengetesiRend(IntezmenyId, TanevId, kovTanevId, csengetesiRendId);
});
}
public bool CheckCsengRendNevEgyezes(int csengRendId, string csengRendNev)
{
if (csengRendId.IsEntityId())
{
return false;
}
var ds = Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRend();
return dal.GetCsengetesiRendekByMukodesiHely(TanevId);
});
foreach (DataRow row in ds.Tables[0].Rows)
{
if (SDAConvert.ToString(row["Nev"]) == csengRendNev && csengRendId == 0)
{
return true;
}
}
return false;
}
public List<CsengetesiRendItemCo> GetCsengetesiRendCoList()
{
DataSet dataSet = GetCsengetesiRendek();
var result = new List<CsengetesiRendItemCo>();
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
var item = new CsengetesiRendItemCo(dataRow);
result.Add(item);
}
return result;
}
public (int minOraszam, int maxOraszam) GetMinMaxOraszam(int csengetesirendId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRend();
return dal.GetMinMaxOraszam(TanevId, csengetesirendId);
});
}
}
}