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

242 lines
8.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text.RegularExpressions;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Logic;
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.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class OralatogatasokHelper : LogicBase
{
public OralatogatasokHelper(IConnectionType connectionType) : base(connectionType) { }
public DataSet OralatogatasokKeresese(OralatogatasokKereseseCO co)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var ds = h.OralatogatasDal(GridParameters).GetOralatogatasok(TanevId, co.ConvertPCO(FelhasznaloId));
return ds;
});
}
public OralatogatasokCO GetOralatogatas(int oralatogatasId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var co = new OralatogatasokCO();
var ol = h.OralatogatasDal().Get(oralatogatasId);
co.Beosztas = ol.OralatogatoBeosztasa;
co.Date = ol.Datum;
co.Latogato = ol.Ertekelo.NyomtatasiNev;
co.LatogatoID = ol.ErtekeloId;
co.Megjegyzes = ol.Megjegyzes;
co.Ora = ol.MegtartottOra.Oraszam ?? 0;
co.OsztalyCsoport = ol.MegtartottOra.OsztalyCsoport.Nev;
co.LatogatottPedagogus = ol.MegtartottOra.Tanar.NyomtatasiNev;
co.Tantargy = ol.MegtartottOra.Tantargy.Nev;
return co;
});
}
public void DeleteOralatogatas(int oraId, int tanarId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.OralatogatasDal();
dal.Delete(oraId, tanarId);
});
}
public OralatogatasokCO GetOraOralatogatasa(int OraID)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var co = new OralatogatasokCO();
var ora = h.TanitasiOra().Get(OraID);
if (ora.Oralatogatasok.Count > 0)
{
var oraLatogatas = ora.Oralatogatasok.FirstOrDefault(x => x.Torolt == false);
if (oraLatogatas != null)
{
co.Date = oraLatogatas.Datum;
co.Beosztas = oraLatogatas.OralatogatoBeosztasa;
co.LatogatoID = oraLatogatas.ErtekeloId;
co.Latogato = oraLatogatas.Ertekelo.NyomtatasiNev;
co.Megjegyzes = oraLatogatas.Megjegyzes;
return co;
}
}
return null;
});
}
public OralatogatasokCO GetOraOralatogatasa(int OraID, int tanarID)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var co = new OralatogatasokCO();
var ora = h.TanitasiOra().Get(OraID);
if (ora.Oralatogatasok.Count > 0)
{
var oraLatogatas = ora.Oralatogatasok.Where(x => x.ErtekeloId == tanarID && x.Torolt == false).FirstOrDefault();
if (oraLatogatas != null)
{
co.Id = oraLatogatas.ID;
co.Date = oraLatogatas.Datum;
co.Beosztas = oraLatogatas.OralatogatoBeosztasa;
co.LatogatoID = oraLatogatas.ErtekeloId;
co.Latogato = oraLatogatas.Ertekelo.NyomtatasiNev;
co.Megjegyzes = oraLatogatas.Megjegyzes;
return co;
}
}
return null;
});
}
public void SaveOralatogatas(OralatogatasokCO CO)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
if (string.IsNullOrWhiteSpace(CO.Megjegyzes))
throw new ArgumentNullException("Megjegyzes");
if (CO.LatogatoID == 0)
throw new ArgumentNullException("LatogatoID");
if (CO.Date == DateTime.MinValue)
throw new ArgumentNullException("Datum");
if (CO.Ora == 0)
throw new ArgumentNullException("Ora");
var ora = h.TanitasiOra().Get(CO.Ora);
IOralatogatas oralatogatas;
var isNew = false;
if (ora.Oralatogatasok.Count == 0)
{
oralatogatas = h.OralatogatasDal().Get();
isNew = true;
}
else
{
oralatogatas = ora.Oralatogatasok.Where(x => x.ErtekeloId == CO.LatogatoID && x.Torolt == false).FirstOrDefault();
if (oralatogatas == null)
{
oralatogatas = h.OralatogatasDal().Get();
isNew = true;
}
}
oralatogatas.MegtartottOraId = CO.Ora;
oralatogatas.Datum = CO.Date;
oralatogatas.Megjegyzes = System.Web.HttpUtility.HtmlDecode(CO.Megjegyzes).ReplaceMultipleSpacesAndTrim();
oralatogatas.ErtekeloId = CO.LatogatoID;
var munkakorTipusId = h.Alkalmazott().GetAlklamazottMunkakorTipusa(CO.LatogatoID);
oralatogatas.OralatogatoBeosztasa = munkakorTipusId.GetDisplayName<MunkakorTipusEnum>(TanevId);
var dal = h.OralatogatasDal();
var nemKotottMunkaidoDal = h.NemKotottMunkaido();
if (CO.NemKotottMunkaidos)
{
InsertNemKotottMunkaido(h, ora, CO);
}
if (isNew)
{
dal.Insert(oralatogatas);
}
else
{
dal.FullUpdate(oralatogatas);
var nkmId = nemKotottMunkaidoDal.GetNemKotottMunkaidoId(oralatogatas.ID, FelhasznaloId);
if (nkmId != -1)
{
nemKotottMunkaidoDal.Update(nkmId, true, megjegyzes: RichTextLogic.CutHtmlTagsAndDecode(oralatogatas.Megjegyzes));
}
}
});
}
private void InsertNemKotottMunkaido(IDalHandler h, ITanitasiOra ora, OralatogatasokCO co)
{
var helper = new NemKotottMunkaidoHelper(new DalHandlerConnectionType(ConnectionType, h));
var nemKotottCo = new NemKotottMunkaidoCO()
{
GroupId = Guid.NewGuid().ToString(),
HetirendId = (int)HetiRendTipusEnum.MindegyikHet,
TorvenyKategoriaId = (int)TevekenysegTipusEnum.egyeb,
TanarId = FelhasznaloId,
TulajId = FelhasznaloId,
Megtartott = true,
Kezdete = ora.OraKezdete,
Vege = ora.OraVege,
NaplozottMegjegyzes = StripHTML(System.Web.HttpUtility.HtmlDecode(co.Megjegyzes)).ReplaceMultipleSpacesAndTrim()
};
helper.Insert(nemKotottCo);
}
public static string StripHTML(string input)
{
return Regex.Replace(input, "<.*?>", string.Empty);
}
public bool OralatogatasUtkozes(int tanarId, int oraId, out string errorMessage)
{
errorMessage = null;
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.OralatogatasDal().OralatogatasUtkozes(tanarId, oraId);
});
var utkozesRow = ds.Tables[0].AsEnumerable().FirstOrDefault(r => r.Field<int>("Count") > 0);
if (utkozesRow != null)
{
var oraTipus = utkozesRow.Field<bool>("IsTanitasiOra") ? OralatogatasokResource.TanitasiOraja : OralatogatasokResource.MunkaidosTevekenysege;
errorMessage = string.Format(OralatogatasokResource.OralatogatasUtkozesHiba, oraTipus);
}
return !string.IsNullOrWhiteSpace(errorMessage);
}
public List<OralatogatasItemCo> GetOralatogatasCoList(OralatogatasokKereseseCO oralatogatasokKereseseCO)
{
var oralatogatasokCoList = new List<OralatogatasItemCo>();
var ds = OralatogatasokKeresese(oralatogatasokKereseseCO);
foreach (var row in ds.Tables[0].AsEnumerable())
{
oralatogatasokCoList.Add(new OralatogatasItemCo(row));
}
return oralatogatasokCoList;
}
}
}