using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Text; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.Exceptions; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Helpers.SystemSettings; using Kreta.BusinessLogic.Interfaces; using Kreta.BusinessLogic.Logic; using Kreta.BusinessLogic.Utils; using Kreta.Client.KozpontiKreta.Model; using Kreta.Core; using Kreta.Core.ConnectionType; using Kreta.Core.Domain; using Kreta.Core.Exceptions; using Kreta.DataAccess.Interfaces; using Kreta.DataAccessManual; using Kreta.DataAccessManual.Interfaces; using Kreta.DataAccessManual.Util; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Framework.Entities; using Kreta.Resources; using OfficeOpenXml; namespace Kreta.BusinessLogic.Helpers { public class AlkalmazottHelper : LogicBase { public AlkalmazottHelper(IConnectionType connectionType) : base(connectionType) { } public DataSet GetInfoForLoginAlkalmazott() { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(); return dal.GetInfoForLoginAlkalmazott(FelhasznaloId, TanevId); }); } public List SearchAlkalmazott(AlkalmazottSearchCo co, int? felhasznaloSzervezetId = null) { var isFromSzervezet = co?.IsFromSzervezet ?? false; var result = Dal.CustomConnection.Run(ConnectionType, h => { var dataSet = h.Alkalmazott(GridParameters).SearchAlkalmazott(co.ConvertToPco(), IntezmenyId, TanevId, IntezmenyAzonosito); List coList; if (isFromSzervezet) { var szervezetIds = !felhasznaloSzervezetId.IsEntityId() ? new List() : h.SzervezetDal().GetLathatoSzervezetek(IntezmenyId, TanevId, felhasznaloSzervezetId, (int)SzervezetAdatokHalmazaEnum.SzervezetEsAlSzervezetek); var intezmenyiAdminIds = felhasznaloSzervezetId.IsEntityId() ? new List() : h.Felhasznalo().GetAllIntezmenyiAdmin(TanevId); coList = dataSet.Tables[0].AsEnumerable().Select(dataRow => { var szervezetId = dataRow.Field("SzervezetId"); var isSzerkesztheto = (felhasznaloSzervezetId.IsEntityId() && szervezetId.IsEntityId() && szervezetIds.Contains(szervezetId.Value)) || (!felhasznaloSzervezetId.IsEntityId() && intezmenyiAdminIds.Contains(FelhasznaloId)); return new AlkalmazottItemCo(dataRow, isSzerkesztheto); }).ToList(); } else { coList = dataSet.Tables[0].AsEnumerable().Select(x => new AlkalmazottItemCo(x, true)).ToList(); } return coList; }); return result; } public List SearchAlkalmazottForKir(FelhasznaloKirSearchCo alkalmazottKirSearchCoco) { var kirAlkalmazottList = new List(); var allandoLakcimList = new List(); var tartozkodasiCimList = new List(); Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(GridParameters); kirAlkalmazottList = dal.SearchAlkalmazottForKir(alkalmazottKirSearchCoco, TanevId); allandoLakcimList = dal.GetKirAlkalmazottCim(IntezmenyId, TanevId, kirAlkalmazottList.Select(x => x.Id), CimTipusEnum.allando_lakcim); tartozkodasiCimList = dal.GetKirAlkalmazottCim(IntezmenyId, TanevId, kirAlkalmazottList.Select(x => x.Id), CimTipusEnum.tartozkodasi_hely); }); kirAlkalmazottList.ForEach(alkalmazott => { var allandoLakcim = allandoLakcimList.Where(cim => cim.FelhasznaloId == alkalmazott.Id).FirstOrDefault(); alkalmazott.AllandoLakcim = allandoLakcim; allandoLakcimList.Remove(allandoLakcim); var tartozkodasiCim = tartozkodasiCimList.Where(cim => cim.FelhasznaloId == alkalmazott.Id).FirstOrDefault(); alkalmazott.TartozkodasiCim = tartozkodasiCim; tartozkodasiCimList.Remove(tartozkodasiCim); }); return kirAlkalmazottList; } public List GetIskolaor() { return Dal.CustomConnection.Run(ConnectionType, h => { var iskolaorDataSet = h.Alkalmazott().GetIskolaor(TanevId); var iskolaorList = new List(); if (iskolaorDataSet.Tables[0].Rows.Count > 0) { foreach (DataRow dataRow in iskolaorDataSet.Tables[0].Rows) { var iskolaorAdatok = new IskolaorCo { Id = SDAConvert.ToInt32(dataRow["Id"]), IdpEgyediAzonosito = SDAConvert.ToGuid(dataRow["IdpEgyediAzonosito"]), Nev = SDAConvert.ToString(dataRow["Nev"]), AlapertelmezettEmailCim = SDAConvert.ToString(dataRow["EmailCim"]), AlapertelmezettTelefonszam = SDAConvert.ToString(dataRow["Telefonszam"]), MukodesiHelyNeve = SDAConvert.ToString(dataRow["MukodesiHelyNev"]), OktatasiNevelesiFeladatTipusId = SDAConvert.ToInt32(dataRow["OktatasiNevelesiFeladatTipusId"]), FeladatEllatasiHelyId = SDAConvert.ToInt32(dataRow["FeladatEllatasiHelyId"]) }; iskolaorList.Add(iskolaorAdatok); } } return iskolaorList; }); } public void DeleteAlkalmazott(int id) { Dal.CustomConnection.Run(ConnectionType, h => { var alkalmazottDal = h.Alkalmazott(); var entity = alkalmazottDal.Get(id); var message = string.Empty; var osztalyai = entity.OfoOsztalyai.Where(x => !x.Torolt).Select(x => x.Nev).ToList(); if (osztalyai.Count > 0) { message += $"{ErrorResource.OsztalyfonokAzAlabbiOsztalyokban} {string.Join(", ", osztalyai)}{Environment.NewLine}"; } var csoportjai = entity.VezetoCsoportjai.Where(x => !x.Torolt).Select(x => x.Nev).ToList(); if (csoportjai.Count > 0) { message += $"{ErrorResource.CsoportvezetoAzAlabbiCsoportokban} {string.Join(", ", csoportjai)}{Environment.NewLine}"; } var foglalkozasai = entity.Foglalkozas.Where(x => !x.Torolt).ToList(); if (foglalkozasai.Count > 0) { var items = foglalkozasai.Aggregate(string.Empty, (current, f) => current + $" {f.OsztalyCsoport.Nev}({f.Tantargy.Nev}){Environment.NewLine}"); message += $"{ErrorResource.TTFenKeresztulKapcsolodikAzAlabbiOsztCsopokhoz}{Environment.NewLine}{items}"; } if (string.IsNullOrWhiteSpace(message)) { if (entity.ID == FelhasznaloId) throw new EntityDeleteFailedException("Felhasznalo", "Felhasznalo", StringResourcesUtils.GetString(3244) /*Felhasználó nem törölheti önmagát!*/ ); alkalmazottDal.Delete(entity.ID); } else { var errorMessage = $"{entity.NyomtatasiNev} {ErrorResource.NemTorolhetoAzAlabbiKapcsolodasokMiatt}{Environment.NewLine}{Environment.NewLine}{message}{Environment.NewLine}"; throw new CannotBeDeletedException(errorMessage); } }); } public void DeleteEletpalyaModell(int id) { Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.EletpalyaModell(); dal.Delete(id); }); } public void DeleteVegzettseg(int id) { Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.VegzettsegDal(); dal.Delete(id); }); } public void DeleteTovabbiMunkaugyiAdatok(int id) { Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.TovabbiMunkaugyiAdatok(); dal.Delete(id); }); } public int GetBetoltetlenAllashelyekSzama() { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(); return dal.GetBetoltetlenAllashelyekSzama(TanevId, IntezmenyId); }); } public int? GetAlkalmazottKKKepesite(int alkalmazottId) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(); var entity = dal.Get(alkalmazottId); return entity.KKKepesitesId; }); } public string GetSpecialisAlkalmazottakNevEloTag(string nevEloTag) { return "[" + nevEloTag + " " + (Dal.CustomConnection.Run(ConnectionType, h => { var dataSet = h.Alkalmazott().GetSpecialisAlkalmazottakNeve(TanevId, nevEloTag); var nevek = from DataRow myRow in dataSet.Tables[0].Rows select myRow[0].ToString(); return GetLegkisebbNevEloTag(nevEloTag, nevek.ToList()); })).ToString() + "]"; } private int GetLegkisebbNevEloTag(string nevEloTag, List nevek) { var minimumHasznalhato = 1; var szamok = new List(); for (var i = 0; i < nevek.Count; i++) { nevek[i] = nevek[i].Substring(0, nevek[i].IndexOf("]")); nevek[i] = nevek[i].Replace(nevEloTag, "").Replace("[", "").Replace("]", "").Trim(); } foreach (var nev in nevek) { if (int.TryParse(nev, out var aktualis)) { szamok.Add(aktualis); } } foreach (var item in szamok.OrderBy(x => x)) { if (item == minimumHasznalhato) { minimumHasznalhato++; } } return minimumHasznalhato; } public DataSet GetCim(int alkalmazottId) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Felhasznalo(GridParameters); return dal.GetUserCim(alkalmazottId); }); } public DataSet GetTelefonSzam(int alkalmazottId) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Felhasznalo(GridParameters); return dal.GetUserTelefon(alkalmazottId); }); } public DataSet GetEmails(int alkalmazottId) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Felhasznalo(GridParameters); return dal.GetUserEmailCim(alkalmazottId); }); } public List GetEmailsCoList(int alkalmazottId) { return Dal.CustomConnection.Run(ConnectionType, h => { var felhasznalo = h.Felhasznalo().Get(alkalmazottId); return felhasznalo.Email.Where(x => !x.Torolt && !x.IsHibasanMegadva).Select(x => new AlkalmazottElerhetosegEmailCO { Alapertelmezett = x.Alapertelmezett, AlkalmazottId = x.FelhasznaloId, EmailCim = x.EmailCim, EmailTipusa = x.EmailTipusa, ID = x.ID, }).ToList(); }); } public List GetPhonesCoList(int alkalmazottId) { return Dal.CustomConnection.Run(ConnectionType, h => { var felhasznalo = h.Felhasznalo().Get(alkalmazottId); return felhasznalo.Telefon.Where(x => !x.Torolt).Select(x => new AlkalmazottElerhetosegTelCO { Alapertelmezett = x.Alapertelmezett, AlkalmazottId = x.FelhasznaloId, ID = x.ID, Leiras = x.Leiras, Telefonszam = x.TelefonSzam, TelefonTipusa = x.TelefonTipusa, }).ToList(); }); } public AlkalmazottElerhetosegCimCO GetAlkalmazottCimById(int id) { var co = new AlkalmazottElerhetosegCimCO(); Dal.CustomConnection.Run(ConnectionType, h => { var oCim = h.Cim().Get(id); co.ID = oCim.ID; co.AlkalmazottId = oCim.FelhasznaloId; co.Iranyitoszam = oCim.IranyitoSzam; co.HelysegNev = oCim.Varos; co.KozteruletNev = oCim.Kozterulet; co.KozteruletTipusNev = oCim.KozteruletJellegeNev != null && oCim.KozteruletJellegeNev.Equals("-") ? string.Empty : oCim.KozteruletJellegeNev; co.Hazszam = oCim.Hazszam; co.Emelet = oCim.Emelet; co.Ajto = oCim.Ajto; co.CimTipus = oCim.CimTipusa; co.Orszag = oCim.Orszag; co.Alapertelmezett = oCim.Alapertelmezett; }); return co; } public void AlkalmazottCimMentese(FelhasznaloElerhetosegCimCO adat, int? kovTanevId, bool isKirSzinkron = false) { Dal.CustomConnection.Run(ConnectionType, h => { var cimDal = h.Cim(); if (adat.Alapertelmezett) { cimDal.SetAlapertelmezett(adat.FelhasznaloId, FelhasznaloId, TanevId); } var felhasznaloDal = h.Felhasznalo(); ICim AlkalmazottCim; if (adat.ID.IsEntityId()) { AlkalmazottCim = cimDal.Get(adat.ID.Value); } else { AlkalmazottCim = cimDal.Get(); AlkalmazottCim.TanevId = TanevId; } adat.CimTipus = adat.CimTipus.IsEntityId() ? adat.CimTipus : (int)CimTipusEnum.allando_lakcim; adat.Orszag = adat.Orszag.IsEntityId() ? adat.Orszag : (int)OrszagTipusEnum.Magyarorszag; SetAlkalmazottDataForUpdate(AlkalmazottCim, adat, isKirSzinkron); if (adat.FelhasznaloId.IsEntityId()) { AlkalmazottCim.FelhasznaloId = adat.FelhasznaloId; var alkalmazott = felhasznaloDal.Get(adat.FelhasznaloId); if (adat.ID.IsEntityId()) { var letezoAzonosTipusuCimekSzama = alkalmazott.Cim.Count(x => !x.Torolt && x.CimTipusa == adat.CimTipus && x.ID != AlkalmazottCim.ID); if (letezoAzonosTipusuCimekSzama == 0) { cimDal.Update(AlkalmazottCim); UpdateAlkalmazottCimKovTanev(h, kovTanevId, adat.FelhasznaloId); } else { throw new BlException(ErrorResource.AKivalsztottTipusuCimMarFellettveve); } } else { var azonosTipusuCimekSzama = alkalmazott.Cim.Count(x => !x.Torolt && x.CimTipusa == adat.CimTipus); if (azonosTipusuCimekSzama == 0) { cimDal.Insert(AlkalmazottCim); UpdateAlkalmazottCimKovTanev(h, kovTanevId, adat.FelhasznaloId); } else { throw new BlException(ErrorResource.AKivalsztottTipusuCimMarFellettveve); } } } }); } private void SetAlkalmazottDataForUpdate(ICim alkalmazottCim, FelhasznaloElerhetosegCimCO adat, bool isKirSzinkron) { if (isKirSzinkron) { alkalmazottCim.IranyitoSzam = adat.Iranyitoszam ?? alkalmazottCim.IranyitoSzam; alkalmazottCim.Varos = adat.HelysegNev ?? alkalmazottCim.Varos; alkalmazottCim.Kozterulet = adat.KozteruletNev ?? alkalmazottCim.Kozterulet; alkalmazottCim.KozteruletJellegeNev = adat.KozteruletTipusNev ?? alkalmazottCim.KozteruletJellegeNev; alkalmazottCim.Hazszam = adat.Hazszam ?? alkalmazottCim.Hazszam; alkalmazottCim.Emelet = adat.Emelet ?? alkalmazottCim.Emelet; alkalmazottCim.Ajto = adat.Ajto ?? alkalmazottCim.Ajto; alkalmazottCim.CimTipusa = adat.CimTipus.Value; alkalmazottCim.Orszag = adat.Orszag.Value; alkalmazottCim.Alapertelmezett = adat.Alapertelmezett; } else { alkalmazottCim.IranyitoSzam = adat.Iranyitoszam; alkalmazottCim.Varos = adat.HelysegNev; alkalmazottCim.Kozterulet = adat.KozteruletNev; alkalmazottCim.KozteruletJellegeNev = adat.KozteruletTipusNev; alkalmazottCim.Hazszam = adat.Hazszam; alkalmazottCim.Emelet = adat.Emelet; alkalmazottCim.Ajto = adat.Ajto; alkalmazottCim.CimTipusa = adat.CimTipus.Value; alkalmazottCim.Orszag = adat.Orszag.Value; alkalmazottCim.Alapertelmezett = adat.Alapertelmezett; } } private void UpdateAlkalmazottCimKovTanev(IDalHandler h, int? kovTanevId, int alkalmazottId) { //entityhandler-ben lenne a helye, de a mentés folyamatában a sorrendezés miatt, nem kerülhet még oda if (alkalmazottId > 0 && kovTanevId.HasValue && kovTanevId != TanevId) { h.Alkalmazott().FollowUpAlkalmazottCim(IntezmenyId, TanevId, kovTanevId.Value, alkalmazottId); } } public AlkalmazottElerhetosegTelCO GetAlkalmazottElerhetosegTelById(int id) { var co = new AlkalmazottElerhetosegTelCO(); Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Telefon(); var oTelefon = dal.Get(id); co.ID = oTelefon.ID; co.Alapertelmezett = oTelefon.Alapertelmezett; co.Telefonszam = oTelefon.TelefonSzam; co.AlkalmazottId = oTelefon.FelhasznaloId; co.Leiras = oTelefon.Leiras; co.TelefonTipusa = oTelefon.TelefonTipusa; }); return co; } public void AlkalmazottGondviseloCimTorlese(int id) { Dal.CustomConnection.Run(ConnectionType, h => h.Cim().Delete(id)); } public void AlkalmazottElerhetosegTelTorlese(int id) { Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Telefon(); dal.Delete(id); }); } public bool HasAlkalmazottAlapertelmezettTelefon(int id) { return Dal.CustomConnection.Run(ConnectionType, h => { var felhasznaloDal = h.Felhasznalo(); var alkalmazott = felhasznaloDal.Get(id); return alkalmazott.Telefon.Any(x => x.Alapertelmezett && !x.Torolt); }); } public AlkalmazottElerhetosegEmailCO GetAlkalmazottElerhetosegEmailById(int id) { var co = new AlkalmazottElerhetosegEmailCO(); Dal.CustomConnection.Run(ConnectionType, h => { var oEmail = h.Email().Get(id); co.ID = oEmail.ID; co.Alapertelmezett = oEmail.Alapertelmezett; co.AlkalmazottId = oEmail.FelhasznaloId; co.EmailCim = oEmail.EmailCim; co.EmailTipusa = oEmail.EmailTipusa; }); return co; } public void AlkalmazottElerhetosegEmailTorlese(int id) { Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Email(); dal.Delete(id); }); } public bool HasAlkalmazottAlapertelmezettEmail(int id) { return Dal.CustomConnection.Run(ConnectionType, h => { var felhasznaloDal = h.Felhasznalo(); var alkalmazott = felhasznaloDal.Get(id); return alkalmazott.Email.Any(x => x.Alapertelmezett && !x.Torolt); }); } public void ValidateForDuplicateEntriesAlkalmazottElerhetoseg(int alkalmazottId, T recordValue, ValidateElerhetosegType validateType, int recordType, int? recordID) { Dal.CustomConnection.Run(ConnectionType, handler => { var alkalmazottEntity = handler.Alkalmazott().Get(alkalmazottId); switch (validateType) { case ValidateElerhetosegType.Telefon: if (recordID.HasValue && recordID.Value != 0) { if (alkalmazottEntity.Telefon.Any(x => x.FelhasznaloId <= 0 && x.TelefonSzam.Equals(recordValue) && x.TelefonTipusa == recordType && !x.Torolt && recordID != x.ID)) { throw new BlException(ErrorResource.AMegadottTelefonszamMarRogzitveVan); } } else { if (alkalmazottEntity.Telefon.Any(x => x.FelhasznaloId <= 0 && x.TelefonSzam.Equals(recordValue) && x.TelefonTipusa == recordType && !x.Torolt)) { throw new BlException(ErrorResource.AMegadottTelefonszamMarRogzitveVan); } } break; case ValidateElerhetosegType.Email: if (recordID.HasValue && recordID.Value != 0) { if (alkalmazottEntity.Email.Any(x => x.FelhasznaloId <= 0 && x.EmailCim.Equals(recordValue) && x.EmailTipusa == recordType && !x.Torolt && recordID != x.ID)) { throw new BlException(ErrorResource.AMegadottEmailcimMarRogzitveVan); } } else { if (alkalmazottEntity.Email.Any(x => x.FelhasznaloId <= 0 && x.EmailCim.Equals(recordValue) && x.EmailTipusa == recordType && !x.Torolt)) { throw new BlException(ErrorResource.AMegadottEmailcimMarRogzitveVan); } } break; } }); } public TovabbiMunkaugyiAdatokCO GetTovabbiMunkaugyiAdatokAdatai(int modelId) { var co = new TovabbiMunkaugyiAdatokCO(); Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.TovabbiMunkaugyiAdatok(); var oTovabbiMunkaugyiAdatok = dal.Get(modelId); co.MunkaidoKedvezmenyOka = oTovabbiMunkaugyiAdatok.MunkaidoKedvezmenyOka; co.ID = oTovabbiMunkaugyiAdatok.ID; co.AlkalmazottId = oTovabbiMunkaugyiAdatok.AlkalmazottId; co.KotelezoOraszam = oTovabbiMunkaugyiAdatok.KotelezoOraszam; co.MunkaidoKedvezmenyOraszam = oTovabbiMunkaugyiAdatok.MunkaidoKedvezmenyOraszam; if (oTovabbiMunkaugyiAdatok.BesorolasiFokozat.HasValue) { co.BesorolasiFokozat = oTovabbiMunkaugyiAdatok.BesorolasiFokozat; } else { co.BesorolasiFokozat = (int)BesorolasiFokozatTipusEnum.na; } co.MunkaKor = oTovabbiMunkaugyiAdatok.MunkakorTipusa; co.FoglalkoztatasModja = oTovabbiMunkaugyiAdatok.MunkaviszonyTipusa; co.AlkalmazasKezdete = oTovabbiMunkaugyiAdatok.AlkalmazasKezdete; co.AlkalmazasVege = oTovabbiMunkaugyiAdatok.AlkalmazasMegszunese; co.FeladatellatasiHely = oTovabbiMunkaugyiAdatok.FeladatEllatasiHelyId; co.Nyugdijas = oTovabbiMunkaugyiAdatok.Nyugdijas; co.FoglalkoztatasTipusa = oTovabbiMunkaugyiAdatok.FoglalkoztatasTipus; co.ReszmunkaidosSzazalek = oTovabbiMunkaugyiAdatok.ReszmunkaidoSzazalek; co.VezetoiOraszamOka = oTovabbiMunkaugyiAdatok.VezetoiOraszamok; }); return co; } public InfoTovabbiMunkaugyiAdatokPopUpCO GetTovabbiMunkaugyiAdatokAdataiForInfoWindow(int modelId) { var co = new InfoTovabbiMunkaugyiAdatokPopUpCO(); Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.TovabbiMunkaugyiAdatok(GridParameters); var oTovabbiMunkaugyiAdatok = dal.Get(modelId); co.ID = oTovabbiMunkaugyiAdatok.ID; co.AlkalmazottId = oTovabbiMunkaugyiAdatok.AlkalmazottId; co.KotelezoOraszam = oTovabbiMunkaugyiAdatok.KotelezoOraszam; co.MunkaidoKedvezmenyOraszam = oTovabbiMunkaugyiAdatok.MunkaidoKedvezmenyOraszam; if (oTovabbiMunkaugyiAdatok.BesorolasiFokozat.HasValue) { co.PedagogusFokozat = oTovabbiMunkaugyiAdatok.BesorolasiFokozat; } else { co.PedagogusFokozat = (int)BesorolasiFokozatTipusEnum.na; } co.MunkaKor = oTovabbiMunkaugyiAdatok.MunkakorTipusa; co.FoglalkoztatasiJogviszony = oTovabbiMunkaugyiAdatok.MunkaviszonyTipusa; co.AlkalmazasKezdete = oTovabbiMunkaugyiAdatok.AlkalmazasKezdete; co.AlkalmazasVege = oTovabbiMunkaugyiAdatok.AlkalmazasMegszunese; co.FeladatellatasiHely = oTovabbiMunkaugyiAdatok.FeladatEllatasiHely.MukodesiHely.Nev; co.Nyugdijas = oTovabbiMunkaugyiAdatok.Nyugdijas; co.MunkaidoKedvezmenyOka = oTovabbiMunkaugyiAdatok.MunkaidoKedvezmenyOka; co.FoglalkoztatasTipusa = oTovabbiMunkaugyiAdatok.FoglalkoztatasTipus; }); return co; } public void CreateOrUpdateTovabbiMunkaugyiAdatok(TovabbiMunkaugyiAdatokCO data, bool isKlebelsbergKozpontOrNSZFH, bool isNszfhUjSzkt) { Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.TovabbiMunkaugyiAdatok(); var ujMunkaugyi = true; ITovabbiMunkaugyiAdatok munkaugyiDto; if (data.ID > 0) { ujMunkaugyi = false; munkaugyiDto = dal.Get(data.ID); } else { munkaugyiDto = dal.Get(); } munkaugyiDto.AlkalmazottId = data.AlkalmazottId.Value; if (!(isKlebelsbergKozpontOrNSZFH && data.FoglalkoztatasTipusa == (int)FoglalkoztatasTipusaEnum.Oraado) && data.MunkaidoKedvezmenyOraszam.HasValue) { munkaugyiDto.MunkaidoKedvezmenyOraszam = data.MunkaidoKedvezmenyOraszam.Value; } munkaugyiDto.Nyugdijas = data.Nyugdijas; if (data.MunkaKor.HasValue) { munkaugyiDto.MunkakorTipusa = (int)data.MunkaKor; } else { munkaugyiDto.MunkakorTipusa = (int)MunkakorTipusEnum.na; } munkaugyiDto.MunkaviszonyTipusa = data.FoglalkoztatasModja ?? (int)MunkaviszonyTipusEnum.na; if (data.AlkalmazasKezdete.HasValue && data.AlkalmazasVege.HasValue) { if (data.AlkalmazasKezdete < data.AlkalmazasVege) { munkaugyiDto.AlkalmazasKezdete = data.AlkalmazasKezdete; munkaugyiDto.AlkalmazasMegszunese = data.AlkalmazasVege; } else { throw new BlException(ErrorResource.AlkalmazasKezdeteDatumNemLehetNagyobbMintAVege); } } else { munkaugyiDto.AlkalmazasKezdete = data.AlkalmazasKezdete; munkaugyiDto.AlkalmazasMegszunese = data.AlkalmazasVege; } if (!(isKlebelsbergKozpontOrNSZFH && data.FoglalkoztatasTipusa == (int)FoglalkoztatasTipusaEnum.Oraado)) { munkaugyiDto.MunkaidoKedvezmenyOka = data.MunkaidoKedvezmenyOka; } munkaugyiDto.BesorolasiFokozat = data.BesorolasiFokozat; if (data.FoglalkoztatasTipusa.HasValue) { munkaugyiDto.FoglalkoztatasTipus = data.FoglalkoztatasTipusa; } if (data.FeladatellatasiHely.HasValue && data.FeladatellatasiHely.Value != munkaugyiDto.FeladatEllatasiHelyId) { var feladatellatasiHely = h.FeladatEllatasiHelyDal(GridParameters).Get(data.FeladatellatasiHely.Value); munkaugyiDto.FeladatEllatasiHely = feladatellatasiHely; } if (data.VezetoiOraszamOka.HasValue) { munkaugyiDto.VezetoiOraszamok = data.VezetoiOraszamOka; } else { throw new BlException(isNszfhUjSzkt ? ErrorResource.VezetoiMegbizasMegadasaKotelezo : ErrorResource.VezetoiOraszamOkaMegadasaKotelezo); } if ((isKlebelsbergKozpontOrNSZFH && data.FoglalkoztatasTipusa.HasValue && data.FoglalkoztatasTipusa.Value == (int)FoglalkoztatasTipusaEnum.Oraado) || data.VezetoiOraszamOka.Value != (int)VezetoiOraszamokTipusEnum.Nincs || !isKlebelsbergKozpontOrNSZFH) { if (data.KotelezoOraszam.HasValue) { munkaugyiDto.KotelezoOraszam = data.KotelezoOraszam.Value; } else { throw new BlException(ErrorResource.AKotelezoOraszamMezoMegadasaKotelezoAMunkaugyiAdatokTabFulon); } munkaugyiDto.MunkaidoKedvezmenyOka = data.MunkaidoKedvezmenyOka; munkaugyiDto.MunkaidoKedvezmenyOraszam = data.MunkaidoKedvezmenyOraszam; } if (isKlebelsbergKozpontOrNSZFH && data.FoglalkoztatasTipusa.HasValue && data.FoglalkoztatasTipusa.Value == (int)FoglalkoztatasTipusaEnum.Reszmunkaidos) { if (data.ReszmunkaidosSzazalek.HasValue) { munkaugyiDto.ReszmunkaidoSzazalek = data.ReszmunkaidosSzazalek; } else { throw new BlException(ErrorResource.AReszmunkaidoSzazalekMezoMegadasaKotelezoAMunkaugyiAdatokTabFulon); } } if (data.FoglalkoztatasTipusa.HasValue && data.FoglalkoztatasTipusa.Value != (int)FoglalkoztatasTipusaEnum.Oraado && data.VezetoiOraszamOka.HasValue && data.VezetoiOraszamOka.Value == (int)VezetoiOraszamokTipusEnum.Nincs) { munkaugyiDto.KotelezoOraszam = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h)).GetSystemSettingValue(RendszerBeallitasTipusEnum.Egy_statuszra_juto_kotelezo_oraszam); } if (!data.MunkaidoKedvezmenyOka.HasValue) { munkaugyiDto.MunkaidoKedvezmenyOraszam = null; } munkaugyiDto.TanevId = TanevId; if (ujMunkaugyi) { dal.Insert(munkaugyiDto); } else { dal.Update(munkaugyiDto); } }); } public DataSet GetTovabbiMunkaugyiAdatokGrid(int tanarId) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.TovabbiMunkaugyiAdatok(GridParameters); return dal.GetTovabbiMunkaugyiAdatokGrid(tanarId); }); } public string GetAlkalmazottNevById(int id) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(); return dal.GetAlkalmazottNevById(id, TanevId, IntezmenyId); }); } public bool IsKozossegiSzolgalatKezelo() { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(); return dal.IsKozossegiSzolgalatKezelo(FelhasznaloId, TanevId); }); } public bool IsPortasMunkakor() { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(); var result = dal.IsPortasMunkakor(FelhasznaloId, TanevId); return result; }); } public bool IsLEPKezelo() { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(); return dal.IsLEPKezelo(FelhasznaloId, TanevId); }); } public bool IsAlkalmazottPedagogus() { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(); var isAlkalmazottPedagogus = dal.IsAlkalmazottPedagogus(IntezmenyId, TanevId, FelhasznaloId); return isAlkalmazottPedagogus; }); } public KirAlkalmazottAlapadatok GetAlkalmazottAlapadatok(int id) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(); return dal.GetAlkalmazottAlapadatok(id, TanevId, IntezmenyId); }); } public string GetAlkalmazottSztszKod(int alkalmazottId) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(); return dal.Get(alkalmazottId).SZTSZKod; }); } public KirAlkalmazottMunkaugyiAdatok GetAlkalmazottElsodlegesMunkaugyiAdatok(int id) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(); return dal.GetAlkalmazottElsodlegesMunkaugyiAdatok(id, TanevId); }); } #region Export helpers public DataSet GetAlkalmazottakLakcimmelExport(AlkalmazottSearchCo co, bool isShowId = false) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(); var dataSet = dal.GetAlkalmazottakLakcimmelExcelExport(TanevId, co.ConvertToPco(), isShowId); var dataTable = dataSet.Tables[0]; dataTable.Columns.Remove("NeveElotagNelkul"); return dataSet; }); } public MemoryStream GetAlkalmazottakLakcimmelExcelExport(AlkalmazottSearchCo co) { var dataSet = GetAlkalmazottakLakcimmelExport(co); var dataTable = dataSet.Tables[0]; ExportLogic.TryCreateHeaderIfNotExist(dataTable); var stream = new MemoryStream(); using (var excel = new ExcelPackage(stream)) { var workSheet = excel.Workbook.Worksheets.Add(AlkalmazottResource.AlkalmazottakLakcimmel); workSheet.Cells[1, 1].LoadFromDataTable(dataTable, true); ExportLogic.SetHeaderStyles(workSheet.Cells[1, 1, 1, dataTable.Columns.Count]); workSheet.Column(3).Style.Numberformat.Format = SDAFormat.ShortDate; workSheet.Cells.AutoFitColumns(); excel.Save(); } stream.Position = 0; return stream; } public MemoryStream GetAlkalmazottakMunkaugyiAdataiExcelExport(bool isKlebersbergOrNSZFH, AlkalmazottSearchCo co, IKozpontiKretaHelper kozpontiKretaHelper, bool isSelectedTanev21_22OrLater = false) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(); var dataSet = dal.GetAlkalmazottakMunkaugyiAdataiExcelExport(TanevId, isKlebersbergOrNSZFH, IntezmenyId, IntezmenyAzonosito, co.ConvertToPco(), isSelectedTanev21_22OrLater); var dataTable = dataSet.Tables[0].ConnectDictionaryColumns(); ExportLogic.TryCreateHeaderIfNotExist(dataTable); //NOTE: Datatable oszlopnevei hogy ne kelljen beégetni var columnNames = dataTable.Columns.Cast() .Select(x => x.ColumnName) .ToArray(); var stream = new MemoryStream(); dataTable = dataTable.AsEnumerable().OrderBy(x => x.Field(FelhasznalokResource.AlkalmazottTeljesNeve)).ThenBy(e => e.Field(columnNames[0])).ThenBy(e => e.Field(columnNames[1])).CopyToDataTable(); ReplaceKotelezoOraszamFromKTR(dataTable, kozpontiKretaHelper); using (var excel = new ExcelPackage(stream)) { var workSheet = excel.Workbook.Worksheets.Add(AlkalmazottResource.AlkalmazottakMunkaugyiAdatai); dataTable.Columns.Remove(columnNames[0]); dataTable.Columns.Remove(columnNames[1]); workSheet.Cells[1, 1].LoadFromDataTable(dataTable, true); ExportLogic.SetHeaderStyles(workSheet.Cells[1, 1, 1, dataTable.Columns.Count]); ExportLogic.SetRowColorAlternate(workSheet, dataTable.Rows.Count); workSheet.Cells.AutoFitColumns(); if (isKlebersbergOrNSZFH) { //Fontos a dataTable-ben visszaadott oszlopok sorszáma!!! Jelenleg a 15 = 'Pedagógus heti óraszáma' CustomEnvironmentMethods.Klebersberg.DeleteColumnFromWorksheet(workSheet, 15); } excel.Save(); } stream.Position = 0; return stream; }); } public MemoryStream GetAlkalmazottakSzemelyiAdataiExcelExport(AlkalmazottSearchCo co) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(); var dataSet = dal.GetAlkalmazottakSzemelyiAdataiExcelExport(TanevId, co.ConvertToPco()); var dataTable = dataSet.Tables[0]; ExportLogic.TryCreateHeaderIfNotExist(dataTable); var stream = new MemoryStream(); using (var excel = new ExcelPackage(stream)) { var workSheet = excel.Workbook.Worksheets.Add(AlkalmazottResource.AlkalmazottakSzemelyiAdatai); workSheet.Cells[1, 1].LoadFromDataTable(dataTable, true); ExportLogic.SetHeaderStyles(workSheet.Cells[1, 1, 1, dataTable.Rows.Count]); workSheet.Column(12).Style.Numberformat.Format = SDAFormat.ShortDate; workSheet.Cells.AutoFitColumns(); excel.Save(); } stream.Position = 0; return stream; }); } #endregion Export helpers public void UpdateIktSzandeknyilatkozat(int tanarId, bool isElfogadottSzandeknyilatkozat) { Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.Alkalmazott(); var alkalmazott = dal.Get(tanarId); alkalmazott.ElfogadottSzandeknyilatkozat = isElfogadottSzandeknyilatkozat; dal.Update(alkalmazott); }); } public DataSet TanevValtasAlkalmazottTorlesKereses() { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(GridParameters); return dal.TanevValtasAlkalmazottTorlesKereses(TanevId); }); } public List GetAlkalmazottIds(int? alkalmazottFilterId) { var result = new List(); Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(); var ds = dal.GetAlkalmazottakForTavolletjelento(alkalmazottFilterId, TanevId, IntezmenyId); foreach (DataRow row in ds.Tables[0].Rows) { result.Add(row.Field("ID")); } }); return result; } public Dictionary GetAllAlkalmazott(int? alkalmazottFilterId, bool isNemCsakFointezmenyesek, bool isOktatasiAzonositoval) { var result = new Dictionary(); Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(GridParameters); DataSet ds = null; if (isNemCsakFointezmenyesek) { ds = dal.GetAlkalmazottak(TanevId, alkalmazottFilterId.HasValue ? new List { alkalmazottFilterId.Value } : null); } else { ds = dal.GetAlkalmazottakForTavolletjelento(alkalmazottFilterId, TanevId, IntezmenyId); } foreach (DataRow row in ds.Tables[0].Rows) { result.Add( row.Field("ID").ToString(), !isOktatasiAzonositoval ? row.Field("Nev") : string.Format("{0} ({1})", row.Field("Nev"), row.Field("OktatasiAzonosito")) ); } }); return result; } public Dictionary GetAllAlkalmazottByIntezmeny(bool isOktatasiAzonositoval, int tanevId) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var result = new Dictionary(); var ds = h.Alkalmazott().GetAllAlkalmazottByIntezmeny(IntezmenyId, tanevId); foreach (var row in ds.Tables[0].AsEnumerable()) { result.Add(row.Field("IdpEgyediAzonosito").ToString(), !isOktatasiAzonositoval ? row.Field("Nev") : string.Format("{0} ({1})", row.Field("Nev"), row.Field("OktatasiAzonosito"))); } return result; }); } public IDictionary GetAlkalmazottak() { var result = Dal.CustomConnection.Run(ConnectionType, h => LogicUtil.CreateDropdownContent(h.Alkalmazott().GetAlkalmazottak(TanevId), "ID", "Nev", null, false)); return result; } public DataSet GetAlkalmazottNeveEsEmailCime(int? emailTipus, IList vezetoOraszamOkok, int? userId) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(GridParameters); return dal.GetAlkalmazottNeveEsEmailCime(TanevId, emailTipus, vezetoOraszamOkok, userId); }); } public bool HasSZTSZKOD(int alkalmazottId) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(); return dal.HasSZTSZKOD(alkalmazottId, TanevId); }); } public bool IsIgazgatoOrHasTTF(int alkalmazottId) { return IsIgazgato(alkalmazottId) || HasTTF(alkalmazottId); } public bool IsIgazgato(int alkalmazottId) { var ds = GetAlkalmazottNeveEsEmailCime(null, new List { (int)VezetoiOraszamokTipusEnum.igazgato }, alkalmazottId); return ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0; } public bool HasTTF(int alkalmazottId) { var list = new TantargyFelosztasHelper(ConnectionType).GetTantargyFelosztasCoList(new TantargyFelosztasKeresesCo { Tanar = alkalmazottId }); return list.Count > 0; } public bool HasValidMunkaviszony(int alkalmazottId) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(); return dal.HasValidMunkaviszony(alkalmazottId, TanevId); }); } public Dictionary GetAlkalmazottIDTavolletAlkalmazott(IList alkalmazottIds) { var result = new Dictionary(); Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(); var ds = dal.GetAlkalmazottIDTavolletAlkalmazott(alkalmazottIds, null); foreach (DataRow row in ds.Tables[0].Rows) { result.Add(row.Field("ID"), new TavolletAlkalmazottCo { AlkalmazottGuid = Guid.Parse(row.Field("C_EGYEDIAZONOSITO")), AlkalmazottNev = row.Field("C_NYOMTATASINEV"), AlkalmazottSzTSz = row.Field("C_SZTSZKOD"), FunkcioTerulet = row.Field("C_FUNKCIOTERULET"), }); } }); return result; } public Dictionary GetAlkalmazottSztszAzonositoTavolletAlkalmazott(IList alkalmazottSztszAzonositok) { var result = new Dictionary(); Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(); var ds = dal.GetAlkalmazottIDTavolletAlkalmazott(null, alkalmazottSztszAzonositok); foreach (DataRow row in ds.Tables[0].Rows) { var sztsz = row.Field("C_SZTSZKOD"); if (result.ContainsKey(sztsz)) { result[sztsz].AlkalmazottNev += $", {row.Field("C_NYOMTATASINEV")}"; continue; } result.Add(sztsz, new TavolletAlkalmazottCo { AlkalmazottGuid = Guid.Parse(row.Field("C_EGYEDIAZONOSITO")), AlkalmazottNev = row.Field("C_NYOMTATASINEV"), AlkalmazottSzTSz = row.Field("C_SZTSZKOD"), FunkcioTerulet = row.Field("C_FUNKCIOTERULET"), }); } }); return result; } public string GetSZTSZKOD(int felhasznaloId) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(); return dal.GetSZTSZKOD(felhasznaloId, TanevId); }); } public int GetAlkalmazottIdByGUID(string alkalmazottGuid) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.Alkalmazott(); return dal.GetAlkalmazottIdByGUID(alkalmazottGuid, TanevId, IntezmenyId); }); } public List GetAlkalmazottCoList(AlkalmazottSearchCo searchCo = null) { var dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Alkalmazott().GetAlkalmazottData(TanevId)); var result = new List(); foreach (DataRow dataRow in dataSet.Tables[0].Rows) { var item = new AlkalmazottItemCo(dataRow, true); result.Add(item); } #region Filtering if (searchCo != null) { if (searchCo.FeladatEllatasiHelyId.HasValue || searchCo.SearchPedagogusFokozat.HasValue || !string.IsNullOrWhiteSpace(searchCo.SearchNyugdijas) || searchCo.NABesorolasiFokozat == true || searchCo.NincsMunkakor == true || searchCo.NincsFoglalkoztatasModja == true || searchCo.NemCsillagosMunkakor == true || searchCo.NemBelepettAlkalmazottKetHet == true || searchCo.NincsBelepesAlkalmazott == true || searchCo.NincsEmail == true || searchCo.AktivAlkalmazottak == true) { result = result.Where(x => x.MunkaugyiAdatokId.IsEntityId() && (!x.AlkalmazasKezdeteDate.HasValue || x.AlkalmazasKezdeteDate <= DateTime.Now) && (!x.AlkalmazasMegszuneseDate.HasValue || x.AlkalmazasMegszuneseDate >= DateTime.Now)).ToList(); } if (searchCo.NincsAlkalmazottSZTSZ == true) { result = result.Where(x => x.IsBetoltetlenAllashely == false && x.MunkakorTipusId != (int)MunkakorTipusEnum.KulsoGyakorlatiHely && x.MunkakorTipusId != (int)MunkakorTipusEnum.Hittanoktato && !x.FelhasznaloNyomtatasiNev.StartsWith("[")).ToList(); } if (searchCo.NincsEmail == true) { result = result.Where(x => string.IsNullOrWhiteSpace(x.AlapertelmezettEmailCim)).ToList(); } if (searchCo.NincsBelepesAlkalmazott == true) { result = result.Where(x => string.IsNullOrWhiteSpace(x.BejelentkezesiNev)).ToList(); } if (searchCo.NemBelepettAlkalmazottKetHet == true) { result = result.Where(x => x.UtolsoBelepes == null || x.UtolsoBelepes <= DateTime.Now.AddDays(-14)).ToList(); } if (!string.IsNullOrWhiteSpace(searchCo.Nev)) { result = result.Where(x => x.FelhasznaloNyomtatasiNevComparableString.Contains(searchCo.Nev.ToComparableString())).ToList(); } if (!string.IsNullOrWhiteSpace(searchCo.SzuletesiHely.ReplaceMultipleSpacesAndTrim())) { result = result.Where(x => x.FelhasznaloSzuletesiHely.Contains(searchCo.SzuletesiHely.ToComparableString())).ToList(); } if (searchCo.NANem == true) { result = result.Where(x => ( !x.NemeId.IsEntityId() || x.NemeId == (int)NemEnum.NA) && !x.FelhasznaloNyomtatasiNev.ToComparableString().StartsWith("[ho") && !x.FelhasznaloNyomtatasiNev.ToComparableString().StartsWith("[bta")).ToList(); } else if (searchCo.Nem.HasValue) { result = result.Where(x => x.NemeId == searchCo.Nem).ToList(); } if (searchCo.SzuletesiDatumTol.HasValue) { result = result.Where(x => x.FelhasznaloSzuletesiIdo >= searchCo.SzuletesiDatumTol).ToList(); } if (searchCo.SzuletesiDatumIg.HasValue) { result = result.Where(x => x.FelhasznaloSzuletesiIdo <= searchCo.SzuletesiDatumIg).ToList(); } if (!string.IsNullOrWhiteSpace(searchCo.OktatasiAzonosito)) { var oktatasiAzonosito = searchCo.OktatasiAzonosito.Replace("_", string.Empty); result = result.Where(x => !string.IsNullOrWhiteSpace(x.FelhasznaloOktatasiAzonositoComparableString) && x.FelhasznaloOktatasiAzonositoComparableString.StartsWith(oktatasiAzonosito.ToComparableString())).ToList(); } if (searchCo.NABesorolasiFokozat == true) { result = result.Where(x => x.BesorolasiFokozatTipusId == (int)BesorolasiFokozatTipusEnum.na).ToList(); } else if (searchCo.SearchPedagogusFokozat.HasValue) { result = result.Where(x => x.BesorolasiFokozatTipusId == searchCo.SearchPedagogusFokozat).ToList(); } if (searchCo.NincsMunkakor == true) { result = result.Where(x => x.MunkakorTipusId == (int)MunkakorTipusEnum.na).ToList(); } if (searchCo.NemCsillagosMunkakor == true) { var csillagosMunkakorok = new List { MunkakorTipusEnum.AltalAnosIskolaiTanar, MunkakorTipusEnum.gimnaziumi_tanar, MunkakorTipusEnum.szakmai_elmeleti_tantargyat_oktato_tanar, MunkakorTipusEnum.szakmai_tanar_szakoktato_gyakorlati_oktato, MunkakorTipusEnum.kollegiumi_nevelotanar, MunkakorTipusEnum.konyvtarostanar_tanito, MunkakorTipusEnum.Iskolapszichologus, MunkakorTipusEnum.FejlesztoPedagogus, MunkakorTipusEnum.gyogypedagogus, MunkakorTipusEnum.kozismereti_tantargyat_nemzetisegi_nyelven_oktato_tanar, MunkakorTipusEnum.idegennyelvtanar, MunkakorTipusEnum.testnevelo, MunkakorTipusEnum.enekzene_tanar, MunkakorTipusEnum.kozismereti_tantargyat_oktato_kozepiskolai_tanar, MunkakorTipusEnum.kozismereti_tantargyat_oktato_tanar_szakkozepiskola, MunkakorTipusEnum.KulsoGyakorlatiHely, MunkakorTipusEnum.iskolatitkar, MunkakorTipusEnum.gondozono_es_takarito, MunkakorTipusEnum.laborans, MunkakorTipusEnum.konyvtaros, MunkakorTipusEnum.gyermek_es_ifjusagvedelmi_felelos, MunkakorTipusEnum.pedagogiai_asszisztens, MunkakorTipusEnum.gyogypedagogiai_asszisztens, MunkakorTipusEnum.szabadido_szervezo, MunkakorTipusEnum.pszichopedagogus, MunkakorTipusEnum.muszaki_vezeto, MunkakorTipusEnum.apolo, MunkakorTipusEnum.uszomester, MunkakorTipusEnum.rendszergazda, MunkakorTipusEnum.munkaugyi_szemelyzeti_eloado, MunkakorTipusEnum.gazdasagi_dolgozo, MunkakorTipusEnum.muszaki_dolgozo, MunkakorTipusEnum.oktatastechnikus, MunkakorTipusEnum.ugyviteli_gepkezelo, MunkakorTipusEnum.ugyviteli_dolgozo, MunkakorTipusEnum.kisegito_dolgozo }.Cast().ToList(); result = result.Where(x => x.MunkakorTipusId.HasValue && !csillagosMunkakorok.Contains(x.MunkakorTipusId.Value)).ToList(); } if (searchCo.NincsFoglalkoztatasModja == true) { result = result.Where(x => x.MunkaviszonyTipusId == (int)MunkaviszonyTipusEnum.na).ToList(); } if (searchCo.FeladatEllatasiHelyId.IsEntityId()) { result = result.Where(x => x.FeladatellatasihelyId == searchCo.FeladatEllatasiHelyId).ToList(); } if (!string.IsNullOrWhiteSpace(searchCo.SearchNyugdijas)) { var isNyugdijas = Convert.ToBoolean(Convert.ToInt16(searchCo.SearchNyugdijas)); result = result.Where(x => x.IsNyugdijas == isNyugdijas).ToList(); } if (searchCo.TanitottOsztalyId.IsEntityId()) { var tantargyfelosztasItemCoList = new TantargyFelosztasHelper(ConnectionType).GetTantargyfelosztasCoList(osztalyCsoportId: searchCo.TanitottOsztalyId); var tanitottOsztalyTanarIdList = tantargyfelosztasItemCoList.Select(x => x.TanarId).Distinct().ToList(); result = result.Where(x => tanitottOsztalyTanarIdList.Contains(x.Id)).ToList(); } if (!string.IsNullOrWhiteSpace(searchCo.Foallas)) { var isFoallas = Convert.ToBoolean(Convert.ToInt16(searchCo.Foallas)); result = result.Where(x => x.IsFoallas == isFoallas).ToList(); } if (searchCo.NincsAlkalmazottSZTSZ == true) { result = result.Where(x => x.SztszKod == null).ToList(); } if (!string.IsNullOrWhiteSpace(searchCo.SzervezetNev)) { result = result.Where(x => x.SzervezetNeve.ToUpper().Contains(searchCo.SzervezetNev.ToUpper())).ToList(); } if (!string.IsNullOrWhiteSpace(searchCo.SzervezetAzonosito)) { result = result.Where(x => x.SzervezetAzonositoja.ToUpper().Contains(searchCo.SzervezetAzonosito.ToUpper())).ToList(); } if (searchCo.IsFromSzervezet) { if (searchCo.SzervezetId.IsEntityId()) { result = result.Where(x => x.SzervezetId == searchCo.SzervezetId).ToList(); } else { result = result.Where(x => x.SzervezetId.IsEntityId()).ToList(); } } else { result = result.Where(x => !x.SzervezetId.IsEntityId()).ToList(); } } #endregion Filtering return result; } public List GetAlkalmazottCoListBySzervezet(int? szervezetTipus = null, int? szervezetId = null) { var dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Alkalmazott().GetAlkalmazottData(TanevId)); var result = new List(); foreach (DataRow dataRow in dataSet.Tables[0].Rows) { var item = new AlkalmazottItemCo(dataRow, true); if (item.SzervezetId.Equals(szervezetId)) { result.Add(item); } } return result; } public List GetEszkozIRTanarokExcel() { var dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Alkalmazott().GetEszkozIgenylesAlkalmazottakExportData(TanevId, true)); var result = new List(); foreach (DataRow dataRow in dataSet.Tables[0].Rows) { var item = new EszkozIgenylesItemCo(dataRow); if (!result.Any(x => x.Id == item.Id) && item.HasTanarAlkalmazottMunkakorTipus && Constants.FeltarAlkalmazottEszkozigenylesMunkakorTipusList.Contains(item.MunkakorTipusaId)) { result.Add(item); } } return result; } public List GetEszkozIRNemTanarokExcel() { var dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Alkalmazott().GetEszkozIgenylesAlkalmazottakExportData(TanevId, true)); var result = new List(); foreach (DataRow dataRow in dataSet.Tables[0].Rows) { var item = new EszkozIgenylesItemCo(dataRow); if (!result.Any(x => x.Id == item.Id) && !item.HasTanarAlkalmazottMunkakorTipus || (item.HasTanarAlkalmazottMunkakorTipus && !Constants.FeltarAlkalmazottEszkozigenylesMunkakorTipusList.Contains(item.MunkakorTipusaId))) { result.Add(item); } } return result; } public List GetEszkozIRAlkalmazottakFelhasznaloVagyNaploNelkulExcel() { var dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Alkalmazott().GetEszkozIgenylesAlkalmazottakExportData(TanevId, true)); var result = new List(); foreach (DataRow dataRow in dataSet.Tables[0].Rows) { var item = new EszkozIgenylesItemCo(dataRow); if (!result.Any(x => x.Id == item.Id) && item.HasTanarAlkalmazottMunkakorTipus && Constants.FeltarAlkalmazottEszkozigenylesMunkakorTipusList.Contains(item.MunkakorTipusaId) && (!item.HasBelepes || !item.HasNaploSzerepkor)) { result.Add(item); } } return result; } public List GetEszkozIRNemRegisztraltTanarokExcel() { var dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Alkalmazott().GetEszkozIgenylesAlkalmazottakExportData(TanevId, true)); var result = new List(); foreach (DataRow dataRow in dataSet.Tables[0].Rows) { var item = new EszkozIgenylesItemCo(dataRow); if (!result.Any(x => x.Id == item.Id) && item.HasTanarAlkalmazottMunkakorTipus && Constants.FeltarAlkalmazottEszkozigenylesMunkakorTipusList.Contains(item.MunkakorTipusaId) && !item.HasEszkozIgenyles) { result.Add(item); } } return result; } public List GetEszkozIRRegisztraltTanarokExcel() { var dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Alkalmazott().GetEszkozIgenylesAlkalmazottakExportData(TanevId, false)); var result = new List(); foreach (DataRow dataRow in dataSet.Tables[0].Rows) { var item = new EszkozIgenylesItemCo(dataRow); if (!result.Any(x => x.Id == item.Id) && item.HasTanarAlkalmazottMunkakorTipus && item.HasEszkozIgenyles) { result.Add(item); } } return result; } public List GetTelefonszamItemCoList(int alkalmazottId) { var ret = new List(); var ds = GetTelefonSzam(alkalmazottId); foreach (var item in ds.Tables[0].AsEnumerable()) { ret.Add(new AlkalmazottElerhetosegTelCO { Alapertelmezett = item.Field("Alapertelmezett_BOOL"), AlkalmazottId = alkalmazottId, ID = item.Field("ID"), Telefonszam = item.Field("TelefonSzam"), TelefonTipusa = item.Field("Tipus"), }); } return ret; } public bool IsTeljesNevTulHosszu(string teljesNev) { return CommonUtilsDal.KopaszNev(teljesNev).Length > Core.Constants.General.CsaladiEsUtonevEgyuttMaxLength; } public bool AnyKozpontilagSzinkorizaltAlkalmazottFromList(List alkalmazottIdList) { var result = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Alkalmazott().AnyKozpontilagSzinkorizaltAlkalmazottFromList(alkalmazottIdList, TanevId)); return result; } public void SaveAlkalmazottBankszamlaAdatok(int alkalmazottId, BankszamlaCo bankszamlaCo) { Dal.CustomConnection.Run(ConnectionType, h => { var alkalmazottDal = h.Alkalmazott(); var alkalmazott = alkalmazottDal.Get(alkalmazottId); var bankszamlaszam = new StringBuilder(bankszamlaCo.BankszamlaSzam); bankszamlaszam.Replace("-", "").Replace(" ", ""); h.Felhasznalo().SaveBankszamlaAdatok(false, alkalmazottId, bankszamlaszam.ToString(), bankszamlaCo.BankszamlaTulajdonos, bankszamlaCo.BankszamlaTulajdonosNeve.ReplaceMultipleSpacesAndTrim(), alkalmazottId); var subject = EmailResource.BankszamlaAdatokModositasSubject; string emailcim; Guid? emailGuid; var intezmenyCo = new IntezmenyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetAktivIntezmenyNevCim(); var intezmenyUrl = CommonUtils.GetIntezmenyUrl(IntezmenyAzonosito); var intezmenyNev = intezmenyCo.Nev; var intezmenyCim = intezmenyCo.IntezmenyCim; var message = string.Format(EmailResource.BankszamlaAdatokModositasTanuloContent, alkalmazott.NyomtatasiNev, bankszamlaCo.BankszamlaSzam, bankszamlaCo.SzamlavezetoBank, bankszamlaCo.BankszamlaTulajdonos.GetDisplayName(TanevId), bankszamlaCo.BankszamlaTulajdonosNeve, intezmenyUrl, intezmenyNev, intezmenyCim); var email = alkalmazott.Email.SingleOrDefault(e => e.Alapertelmezett && !e.Torolt && !e.IsHibasanMegadva); if (email != default) { emailcim = email.EmailCim; emailGuid = email.Guid; new UzenetekHelper(new DalHandlerConnectionType(ConnectionType, h)).EmailKuldes(message, subject, emailcim, emailGuid); } }); } public void SaveAlkalmazottNyugdijAdatok(MentoriNyugdijCo mentoriNyugdijCo, bool isKlebelsbergKozpontOrNSZFH, bool isNszfhUjSzkt) { if (mentoriNyugdijCo.MunkaugyiAdatId.HasValue) { Dal.CustomConnection.Run(ConnectionType, h => { var munkaugyiAdatDal = h.AlkalmazottMunkaugyiAdatokDal(); var alkalmazottmunkaugyiAdat = munkaugyiAdatDal.Get(mentoriNyugdijCo.MunkaugyiAdatId.Value); alkalmazottmunkaugyiAdat.IsNyugdijas = mentoriNyugdijCo.IsNyugdijas; alkalmazottmunkaugyiAdat.NyugdijKezdet = mentoriNyugdijCo.NyugdijKezdet; alkalmazottmunkaugyiAdat.NyugdijTipus = mentoriNyugdijCo.NyugdijTipusId; munkaugyiAdatDal.FullUpdate(alkalmazottmunkaugyiAdat); }); } } private void ReplaceKotelezoOraszamFromKTR(DataTable dataTable, IKozpontiKretaHelper kozpontiKretaHelper) { var alkalmazottLista = dataTable.AsEnumerable().Select(e => e.Field("FelhasznaloId")).ToList(); var kotelezoOraszamokResponse = kozpontiKretaHelper.GetKotelezoOraszam(new KotelezoOraszamRequestModel { AlkalmazottLista = alkalmazottLista, IntezmenyAzonosito = IntezmenyAzonosito, TanevId = TanevId }); if (kotelezoOraszamokResponse != null && kotelezoOraszamokResponse.AlkalmazottLista != null && kotelezoOraszamokResponse.AlkalmazottLista.Count > 0) { for (var r = 0; r < dataTable.Rows.Count; r++) { var alkalmazottId = Convert.ToInt32(dataTable.Rows[r]["FelhasznaloId"]); var alkalmazott = kotelezoOraszamokResponse.AlkalmazottLista.FirstOrDefault(x => x.AlkalmazottId == alkalmazottId); if (alkalmazott != null && alkalmazott.KotelezoOraszamMin > 0 && alkalmazott.KotelezoOraszamMax > 0) { dataTable.Rows[r][AlkalmazottResource.KotelezoOraszama] = alkalmazott.KotelezoOraszamSzoveg; } } } } } }