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(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("Count") > 0); if (utkozesRow != null) { var oraTipus = utkozesRow.Field("IsTanitasiOra") ? OralatogatasokResource.TanitasiOraja : OralatogatasokResource.MunkaidosTevekenysege; errorMessage = string.Format(OralatogatasokResource.OralatogatasUtkozesHiba, oraTipus); } return !string.IsNullOrWhiteSpace(errorMessage); } public List GetOralatogatasCoList(OralatogatasokKereseseCO oralatogatasokKereseseCO) { var oralatogatasokCoList = new List(); var ds = OralatogatasokKeresese(oralatogatasokKereseseCO); foreach (var row in ds.Tables[0].AsEnumerable()) { oralatogatasokCoList.Add(new OralatogatasItemCo(row)); } return oralatogatasokCoList; } } }