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

1268 lines
52 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Xml;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.HelperClasses.ImportCo;
using Kreta.BusinessLogic.Helpers.ImportExport;
using Kreta.BusinessLogic.Helpers.SystemSettings;
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;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class FelhasznaloHelper : LogicBase
{
public FelhasznaloHelper(IConnectionType connectionType) : base(connectionType) { }
public static readonly IEnumerable<SzerepkorTipusEnum> SzervezetiPermissions = new List<SzerepkorTipusEnum> { SzerepkorTipusEnum.Dualis_Admin };
public void UpdateLastLogin(string userName)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
int? belepesId = h.Felhasznalo().GetAktualisFelhasznaloBelepesID(userName);
h.FelhasznaloBelepes().UpdateLastLogin(belepesId.Value, DateTime.Now);
});
}
public XmlDocument GetUserProfileDocument()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo();
string profile = dal.GetUserProfile();
var xmlDocument = new XmlDocument();
//akkor üres ha törölve lett
if (!string.IsNullOrWhiteSpace(profile))
{
//adatok betöltése
xmlDocument.LoadXml(profile);
//Ha nem <UserProfile-lal kezdődik, akkor valami gond lehet pl. Base64String
if (!xmlDocument.InnerXml.Trim().StartsWith("<UserProfile", StringComparison.Ordinal))
{
xmlDocument.InnerXml = string.Empty;
}
}
return xmlDocument;
});
}
public bool IsCsokkentettGondviselo(int gondviseloId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo();
return dal.IsCsokkentettGondviselo(gondviseloId, IntezmenyId, TanevId);
});
}
public Dictionary<SzerepkorTipusEnum, string> GetFelhasznaloiSzerepkorok(string intezmenyiDictionaryEnvironmentName)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var roles = h.RolesDAL().GetUserRoles(FelhasznaloId).AsEnumerable().Select(a => a["SZEREPKOR"].ToString());
var list = new List<KeyValuePair<SzerepkorTipusEnum, string>>();
foreach (var userrole in roles)
{
var roleType = (SzerepkorTipusEnum)Enum.Parse(typeof(SzerepkorTipusEnum), userrole);
if (SzervezetiPermissions.Contains(roleType))
{
list.Insert(0, new KeyValuePair<SzerepkorTipusEnum, string>(roleType, GetFelhasznaloiJogosultsagSzoveg(roleType, intezmenyiDictionaryEnvironmentName)));
}
else
{
list.Add(new KeyValuePair<SzerepkorTipusEnum, string>(roleType, GetFelhasznaloiJogosultsagSzoveg(roleType, intezmenyiDictionaryEnvironmentName)));
}
}
var result = list.ToDictionary(x => x.Key, x => x.Value);
return result;
});
}
public List<string> GetFelhasznaloiJogosultsagok(int felhasznaloId, int szerepkorId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.RolesDAL();
return dal.GetFelhasznaloJogosultsag(felhasznaloId, szerepkorId).AsEnumerable().Select(a => a["JOG"].ToString()).ToList();
});
}
public string GetFelhasznaloiJogosultsagSzoveg(SzerepkorTipusEnum roleType, string intezmenyiDictionaryEnvironmentName)
{
switch (roleType)
{
case SzerepkorTipusEnum.Adminisztrator:
return JogosultsagResource.AdminisztraciosRendszer;
case SzerepkorTipusEnum.Ellenorzo:
return JogosultsagResource.ElektronikusEllenorzokonyv;
case SzerepkorTipusEnum.Naplo:
return JogosultsagResource.ElektronikusNaplo;
case SzerepkorTipusEnum.Alairo:
return JogosultsagResource.Alairo;
case SzerepkorTipusEnum.eUgyintezo:
return JogosultsagResource.eUgyintezo;
case SzerepkorTipusEnum.Penztaros:
return JogosultsagResource.Penztaros;
case SzerepkorTipusEnum.PenzugyiAdmin:
return JogosultsagResource.PenzugyiAdmin;
case SzerepkorTipusEnum.GazdasagiUgyintezo:
return JogosultsagResource.GazdasagiUgyintezo;
case SzerepkorTipusEnum.TeremberletJelenletEllenorzo:
return JogosultsagResource.TeremberletJelenletEllenorzo;
case SzerepkorTipusEnum.alkalmazott:
return JogosultsagResource.Alkalmazott;
case SzerepkorTipusEnum.EtkezesiAdmin:
return JogosultsagResource.EtkezesiAdmin;
case SzerepkorTipusEnum.EtkezesiEllenorzo:
return JogosultsagResource.EtkezesiEllenorzo;
case SzerepkorTipusEnum.FokuszMonitoring:
return JogosultsagResource.FokuszMonitoring;
case SzerepkorTipusEnum.IskolaEgeszsegugyiKoordinator:
return JogosultsagResource.IskolaEgeszsegugyiKoordinator;
case SzerepkorTipusEnum.Vedono:
return JogosultsagResource.Vedono;
case SzerepkorTipusEnum.Iskolaorvos:
return JogosultsagResource.Iskolaorvos;
case SzerepkorTipusEnum.IskolaEgeszsegugyiAsszisztens:
return JogosultsagResource.IskolaEgeszsegugyiAsszisztens;
case SzerepkorTipusEnum.IskolaEgeszsegugyiLekerdezo:
return JogosultsagResource.IskolaEgeszsegugyiLekerdezo;
case SzerepkorTipusEnum.BelepokartyaAdmin:
return JogosultsagResource.BelepokartyaAdmin;
case SzerepkorTipusEnum.LeltarConcerned:
return JogosultsagResource.LeltarConcerned;
case SzerepkorTipusEnum.Konyvtaros:
return JogosultsagResource.Konyvtaros;
case SzerepkorTipusEnum.FELTAR_EsetKezelo:
return intezmenyiDictionaryEnvironmentName == IntezmenyResource.EnvironmentNszfh ? JogosultsagResource.FELTAR_EsetKezelo : JogosultsagResource.TESZEK_EsetKezelo;
case SzerepkorTipusEnum.FELTAR_EszkozMenedzser:
return intezmenyiDictionaryEnvironmentName == IntezmenyResource.EnvironmentNszfh ? JogosultsagResource.FELTAR_EszkozMenedzser : JogosultsagResource.TESZEK_EszkozMenedzser;
case SzerepkorTipusEnum.KerdoivKitolto_KerdoivKezelo:
return JogosultsagResource.KerdoivKitolto_KerdoivKezelo;
case SzerepkorTipusEnum.Dualis_Admin:
return JogosultsagResource.DualisAdmin;
case SzerepkorTipusEnum.FELTAR_EsetJovahagyo:
return intezmenyiDictionaryEnvironmentName == IntezmenyResource.EnvironmentNszfh ? JogosultsagResource.FELTAR_EsetJovahagyo : JogosultsagResource.TESZEK_EsetJovahagyo;
case SzerepkorTipusEnum.FELTAR_EsetKozremukodo:
return intezmenyiDictionaryEnvironmentName == IntezmenyResource.EnvironmentNszfh ? JogosultsagResource.FELTAR_EsetKozremukodo : JogosultsagResource.TESZEK_EsetKozremukodo;
case SzerepkorTipusEnum.FELTAR_Munkavegzo:
return intezmenyiDictionaryEnvironmentName == IntezmenyResource.EnvironmentNszfh ? JogosultsagResource.FELTAR_Munkavegzo : JogosultsagResource.TESZEK_Munkavegzo;
case SzerepkorTipusEnum.FELTAR_SzerzodesMenedzser:
return intezmenyiDictionaryEnvironmentName == IntezmenyResource.EnvironmentNszfh ? JogosultsagResource.FELTAR_SzerzodesMenedzser : JogosultsagResource.TESZEK_SzerzodesMenedzser;
}
return null;
}
public string GetFirstEmailAddressForCurrentUser(int id)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var felhasznalo = h.Felhasznalo().Get(id);
if (felhasznalo.Email.Count == 0)
{
return string.Empty;
}
if (felhasznalo.Email[0].EmailCim == null)
{
return string.Empty;
}
if (felhasznalo.Email.All(x => x.Torolt))
{
return string.Empty;
}
return felhasznalo.Email[0].EmailCim;
});
}
public List<Felh4TOktAzonValidationCo> Check4TFelhOktAzonValidation(
List<int> tanevIds, int pCheckValidationType,
string pSzuletesiNevSorrend, string pSzuletesiNevElotag, string pSzuletesiCsaladiNev, string pSzuletesiUtonev,
string pAnyjaNevSorrend, string pAnyjaElotag, string pAnyjaCsaladiNev, string pAnyjaUtonev,
string pSzuletesiHely, DateTime? pSzuletesiDatum, string pOktatasiAzonosito, string pBejelentkezesiNev,
int? pFelvetelStatuszaFelveve = null, int? pFelvetelStatuszaNemFelveve = null)
{
var list = new List<Felh4TOktAzonValidationCo>();
DataSet ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo();
return dal.Check4TFelhOktAzonValidation(tanevIds, pCheckValidationType,
pSzuletesiNevSorrend, pSzuletesiNevElotag, pSzuletesiCsaladiNev, pSzuletesiUtonev,
pAnyjaNevSorrend, pAnyjaElotag, pAnyjaCsaladiNev, pAnyjaUtonev,
pSzuletesiHely, pSzuletesiDatum, pOktatasiAzonosito, pBejelentkezesiNev,
pFelvetelStatuszaFelveve, pFelvetelStatuszaNemFelveve);
});
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
foreach (DataRow row in ds.Tables[0].Rows)
{
if (pCheckValidationType == (int)Validation4TEnum.Nebulo)
{
list.Add(new Felh4TOktAzonValidationCo()
{
ID = row.Field<int>("ID"),
ValidationType = row.Field<int>("ValidationType")
});
}
else
{
list.Add(new Felh4TOktAzonValidationCo(row));
}
}
}
return list;
}
public void Check4TFelhOktAzonValidation(int validationType, int entityId, int anotherTanevEntityId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo();
dal.OktAzon4TAlapjanFollowUp(validationType, entityId, anotherTanevEntityId);
});
}
public DataSet GetCimData(int id, bool isGondviselo)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo(GridParameters);
return dal.GetSajatAdatlapCim(id, isGondviselo);
});
}
public DataSet GetTelefonData(int id)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo(GridParameters);
return dal.GetUserTelefon(id);
});
}
public DataSet GetEmailData(int id)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo(GridParameters);
return dal.GetUserEmailCim(id);
});
}
public List<string> GetAlkalmazottakByOktatasiAzonosito(string oktatasiAzonosito)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo();
var ds = dal.GetAlkalmazottakByOktatasiAzonosito(oktatasiAzonosito, TanevId);
return ds.Tables[0].AsEnumerable().Select(dataRow => SDAConvert.ToString(dataRow["Nev"])).ToList();
});
}
public List<string> GetTanulokByOktatasiAzonosito(string oktatasiAzonosito)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo();
var ds = dal.GetTanulokByOktatasiAzonosito(oktatasiAzonosito, TanevId);
return ds.Tables[0].AsEnumerable().Select(dataRow => SDAConvert.ToString(dataRow["Nev"])).ToList();
});
}
public string GetFelhasznaloOktatasiAzonosito(int id)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo();
return dal.GetFelhasznaloOktatasiAzonosito(id, TanevId);
});
}
public string GetGondviseloFelhasznaloBelepesiNeve(int userId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo();
return dal.GetGondviseloFelhasznaloBelepesiNeve(userId, IntezmenyId, TanevId);
});
}
public string GetTanuloFelhasznaloBelepesiNeve(int userId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo();
return dal.GetTanuloFelhasznaloBelepesiNeve(userId, IntezmenyId, TanevId);
});
}
public DateTime GetTanuloFelhasznaloSzuletesiDatum(int userId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo();
return dal.GetTanuloFelhasznaloSzuletesiDatum(userId, IntezmenyId, TanevId);
});
}
public string GetNyomtatasiNev(int userId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo();
return dal.Get(userId).NyomtatasiNev;
});
}
public DateTime GetTanuloSzuletesiDatumByGondviseloId(int userId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo();
return dal.GetTanuloSzuletesiDatumByGondviseloId(userId, IntezmenyId, TanevId);
});
}
public bool GetVegzosEvfolyamTanulojaByUserId(int userId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo();
return dal.GetVegzosEvfolyamTanulojaByUserId(userId);
});
}
public DataSet FelhasznaloKereses(FelhasznalokCO co, bool isHRModulEngedelyezett)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.Felhasznalo(GridParameters);
return dal.GetFelhasznalok(IntezmenyId, TanevId, FelhasznalokCO.ConvertCOToPCO(co), isHRModulEngedelyezett, new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h)).GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Lazar_Ervin_Program_kezelese));
});
}
public List<FelhasznaloGridItemCo> GetFelhasznaloList(FelhasznalokCO co, bool isHRModulEngedelyezett)
{
var ds = FelhasznaloKereses(co, isHRModulEngedelyezett);
var result = new List<FelhasznaloGridItemCo>();
foreach (DataRow dataRow in ds.Tables[0].Rows)
{
var item = new FelhasznaloGridItemCo(dataRow);
result.Add(item);
}
return result;
}
private DataSet GetFelhasznalokOnlyAlkalmazottSzerepkor(IDalHandler h)
{
var dal = h.Felhasznalo();
return dal.GetFelhasznalokOnlyAlkalmazottSzerepkor(TanevId);
}
public List<int> GetFelhasznaloIdsOnlyAlkalmazottSzerepkor()
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var felhasznalokOnlyAlkalmazottSzerepkor = GetFelhasznalokOnlyAlkalmazottSzerepkor(h).Tables[0].Rows;
return felhasznalokOnlyAlkalmazottSzerepkor != null ? felhasznalokOnlyAlkalmazottSzerepkor.Cast<DataRow>().Select(row => row.Field<int>("ID")).ToList() : new List<int>();
});
}
public List<IFelhasznalo> GetAdminFelhasznalok()
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.Felhasznalo();
DataSet ds = h.Felhasznalo().GetAdminFelhasznalok(IntezmenyAzonosito);
var result = new List<IFelhasznalo>();
foreach (DataRow row in ds.Tables[0].Rows)
{
result.Add(dal.Get(row.Field<int>("ID")));
}
return result;
});
}
public DataSet GetTanuloAdatForGondviselo(int gondviseloId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo(GridParameters);
return dal.GetTanuloAdatForGondviselo(gondviseloId);
});
}
public void FelhasznaloCimMentese(FelhasznaloElerhetosegCimCO adat, int? kovTanevId, bool isKirSzinkron = false)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var cimDal = h.Cim();
var felhasznaloDal = h.Felhasznalo();
IFelhasznalo felhasznalo = felhasznaloDal.Get(adat.FelhasznaloId);
ICim FelhasznaloCim;
if (adat.ID.IsEntityId())
{
FelhasznaloCim = cimDal.Get(adat.ID.Value);
}
else
{
FelhasznaloCim = cimDal.Get();
FelhasznaloCim.TanevId = TanevId;
}
adat.CimTipus = adat.CimTipus.IsEntityId() ? adat.CimTipus : (int)CimTipusEnum.allando_lakcim;
adat.Orszag = adat.Orszag.IsEntityId() ? adat.Orszag : (int)OrszagTipusEnum.Magyarorszag;
SetFelhasznaloCimtDataForUpdate(FelhasznaloCim, adat, isKirSzinkron);
if (adat.FelhasznaloId.IsEntityId())
{
FelhasznaloCim.FelhasznaloId = adat.FelhasznaloId;
if (adat.ID.IsEntityId())
{
var letezoAzonosTipusuCimekSzama = felhasznalo.Cim.Count(x => !x.Torolt && x.CimTipusa == adat.CimTipus && x.ID != FelhasznaloCim.ID && x.GondviseloId == 0);
if (letezoAzonosTipusuCimekSzama == 0)
{
cimDal.Update(FelhasznaloCim);
UpdateCimKovTanev(h, kovTanevId, adat.FelhasznaloId);
}
else
{
throw new BlException(ErrorResource.AKivalsztottTipusuCimMarFellettveve);
}
}
else
{
var azonosTipusuCimekSzama = felhasznalo.Cim.Count(x => !x.Torolt && x.CimTipusa == adat.CimTipus && x.GondviseloId == 0);
if (azonosTipusuCimekSzama == 0)
{
cimDal.Insert(FelhasznaloCim);
UpdateCimKovTanev(h, kovTanevId, adat.FelhasznaloId);
}
else
{
throw new BlException(ErrorResource.AKivalsztottTipusuCimMarFellettveve);
}
}
}
else
{
cimDal.Insert(FelhasznaloCim);
cimDal.AddFelhasznaloCim(felhasznalo, FelhasznaloCim);
}
});
}
private void SetFelhasznaloCimtDataForUpdate(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;
}
}
public bool GetFirstCimByTipus(CimTipusEnum cimTipusEnum, int felhasznaloId, out int cimId)
{
int outCimId = 0;
bool hasCim = Dal.CustomConnection.Run(ConnectionType, h =>
{
var felhasznaloDal = h.Felhasznalo();
IFelhasznalo felhasznalo = felhasznaloDal.Get(felhasznaloId);
IReadOnlyList<ICim> cimLista = felhasznalo.Cim;
if (cimLista.Any(x => !x.Torolt && x.CimTipusa == (int)cimTipusEnum))
{
outCimId = cimLista.Where(x => !x.Torolt && x.CimTipusa == (int)cimTipusEnum).Select(x => x.ID).First();
return true;
}
outCimId = 0;
return false;
});
cimId = outCimId;
return true;
}
public void FelhasznaloElerhetosegEmailMentese(FelhasznaloElerhetosegEmailCO adat, int? kovTanevId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Email();
if (adat.Alapertelmezett)
{
dal.SetAlapertelmezett(adat.FelhasznaloId, FelhasznaloId, TanevId);
}
IEmail dto;
if (adat.ID.HasValue && adat.ID.Value > 0)
{
dto = dal.Get(adat.ID.Value);
}
else
{
dto = dal.Get();
dto.TanevId = TanevId;
}
dto.EmailCim = adat.EmailCim;
dto.EmailTipusa = adat.EmailTipusa;
dto.Alapertelmezett = adat.Alapertelmezett;
dto.FelhasznaloId = adat.FelhasznaloId;
if (adat.ID.HasValue && adat.ID.Value > 0)
{
dal.Update(dto);
}
else
{
dal.Insert(dto);
}
//entityhandler-ben lenne a helye, de a mentés folyamatában a sorrendezés miatt, nem kerülhet még oda
if (kovTanevId.HasValue && kovTanevId != TanevId)
{
h.Felhasznalo().FollowUpFelhasznaloEmail(IntezmenyId, TanevId, kovTanevId.Value, adat.FelhasznaloId);
}
});
}
private void UpdateCimKovTanev(IDalHandler h, int? kovTanevId, int felhasznaloId)
{
//entityhandler-ben lenne a helye, de a mentés folyamatában a sorrendezés miatt, nem kerülhet még oda
if (felhasznaloId > 0 && kovTanevId.HasValue && kovTanevId != TanevId)
{
h.Felhasznalo().FollowUpCim(IntezmenyId, TanevId, kovTanevId.Value, felhasznaloId);
}
}
public void FelhasznaloElerhetosegTelMentese(FelhasznaloElerhetosegTelCO adat, int? kovTanevId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Telefon();
if (adat.Alapertelmezett)
{
dal.SetTelefonAlapertelmezett(adat.FelhasznaloId, FelhasznaloId, TanevId);
}
ITelefon dto;
if (adat.ID.HasValue && adat.ID.Value > 0)
{
dto = dal.Get(adat.ID.Value);
}
else
{
dto = dal.Get();
}
dto.TelefonSzam = adat.Telefonszam;
dto.TelefonTipusa = adat.TelefonTipusa;
dto.Leiras = adat.Leiras;
dto.FelhasznaloId = adat.FelhasznaloId;
dto.TanevId = TanevId;
dto.Alapertelmezett = adat.Alapertelmezett;
if (adat.ID.HasValue && adat.ID.Value > 0)
{
dal.Update(dto);
}
else
{
dal.Insert(dto);
}
//entityhandler-ben lenne a helye, de a mentés folyamatában a sorrendezés miatt, nem kerülhet még oda
if (kovTanevId.HasValue && kovTanevId != TanevId)
{
h.Felhasznalo().FollowUpTelefon(IntezmenyId, TanevId, kovTanevId.Value, adat.FelhasznaloId);
}
});
}
public bool HasFelhasznaloAlapertelmezettTelefon(int felhasznaloId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var felhasznaloEntity = h.Felhasznalo().Get(felhasznaloId);
return felhasznaloEntity.Telefon.Any(x => x.Alapertelmezett);
});
}
public bool HasFelhasznaloAlapertelmezettEmail(int felhasznaloId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var felhasznaloEntity = h.Alkalmazott().Get(felhasznaloId);
return felhasznaloEntity.Email.Any(x => x.Alapertelmezett);
});
}
public KirFelhasznaloElerhetosegek GetFelhasznaloElerhetoseg(int felhasznaloId, bool isTanulo)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IFelhasznaloDal dal = h.Felhasznalo();
return dal.GetFelhasznaloElerhetoseg(felhasznaloId, TanevId, isTanulo);
});
}
public string GetFelhasznaloEgyediAzonosito(int felhasznaloId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IFelhasznaloDal dal = h.Felhasznalo();
return dal.GetFelhasznaloEgyediAzonosito(IntezmenyId, felhasznaloId);
});
}
public (string EgyediAzonosito, string Nev) GetGondviseloAdat(int gondviseloId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var gondviselo = h.Gondviselo().Get(gondviseloId);
return (gondviselo.EgyediAzonosito, gondviselo.Nev);
});
}
public void DeleteFelhasznaloBelepes(int felhasznaloId, bool isGondviselo)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
if (!isGondviselo)
{
var felhDal = h.Felhasznalo();
var belepesId = felhDal.Get(felhasznaloId).FelhasznaloBelepes.Where(x => x.Gondviselo == null && x.Torolt == false).FirstOrDefault().ID;
var belepesDal = h.FelhasznaloBelepes();
belepesDal.Delete(belepesId);
}
else
{
var gvDal = h.Gondviselo();
var belepesId = gvDal.Get(felhasznaloId).FelhasznaloBelepes.Where(x => x.Torolt == false).FirstOrDefault().ID;
var belepesDal = h.FelhasznaloBelepes();
belepesDal.Delete(belepesId);
}
});
}
public ElerhetosegekModCO GetElerhetosegek(int felhasznaloId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var felhasznalo = h.Felhasznalo().Get(felhasznaloId);
var telefonszamok = felhasznalo.Telefon.Where(t => t.Torolt == false && t.Gondviselo == null).Select(t => new TelefonElerhetosegCo
{
Alapertelmezett = t.Alapertelmezett,
Telefonszam = t.TelefonSzam,
Tipus = t.TelefonTipusa,
IsPublic = t.IsPublic,
Id = t.ID,
Status = ElerhetosegStatusEnum.Saved
}).ToList();
var emailCimek = felhasznalo.Email.Where(e => e.Torolt == false && e.Gondviselo == null).Select(e => new EmailElerhetosegCo
{
Alapertelmezett = e.Alapertelmezett,
EmailCim = e.EmailCim,
Tipus = e.EmailTipusa,
IsPublic = e.IsPublic,
Id = e.ID,
Status = ElerhetosegStatusEnum.Saved
}).ToList();
var elerhetosegek = new ElerhetosegekModCO
{
Telefon = telefonszamok,
Email = emailCimek
};
return elerhetosegek;
});
}
public ElerhetosegekModCO SaveElerhetosegek(ElerhetosegekModCO co, int felhasznaloId)
{
var newDbElerhetosegek = new ElerhetosegekModCO();
Dal.CustomConnection.Run(ConnectionType, h =>
{
var felhasznaloDal = h.Felhasznalo();
var emailDal = h.Email();
var telefonDal = h.Telefon();
var felhasznalo = felhasznaloDal.Get(felhasznaloId);
foreach (var deletedEmailCo in co.Email.Where(e => e.Status == ElerhetosegStatusEnum.Deleted && e.Id != null))
{
var deletedEmail = felhasznalo.Email.Single(e => e.ID == deletedEmailCo.Id.Value);
emailDal.Delete(deletedEmail);
}
foreach (var updatedEmailCo in co.Email.Where(e => e.Status == ElerhetosegStatusEnum.Saved).OrderBy(x => x.Alapertelmezett))
{
var updatedEmail = felhasznalo.Email.Single(e => e.ID == updatedEmailCo.Id.Value);
updatedEmail.EmailCim = updatedEmailCo.EmailCim;
updatedEmail.Alapertelmezett = updatedEmailCo.Alapertelmezett;
emailDal.Update(updatedEmail);
}
foreach (var newEmailCo in co.Email.Where(e => e.Status == ElerhetosegStatusEnum.New))
{
var newEmail = emailDal.Get();
newEmail.EmailCim = newEmailCo.EmailCim;
newEmail.EmailTipusa = newEmailCo.Tipus;
newEmail.TanevId = TanevId;
newEmail.Alapertelmezett = newEmailCo.Alapertelmezett;
newEmail.IsPublic = newEmailCo.IsPublic;
newEmail.FelhasznaloId = felhasznalo.ID;
emailDal.Insert(newEmail);
emailDal.AddFelhasznaloEmail(felhasznalo, newEmail);
newDbElerhetosegek.Email.Add(new EmailElerhetosegCo
{
Id = newEmail.ID,
TextBoxId = newEmailCo.TextBoxId
});
}
foreach (var deletedTelefonCo in co.Telefon.Where(t => t.Status == ElerhetosegStatusEnum.Deleted && t.Id != null))
{
var deletedtelefon = felhasznalo.Telefon.Single(t => t.ID == deletedTelefonCo.Id.Value);
telefonDal.Delete(deletedtelefon);
}
foreach (var updatedTelefonCo in co.Telefon.Where(t => t.Status == ElerhetosegStatusEnum.Saved).OrderBy(x => x.Alapertelmezett))
{
var updatedTelefon = felhasznalo.Telefon.Single(t => t.ID == updatedTelefonCo.Id.Value);
updatedTelefon.TelefonSzam = updatedTelefonCo.Telefonszam;
updatedTelefon.Alapertelmezett = updatedTelefonCo.Alapertelmezett;
telefonDal.Update(updatedTelefon);
}
foreach (var newTelefonCo in co.Telefon.Where(t => t.Status == ElerhetosegStatusEnum.New))
{
var newTelefon = telefonDal.Get();
newTelefon.TelefonSzam = newTelefonCo.Telefonszam;
newTelefon.TelefonTipusa = newTelefonCo.Tipus;
newTelefon.TanevId = TanevId;
newTelefon.Alapertelmezett = newTelefonCo.Alapertelmezett;
newTelefon.IsPublic = newTelefonCo.IsPublic;
newTelefon.FelhasznaloId = felhasznalo.ID;
telefonDal.Insert(newTelefon);
telefonDal.AddFelhasznaloTelefon(felhasznalo, newTelefon);
newDbElerhetosegek.Telefon.Add(new TelefonElerhetosegCo
{
Id = newTelefon.ID,
TextBoxId = newTelefonCo.TextBoxId
});
}
felhasznaloDal.Update(felhasznalo);
});
return newDbElerhetosegek;
}
public (string szuletesiNev, string oktatasiAzonosito, string emailCim) GetUserDetailsForElearning(int felhasznaloId, int? gondviseloId, bool isGondviselo, bool isTanulo)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
if (isGondviselo && gondviseloId.HasValue)
{
var oGondviselo = h.Gondviselo().Get(gondviseloId.Value);
var emailGondviselo = oGondviselo.Email.SingleOrDefault(x => !x.Torolt && !x.IsHibasanMegadva && x.Alapertelmezett)?.EmailCim;
if (emailGondviselo != null)
{
return (string.Empty, string.Empty, emailGondviselo);
}
return (string.Empty, string.Empty, string.Empty);
}
if (isTanulo)
{
var oTanulo = h.Felhasznalo().Get(felhasznaloId);
var emailListTanulo = oTanulo.Email.Where(x => !x.Torolt && !x.IsHibasanMegadva);
if (emailListTanulo.Any(x => x.Alapertelmezett))
{
return (oTanulo.SzuletesiNev, oTanulo.OktatasiAzonosito, emailListTanulo.First(x => x.Alapertelmezett).EmailCim);
}
if (emailListTanulo.Any())
{
return (oTanulo.SzuletesiNev, oTanulo.OktatasiAzonosito, emailListTanulo.First().EmailCim);
}
return (oTanulo.SzuletesiNev, oTanulo.OktatasiAzonosito, string.Empty);
}
var oFelhasznalo = h.Felhasznalo().Get(felhasznaloId);
var emailListFelhasznalo = oFelhasznalo.Email.Where(x => !x.Torolt && !x.IsHibasanMegadva);
if (emailListFelhasznalo.Any(x => x.IsPublic))
{
return (oFelhasznalo.SzuletesiNev, oFelhasznalo.OktatasiAzonosito, emailListFelhasznalo.First(x => x.IsPublic).EmailCim);
}
if (emailListFelhasznalo.Any(x => x.EmailTipusa == (int)EmailTipusEnum.Hivatalos))
{
return (oFelhasznalo.SzuletesiNev, oFelhasznalo.OktatasiAzonosito, emailListFelhasznalo.First(x => x.EmailTipusa == (int)EmailTipusEnum.Hivatalos).EmailCim);
}
return (oFelhasznalo.SzuletesiNev, oFelhasznalo.OktatasiAzonosito, string.Empty);
});
}
public (string oktatasiAzonosito, string emailCim, string elotag, string vezeteknev, string utonev) GetUserDetailsForKotVall()
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var oFelhasznalo = h.Felhasznalo().Get(FelhasznaloId);
var emailListFelhasznalo = oFelhasznalo.Email.Where(x => !x.Torolt && !x.IsHibasanMegadva);
var emailCim = string.Empty;
if (emailListFelhasznalo.Any(x => x.Alapertelmezett))
{
emailCim = emailListFelhasznalo.First(x => x.Alapertelmezett).EmailCim;
}
else if (emailListFelhasznalo.Any(x => x.IsPublic))
{
emailCim = emailListFelhasznalo.First(x => x.IsPublic).EmailCim;
}
else if (emailListFelhasznalo.Any(x => x.EmailTipusa == (int)EmailTipusEnum.Hivatalos))
{
emailCim = emailListFelhasznalo.First(x => x.EmailTipusa == (int)EmailTipusEnum.Hivatalos).EmailCim;
}
return (oFelhasznalo.OktatasiAzonosito, emailCim, oFelhasznalo.Elotag, oFelhasznalo.Vezeteknev, oFelhasznalo.Utonev);
});
}
public string GetFunkcioTeruletSAPKod(int felhasznaloId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IFelhasznaloDal dal = h.Felhasznalo();
return dal.GetFunkcioTeruletSAPKod(felhasznaloId, TanevId);
});
}
public void SetProfile(string profileXml)
{
var request = new XmlDocument();
request.LoadXml(profileXml);
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo();
var user = dal.Get(UserContext.Instance.FelhasznaloId);
dal.UpdateProfile(user, profileXml);
});
}
public byte[] ProfilkepMentese(byte[] foto)
{
if (foto == null || foto.Length == 0)
{
throw new Exception("Nincs feltöltve fénykép!");
}
// Kép méretének csökkentése úgy, hogy beleférjen egy XYxXYpx-es négyzetbe, de a képarány ne módosuljon
using (MemoryStream myMemStream = new MemoryStream(foto))
using (Image fullsizeImage = Image.FromStream(myMemStream))
{
int sizeLimit = 150; //pixel
int width = fullsizeImage.Width;
int height = fullsizeImage.Height;
if ((width >= height ? width : height) > sizeLimit)
{
double scaleFactor = 1;
int newWidth = 0;
int newHeight = 0;
if (width >= height)
{
scaleFactor = (double)(sizeLimit) / width;
}
else
{
scaleFactor = (double)(sizeLimit) / height;
}
newWidth = (int)Math.Round(width * scaleFactor, 0);
newHeight = (int)Math.Round(height * scaleFactor, 0);
using (Image newImage = fullsizeImage.GetThumbnailImage(newWidth, newHeight, null, IntPtr.Zero))
using (MemoryStream myResult = new MemoryStream())
{
newImage.Save(myResult, System.Drawing.Imaging.ImageFormat.Jpeg); //Or whatever format you want.
foto = myResult.ToArray();
}
}
}
Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.Felhasznalo();
var felhasznalo = dal.Get(FelhasznaloId);
felhasznalo.ProfilKep = foto;
dal.Update(felhasznalo, true);
});
return foto;
}
public byte[] ProfilKepBajtTomb()
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var felhasznalo = h.Felhasznalo().Get(FelhasznaloId);
return felhasznalo.ProfilKep;
});
}
/// <summary>
/// Visszaadja a kép elérését (src)
///
/// Ha van feltöltve képe akkor Base64 stringként, egyébként az alapértelmezett kép elérési útját
/// </summary>
/// <returns></returns>
public string ProfileKep()
{
return ProfileKep(null);
}
/// <summary>
/// Visszaadja az alapértelmezett profilkép elérési útvonalát
/// </summary>
/// <param name="csakUtvonal"></param>
/// <returns></returns>
public string AlapertelmezettProfileKep()
{
var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
return urlHelper.Content("~/App_Themes/New_Common_Images/noprofilepic.png");
}
/// <summary>
/// Visszaadja a kép elérését (src)
///
/// Ha null tömb van átadva és van feltöltve képe akkor Base64 stringként
/// Ha a tömb nem null és nagyobb mint 0 akkor abból csinál base64 stringet
/// Egyébként az alapértelmezett kép elérési útját
/// </summary>
/// <param name="marMegvanAKep">Már meglévő bytetömb, hogy ne Adatbázisból kelljen kikérni</param>
/// <returns></returns>
public string ProfileKep(byte[] marMegvanAKep)
{
try
{
byte[] bytes;
if (marMegvanAKep == null)
{
bytes = ProfilKepBajtTomb();
}
else
{
bytes = marMegvanAKep;
}
return bytes != null && bytes.Length > 0
? "data:image/jpeg;base64," + Convert.ToBase64String(bytes, 0, bytes.Length)
: AlapertelmezettProfileKep();
}
catch
{
return AlapertelmezettProfileKep();
}
}
public List<FelhasznaloBelepesImportItemCo> GetGondviseloBelepesItemCoList(FelhasznalokCO searchCo)
{
var result = new List<FelhasznaloBelepesImportItemCo>();
var ds = FelhasznaloKereses(searchCo, false);
foreach (var row in ds.Tables[0].AsEnumerable())
{
result.Add(new FelhasznaloBelepesImportItemCo(TanevId)
{
NeveImportData = SDAConvert.ToString(row["Tanulo"]).ReplaceMultipleSpacesAndTrim(),
OktatasiAzonositoImportData = SDAConvert.ToString(row["TanuloOktatasiAzonosito"]).ReplaceMultipleSpacesAndTrim(),
SzuletesiDatumaImportData = SDAConvert.ToDateTime(row["TanuloSzuletesiDatum"])?.ToString(Constants.ToStringPattern.HungarianDate),
GondviseloNeveImportData = SDAConvert.ToString(row["FelhasznaloNyomtatasiNeve"]).ReplaceMultipleSpacesAndTrim(),
GondviseloRokonsagiFokaImportData = SDAConvert.ToInt32(row["GondviseloRokonsagiFokId"]).GetDisplayName<RokonsagiFokEnum>(TanevId),
FelhasznaloNeveImportData = SDAConvert.ToString(row["FelhasznaloNev"]).ReplaceMultipleSpacesAndTrim(),
TipusEnum = Enums.ManualEnums.FelhasznaloBelepesExportImportTipusEnum.Gondviselo,
});
}
return result.Where(x => x.TipusEnum == Enums.ManualEnums.FelhasznaloBelepesExportImportTipusEnum.Gondviselo)
.OrderBy(x => x.NeveImportData)
.ToList();
}
public Dictionary<string, IList<string>> GetGondviseloBelepesiAdatokNelkulDropDownColumnSourceDictionary()
{
var dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>();
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var connectionType = new DalHandlerConnectionType(ConnectionType, dalHandler);
var helper = new ImportExportHelper(connectionType);
dropDownColumnSourceDictionary.Add(ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloNeve, helper.GetTanuloList());
dropDownColumnSourceDictionary.Add(ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloNeve, helper.GetGondviseloList());
dropDownColumnSourceDictionary.Add(ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloRokonsagiFoka, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.RokonsagiFok));
});
return dropDownColumnSourceDictionary;
}
public EgyhaztartasbanElokCo GetEgyhaztartasbanElokData(int felhasznaloId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var rows = new List<EgyhaztartasbanElokRowCo>();
var felhasznalo = h.Felhasznalo().Get(felhasznaloId);
rows = felhasznalo.EgyHaztartasbanElok.Where(e => e.Torolt == false).Select(e => new EgyhaztartasbanElokRowCo
{
ID = e.ID,
Nev = e.Nev,
AnyjaNev = e.AnyjaNeve,
SzuletesiIdo = e.SzuletesiIdo,
SzuletesiHely = e.SzuletesiHely,
Taj = e.TajSzam,
RokonsagiFok = e.RokonsagiFokId,
Email = e.Email,
Telefon = e.Telefon
}).ToList();
var co = new EgyhaztartasbanElokCo { Sorok = rows };
return co;
});
}
public void SaveEgyhaztartasbanElokData(EgyhaztartasbanElokCo co, int felhasznaloId, int? gondviseloId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
foreach (var item in co.Sorok)
{
var dal = h.Felhasznalo();
if (item.ID.HasValue && item.isDeleted)
{
dal.DeleteEgyhaztartasbanElok(item.ID.Value);
}
else if (!item.ID.HasValue && !item.isDeleted)
{
var data = dal.GetEgyhaztartasbanElok();
data.Nev = item.Nev;
data.AnyjaNeve = item.AnyjaNev;
data.SzuletesiIdo = item.SzuletesiIdo.Value;
data.SzuletesiHely = item.SzuletesiHely;
data.TajSzam = item.Taj;
data.RokonsagiFokId = item.RokonsagiFok.Value;
data.Email = item.Email;
data.Telefon = item.Telefon;
data.RogzitoFelhasznaloId = felhasznaloId;
if (gondviseloId.HasValue)
{
data.RogzitoGondviseloId = gondviseloId.Value;
}
dal.InsertEgyhaztartasbanElok(data);
}
else
{
var data = dal.GetEgyhaztartasbanElok(item.ID.Value);
data.Nev = item.Nev;
data.AnyjaNeve = item.AnyjaNev;
data.SzuletesiIdo = item.SzuletesiIdo.Value;
data.SzuletesiHely = item.SzuletesiHely;
data.TajSzam = item.Taj;
data.RokonsagiFokId = item.RokonsagiFok.Value;
data.Email = item.Email;
data.Telefon = item.Telefon;
dal.FullUpdateEgyhaztartasbanElok(data);
}
}
});
}
public ProjektFelhasznaloCo GetProjektFelhasznaloData()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo();
var userData = dal.Get(FelhasznaloId);
return new ProjektFelhasznaloCo()
{
NyomtatasiNev = userData.NyomtatasiNev,
OktatasiAzonosito = userData.OktatasiAzonosito,
IdpEgyediAzonosito = userData.IdpEgyediAzonosito.ToString()
};
});
}
public (string NyomtatasiNev, string OktatasiAzonosito) GetFelhasznaloNevOktAzonById(int felhasznaloId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo();
var felhasznalo = dal.Get(felhasznaloId);
return (felhasznalo.NyomtatasiNev, felhasznalo.OktatasiAzonosito);
});
}
public XmlDocument GetUserProfileDocument(int userId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var userProfile = h.Felhasznalo().GetUserProfile(userId);
var xmlDocument = new XmlDocument();
if (!string.IsNullOrWhiteSpace(userProfile))
{
xmlDocument.LoadXml(userProfile);
if (!xmlDocument.InnerXml.Trim().StartsWith("<UserProfile", StringComparison.Ordinal))
{
xmlDocument.InnerXml = string.Empty;
}
}
return xmlDocument;
});
}
public void SaveUserProfileDocument(XmlDocument xmlDocument, int userId)
{
var xml = xmlDocument.InnerXml;
if (!string.IsNullOrWhiteSpace(xml))
{
var request = new XmlDocument();
request.LoadXml(xml);
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo();
var user = dal.Get(userId);
dal.UpdateProfile(user, xml);
});
}
}
public bool GetProfilTipus(int userId, string profilTipus)
{
var xmlDocument = GetUserProfileDocument(userId);
var node = xmlDocument.SelectSingleNode("UserProfile/" + profilTipus);
if (node == null)
{
return false;
}
return bool.TryParse(node.InnerText, out var result) && result;
}
public void SetProfilTipus(int userId, string profilTipus, bool ertek)
{
var xmlDocument = GetUserProfileDocument(userId);
if (xmlDocument.SelectSingleNode("UserProfile") == null)
{
var el = xmlDocument.CreateElement("UserProfile");
xmlDocument.AppendChild(el);
}
if (xmlDocument.SelectSingleNode("UserProfile/" + profilTipus) == null)
{
xmlDocument.SelectSingleNode("UserProfile").AppendChild(xmlDocument.CreateNode(XmlNodeType.Element, profilTipus, string.Empty));
}
var node = xmlDocument.SelectSingleNode("UserProfile/" + profilTipus);
node.InnerXml = ertek.ToString();
SaveUserProfileDocument(xmlDocument, userId);
}
public string GetBankszamlaVezetoBankNeve(string bankszamlaSzam)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
return h.Felhasznalo().GetBankszamlaVezetoBankNeve(IntezmenyAzonosito, bankszamlaSzam);
});
}
}
}