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

1607 lines
68 KiB
C#

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<AlkalmazottItemCo> 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<AlkalmazottItemCo> coList;
if (isFromSzervezet)
{
var szervezetIds = !felhasznaloSzervezetId.IsEntityId() ? new List<int>() : h.SzervezetDal().GetLathatoSzervezetek(IntezmenyId, TanevId, felhasznaloSzervezetId, (int)SzervezetAdatokHalmazaEnum.SzervezetEsAlSzervezetek);
var intezmenyiAdminIds = felhasznaloSzervezetId.IsEntityId() ? new List<int>() : h.Felhasznalo().GetAllIntezmenyiAdmin(TanevId);
coList = dataSet.Tables[0].AsEnumerable().Select(dataRow =>
{
var szervezetId = dataRow.Field<int?>("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<KirAlkalmazott> SearchAlkalmazottForKir(FelhasznaloKirSearchCo alkalmazottKirSearchCoco)
{
var kirAlkalmazottList = new List<KirAlkalmazott>();
var allandoLakcimList = new List<KirCim>();
var tartozkodasiCimList = new List<KirCim>();
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<IskolaorCo> GetIskolaor()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var iskolaorDataSet = h.Alkalmazott().GetIskolaor(TanevId);
var iskolaorList = new List<IskolaorCo>();
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 + $"&emsp;{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<string> nevek)
{
var minimumHasznalhato = 1;
var szamok = new List<int>();
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<AlkalmazottElerhetosegEmailCO> 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<AlkalmazottElerhetosegTelCO> 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<T>(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<double>(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<DataColumn>()
.Select(x => x.ColumnName)
.ToArray();
var stream = new MemoryStream();
dataTable = dataTable.AsEnumerable().OrderBy(x => x.Field<string>(FelhasznalokResource.AlkalmazottTeljesNeve)).ThenBy(e => e.Field<int>(columnNames[0])).ThenBy(e => e.Field<int>(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<int> GetAlkalmazottIds(int? alkalmazottFilterId)
{
var result = new List<int>();
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<int>("ID"));
}
});
return result;
}
public Dictionary<string, string> GetAllAlkalmazott(int? alkalmazottFilterId, bool isNemCsakFointezmenyesek, bool isOktatasiAzonositoval)
{
var result = new Dictionary<string, string>();
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Alkalmazott(GridParameters);
DataSet ds = null;
if (isNemCsakFointezmenyesek)
{
ds = dal.GetAlkalmazottak(TanevId, alkalmazottFilterId.HasValue ? new List<int> { alkalmazottFilterId.Value } : null);
}
else
{
ds = dal.GetAlkalmazottakForTavolletjelento(alkalmazottFilterId, TanevId, IntezmenyId);
}
foreach (DataRow row in ds.Tables[0].Rows)
{
result.Add(
row.Field<int>("ID").ToString(),
!isOktatasiAzonositoval ? row.Field<string>("Nev") : string.Format("{0} ({1})", row.Field<string>("Nev"), row.Field<string>("OktatasiAzonosito"))
);
}
});
return result;
}
public Dictionary<string, string> GetAllAlkalmazottByIntezmeny(bool isOktatasiAzonositoval, int tanevId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var result = new Dictionary<string, string>();
var ds = h.Alkalmazott().GetAllAlkalmazottByIntezmeny(IntezmenyId, tanevId);
foreach (var row in ds.Tables[0].AsEnumerable())
{
result.Add(row.Field<Guid>("IdpEgyediAzonosito").ToString(), !isOktatasiAzonositoval ? row.Field<string>("Nev") : string.Format("{0} ({1})", row.Field<string>("Nev"), row.Field<string>("OktatasiAzonosito")));
}
return result;
});
}
public IDictionary<string, string> 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<int> 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> { (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<int, TavolletAlkalmazottCo> GetAlkalmazottIDTavolletAlkalmazott(IList<int> alkalmazottIds)
{
var result = new Dictionary<int, TavolletAlkalmazottCo>();
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<int>("ID"), new TavolletAlkalmazottCo
{
AlkalmazottGuid = Guid.Parse(row.Field<string>("C_EGYEDIAZONOSITO")),
AlkalmazottNev = row.Field<string>("C_NYOMTATASINEV"),
AlkalmazottSzTSz = row.Field<string>("C_SZTSZKOD"),
FunkcioTerulet = row.Field<string>("C_FUNKCIOTERULET"),
});
}
});
return result;
}
public Dictionary<string, TavolletAlkalmazottCo> GetAlkalmazottSztszAzonositoTavolletAlkalmazott(IList<string> alkalmazottSztszAzonositok)
{
var result = new Dictionary<string, TavolletAlkalmazottCo>();
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<string>("C_SZTSZKOD");
if (result.ContainsKey(sztsz))
{
result[sztsz].AlkalmazottNev += $", {row.Field<string>("C_NYOMTATASINEV")}";
continue;
}
result.Add(sztsz, new TavolletAlkalmazottCo
{
AlkalmazottGuid = Guid.Parse(row.Field<string>("C_EGYEDIAZONOSITO")),
AlkalmazottNev = row.Field<string>("C_NYOMTATASINEV"),
AlkalmazottSzTSz = row.Field<string>("C_SZTSZKOD"),
FunkcioTerulet = row.Field<string>("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<AlkalmazottItemCo> GetAlkalmazottCoList(AlkalmazottSearchCo searchCo = null)
{
var dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Alkalmazott().GetAlkalmazottData(TanevId));
var result = new List<AlkalmazottItemCo>();
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>
{
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<int>().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<AlkalmazottItemCo> GetAlkalmazottCoListBySzervezet(int? szervezetTipus = null, int? szervezetId = null)
{
var dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Alkalmazott().GetAlkalmazottData(TanevId));
var result = new List<AlkalmazottItemCo>();
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<EszkozIgenylesItemCo> GetEszkozIRTanarokExcel()
{
var dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Alkalmazott().GetEszkozIgenylesAlkalmazottakExportData(TanevId, true));
var result = new List<EszkozIgenylesItemCo>();
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<EszkozIgenylesItemCo> GetEszkozIRNemTanarokExcel()
{
var dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Alkalmazott().GetEszkozIgenylesAlkalmazottakExportData(TanevId, true));
var result = new List<EszkozIgenylesItemCo>();
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<EszkozIgenylesItemCo> GetEszkozIRAlkalmazottakFelhasznaloVagyNaploNelkulExcel()
{
var dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Alkalmazott().GetEszkozIgenylesAlkalmazottakExportData(TanevId, true));
var result = new List<EszkozIgenylesItemCo>();
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<EszkozIgenylesItemCo> GetEszkozIRNemRegisztraltTanarokExcel()
{
var dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Alkalmazott().GetEszkozIgenylesAlkalmazottakExportData(TanevId, true));
var result = new List<EszkozIgenylesItemCo>();
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<EszkozIgenylesItemCo> GetEszkozIRRegisztraltTanarokExcel()
{
var dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Alkalmazott().GetEszkozIgenylesAlkalmazottakExportData(TanevId, false));
var result = new List<EszkozIgenylesItemCo>();
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<AlkalmazottElerhetosegTelCO> GetTelefonszamItemCoList(int alkalmazottId)
{
var ret = new List<AlkalmazottElerhetosegTelCO>();
var ds = GetTelefonSzam(alkalmazottId);
foreach (var item in ds.Tables[0].AsEnumerable())
{
ret.Add(new AlkalmazottElerhetosegTelCO
{
Alapertelmezett = item.Field<bool>("Alapertelmezett_BOOL"),
AlkalmazottId = alkalmazottId,
ID = item.Field<int>("ID"),
Telefonszam = item.Field<string>("TelefonSzam"),
TelefonTipusa = item.Field<int>("Tipus"),
});
}
return ret;
}
public bool IsTeljesNevTulHosszu(string teljesNev)
{
return CommonUtilsDal.KopaszNev(teljesNev).Length > Core.Constants.General.CsaladiEsUtonevEgyuttMaxLength;
}
public bool AnyKozpontilagSzinkorizaltAlkalmazottFromList(List<int> 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<BankszamlaTulajdonosTipusEnum>(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<int>("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;
}
}
}
}
}
}