277 lines
11 KiB
C#
277 lines
11 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using Kreta.BusinessLogic.Classes;
|
|
using Kreta.BusinessLogic.HelperClasses;
|
|
using Kreta.Core;
|
|
using Kreta.Core.ConnectionType;
|
|
using Kreta.DataAccessManual;
|
|
using Kreta.DataAccessManual.Util;
|
|
using Kreta.Framework;
|
|
|
|
namespace Kreta.BusinessLogic.Helpers
|
|
{
|
|
public class CsengetesiRendOrakHelper : LogicBase
|
|
{
|
|
public CsengetesiRendOrakHelper(IConnectionType connectionType) : base(connectionType) { }
|
|
|
|
public void UpdateCsengetesiRend(int? newCsengetesiRendId, int? oldCsengetesiRendId)
|
|
{
|
|
Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var csengOraDal = h.CsengetesiRendOrak();
|
|
csengOraDal.UpdateCsengetesiRend(newCsengetesiRendId, oldCsengetesiRendId);
|
|
var orarendDal = h.OrarendiOra();
|
|
orarendDal.UpdateOrarend(IntezmenyId, TanevId, null, null, null, null);
|
|
});
|
|
}
|
|
|
|
public CsengetesiRendOraCO GetCsengetesiRendKapcsolodoOra(int csengetesiRendId)
|
|
{
|
|
var result = new CsengetesiRendOraCO();
|
|
|
|
Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.CsengetesiRendOrak(GridParameters);
|
|
var ds = dal.GetCsengetesiiRendKapcsolodoOra(csengetesiRendId, TanevId, IntezmenyId);
|
|
|
|
foreach (DataRow row in ds.Tables[0].Rows)
|
|
{
|
|
result.ID = SDAConvert.ToInt32(row["ID"]);
|
|
result.IsVanKapcsolodoOra = SDAConvert.ToBoolean(row["IsVanOraKapcsolodas"]);
|
|
result.Aktiv = SDAConvert.ToBoolean(row["IsAktiv"]);
|
|
result.MinOraszam = SDAConvert.ToInt32(row["MinOraszam"]);
|
|
result.MaxOraszam = SDAConvert.ToInt32(row["MaxOraszam"]);
|
|
}
|
|
});
|
|
|
|
return result;
|
|
}
|
|
|
|
public List<(string OraKezdet, string OraVeg)> GetCsengetesiRendKapcsolodoOraKezdeteVege(int csengetesiRendId)
|
|
{
|
|
var result = new List<(string oraKezdet, string oraVeg)>();
|
|
|
|
Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.CsengetesiRendOrak(GridParameters);
|
|
var ds = dal.GetCsengetesiiRendKapcsolodoOraKezdeteVege(csengetesiRendId, TanevId);
|
|
|
|
foreach (DataRow row in ds.Tables[0].Rows)
|
|
{
|
|
result.Add((SDAConvert.ToString(row["OraKezdete"]), SDAConvert.ToString(row["OraVege"])));
|
|
}
|
|
});
|
|
|
|
return result;
|
|
}
|
|
|
|
public DataSet GetCsengetesiRendOraiForGrid(int csengetesiRendId, bool onlyReal)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.CsengetesiRendOrak(GridParameters);
|
|
var ds = dal.GetCsengetesiRendOraiForGrid(csengetesiRendId, onlyReal);
|
|
|
|
ds.Tables[0].Columns.Add("IsHaveReferences");
|
|
foreach (DataRow row in ds.Tables[0].Rows)
|
|
{
|
|
if (row.Field<bool>("IsReal_BOOL") && row["CsengetesiRendOraId"] != DBNull.Value)
|
|
{
|
|
row["IsHaveReferences"] = IsHaveReferences(row.Field<int>("CsengetesiRendOraId"));
|
|
}
|
|
}
|
|
|
|
return ds;
|
|
});
|
|
}
|
|
|
|
public void SaveCsengetesiRendOraLista(List<CsengetesiRendOraCO> model, bool isVisszamenoleges, int? kovTanevId)
|
|
{
|
|
Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
int csengetesiRendId = model[0].CsengetesiRendID;
|
|
var dal = h.CsengetesiRend();
|
|
var csengOraDal = h.CsengetesiRendOrak();
|
|
var orarendDal = h.OrarendiOra();
|
|
var entity = dal.Get(csengetesiRendId);
|
|
var torlendoCsengetesiRendOrak = new List<int>();
|
|
foreach (var item in model)
|
|
{
|
|
if (!item.Aktiv)
|
|
{
|
|
if (item.ID != null && !IsHaveReferences(item.ID.Value))
|
|
{
|
|
torlendoCsengetesiRendOrak.Add(item.ID.Value);
|
|
}
|
|
|
|
continue;
|
|
}
|
|
|
|
var listItem = entity.CsengetesiRendOra.SingleOrDefault(x => x.ID == item.ID);
|
|
|
|
if (listItem != null)
|
|
{
|
|
listItem.Kezdete = item.Kezd;
|
|
listItem.Vege = item.Veg;
|
|
listItem.Oraszam = item.Oraszam;
|
|
|
|
csengOraDal.Update(listItem);
|
|
|
|
if (isVisszamenoleges)
|
|
{
|
|
csengOraDal.UpdateOrarendiOraVisszamenolegesen(item.ID.Value);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var ora = csengOraDal.Get();
|
|
ora.CsengetesiRendId = csengetesiRendId;
|
|
ora.Oraszam = item.Oraszam;
|
|
ora.Kezdete = item.Kezd;
|
|
ora.Vege = item.Veg;
|
|
ora.TanevId = TanevId;
|
|
|
|
csengOraDal.Insert(ora);
|
|
item.ID = ora.ID;
|
|
}
|
|
|
|
var th = new TanevHelper(new DalHandlerConnectionType(ConnectionType, h));
|
|
int currentKovTanevId = kovTanevId ?? th.GetKovetkezoTanev().Key;
|
|
|
|
if (currentKovTanevId.IsEntityId() && currentKovTanevId != TanevId)
|
|
{
|
|
csengOraDal.FollowUpCsengetesiRendOra(IntezmenyId, TanevId, currentKovTanevId, item.ID.Value, csengetesiRendId, isVisszamenoleges);
|
|
}
|
|
|
|
}
|
|
|
|
if (torlendoCsengetesiRendOrak.Count > 0)
|
|
{
|
|
csengOraDal.CsengetesiRendOrakTorles(torlendoCsengetesiRendOrak, TanevId);
|
|
orarendDal.UpdateOrarend(IntezmenyId, TanevId, null, null, null, null);
|
|
}
|
|
else if (isVisszamenoleges)
|
|
{
|
|
orarendDal.UpdateOrarend(IntezmenyId, TanevId, null, null, null, null);
|
|
}
|
|
});
|
|
}
|
|
|
|
public int GetCsengetesiRendOraSzam(int csengRendId)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var csora = h.CsengetesiRendOrak().Get(csengRendId);
|
|
return csora.Oraszam;
|
|
});
|
|
}
|
|
|
|
public DataSet GetCsengetesiOrakKezdVeg()
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.CsengetesiRendOrak(GridParameters);
|
|
return dal.GetCsengetesiOrakKezdVeg(TanevId, IntezmenyId);
|
|
});
|
|
}
|
|
|
|
public IDictionary<string, string> ValidateCsengetesiRendOrak(List<CsengetesiRendOraCO> list)
|
|
{
|
|
var errorList = new Dictionary<string, string>();
|
|
|
|
foreach (CsengetesiRendOraCO itemA in list.Where(x => x.Kezd.Year == 1900 && x.Veg.Year == 1900))
|
|
{
|
|
if (itemA.Kezd < itemA.Veg)
|
|
{
|
|
int kulonbseg = (itemA.Veg.Subtract(itemA.Kezd).Hours * 60) + itemA.Veg.Subtract(itemA.Kezd).Minutes;
|
|
|
|
if (kulonbseg < 15 ||
|
|
kulonbseg > 90)
|
|
{
|
|
errorList.Add(StringResourcesUtil.GetString(3988) + itemA.Oraszam /*Időtartam*/, string.Format(StringResourcesUtil.GetString(3989), itemA.Oraszam, kulonbseg)); //A(z) {0} óra időtartama nem 30,35,40 vagy 45 perc.({1} perc)
|
|
}
|
|
|
|
foreach (CsengetesiRendOraCO itemB in list)
|
|
{
|
|
if (itemB.Kezd < itemB.Veg && itemB.Oraszam > itemA.Oraszam)
|
|
{
|
|
if (itemA.Kezd > itemB.Veg || itemA.Veg > itemB.Kezd)
|
|
{
|
|
errorList.Add(StringResourcesUtil.GetString(3990) + itemA.Oraszam /*Ütközés*/, string.Format(StringResourcesUtil.GetString(3991), itemA.Oraszam, itemB.Oraszam)); //A(z) {0}. óra ütközik a(z) {1}. órával.
|
|
break; // A kód elszáll, ha egyszerre többel is ütközik.
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (itemA.Kezd.Hour == 0 && itemA.Kezd.Minute == 0 && itemA.Veg.Hour == 0 && itemA.Veg.Minute == 0)
|
|
{
|
|
errorList.Add(StringResourcesUtil.GetString(3999) + itemA.Oraszam /*Kitöltetlen*/, string.Format(StringResourcesUtil.GetString(4000), itemA.Oraszam)); // A(z) {0}. óra értékei nem lettek kitöltve.
|
|
}
|
|
else
|
|
{
|
|
errorList.Add(StringResourcesUtil.GetString(3992) + itemA.Oraszam /*Kezdete-Vége*/, string.Format(StringResourcesUtil.GetString(3993), itemA.Oraszam)); //A(z) {0}. óra kezdete nagyobb mint a vége.
|
|
}
|
|
}
|
|
}
|
|
|
|
return errorList;
|
|
}
|
|
|
|
public DataTable GetCsengetesirendOrakNaptarhoz(int? csengetesiRendId = null)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.CsengetesiRendOrak(GridParameters);
|
|
var ds = dal.GetCsengetesirendOrakNaptarhoz(TanevId, csengetesiRendId);
|
|
|
|
if (ds.Tables.Count > 0)
|
|
{
|
|
return ds.Tables[0];
|
|
}
|
|
|
|
return null;
|
|
});
|
|
}
|
|
|
|
public List<CsengetesiRendOraCO> GetCsengetesiRendOraCoList(int? csengetesiRendId = null)
|
|
{
|
|
var result = new List<CsengetesiRendOraCO>();
|
|
var dataTable = GetCsengetesirendOrakNaptarhoz(csengetesiRendId);
|
|
foreach (DataRow dataRow in dataTable.Rows)
|
|
{
|
|
result.Add(new CsengetesiRendOraCO
|
|
{
|
|
ID = SDAConvert.ToInt32(dataRow["ID"]),
|
|
Kezd = SDAConvert.ToDateTime(dataRow["C_KEZDETE"]).Value,
|
|
Veg = SDAConvert.ToDateTime(dataRow["C_VEGE"]).Value,
|
|
Oraszam = SDAConvert.ToInt32(dataRow["C_ORASZAM"])
|
|
});
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
public int? GetCsengetesiRendOraId(int csengRendId, int oraszam)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
return h.CsengetesiRendOrak().GetCsengetesiRendOraIdByIdAndOraszam(csengRendId, oraszam, TanevId);
|
|
});
|
|
}
|
|
|
|
public bool IsHaveReferences(int csengetesiRendOraId)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.CsengetesiRendOrak();
|
|
var result = dal.ReferencesCount(csengetesiRendOraId, TanevId);
|
|
|
|
return result.Tables[0].Rows.Cast<DataRow>().Any(row => row.Field<int>("darab") > 0);
|
|
});
|
|
}
|
|
}
|
|
}
|