212 lines
8.1 KiB
C#
212 lines
8.1 KiB
C#
using System;
|
|
using System.Linq;
|
|
using Kreta.BusinessLogic.Exceptions;
|
|
using Kreta.BusinessLogic.HelperClasses;
|
|
using Kreta.BusinessLogic.Utils;
|
|
using Kreta.Core;
|
|
using Kreta.Core.ConnectionType;
|
|
using Kreta.DataAccess.Interfaces;
|
|
using Kreta.DataAccessManual;
|
|
using Kreta.DataAccessManual.Interfaces;
|
|
using Kreta.DataAccessManual.Util;
|
|
using Kreta.Resources;
|
|
|
|
namespace Kreta.BusinessLogic.Helpers
|
|
{
|
|
public class JelszoLinkHelper : LogicBase
|
|
{
|
|
public JelszoLinkHelper(IConnectionType connectionType, string guid) : base(connectionType)
|
|
{
|
|
this.guid = guid;
|
|
}
|
|
|
|
public JelszoLinkHelper(IConnectionType connectionType, int gondviseloId) : base(connectionType)
|
|
{
|
|
this.gondviseloId = gondviseloId;
|
|
}
|
|
|
|
private const int maxProbalkozasokSzama = 3;
|
|
private string guid;
|
|
private int? gondviseloId;
|
|
|
|
private IJelszoModositasLink GetLink(IDalHandler h)
|
|
{
|
|
var dal = h.JelszoModositasLinkDal();
|
|
|
|
if (gondviseloId.IsEntityId())
|
|
{
|
|
guid = dal.GetGuidByGondviseloId(gondviseloId.Value);
|
|
}
|
|
|
|
var id = dal.GetId(guid);
|
|
if (id.IsEntityId())
|
|
{
|
|
return dal.Get(id.Value);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public bool IsSzulDatumValidacio()
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var link = GetLink(h);
|
|
|
|
if (link != null)
|
|
{
|
|
return IsSzulDatumValidacio(h, link);
|
|
}
|
|
|
|
return false;
|
|
});
|
|
}
|
|
|
|
public IsSuccessResponseCo SaveJelszo(JelszoValtoztatoCo co)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var link = GetLink(h);
|
|
|
|
if (link == null)
|
|
{
|
|
return new IsSuccessResponseCo(false, AdminisztracioResource.AJelszoValtoztatasSikertelen);
|
|
}
|
|
|
|
try
|
|
{
|
|
co.IsSzulDatumValidacio = IsSzulDatumValidacio(h, link);
|
|
}
|
|
catch (KretaJelszoModositasException e)
|
|
{
|
|
return new IsSuccessResponseCo(false, e.Message);
|
|
}
|
|
|
|
if (co.IsSzulDatumValidacio)
|
|
{
|
|
if (!ValidateSzulestesiDatum(h, co.TanuloSzuletesiDatum.Value, link.FelhasznaloId))
|
|
{
|
|
var probalkozasokSzama = default(int);
|
|
link.ProbalkozasokSzama++;
|
|
h.JelszoModositasLinkDal().Update(link);
|
|
|
|
probalkozasokSzama = maxProbalkozasokSzama - link.ProbalkozasokSzama;
|
|
|
|
if (probalkozasokSzama > 0)
|
|
{
|
|
return new IsSuccessResponseCo(false, string.Format(ErrorResource.HibasSzuletesiDatumMeg0AlkalommalProbalkozhat, probalkozasokSzama.ToString()));
|
|
}
|
|
|
|
var intezmenyCo = new IntezmenyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetAktivIntezmenyNevCim();
|
|
return new IsSuccessResponseCo(false, string.Format(ErrorResource.HibasSzuletesiDatum, intezmenyCo.Nev, intezmenyCo.IntezmenyCim));
|
|
}
|
|
}
|
|
|
|
JelszoModositasEsEmail(h, co, link.GondviseloId, link.FelhasznaloId);
|
|
DeleteLink(h, link);
|
|
|
|
return new IsSuccessResponseCo(true, AdminisztracioResource.AJelszoValtoztatasSikeres);
|
|
});
|
|
}
|
|
|
|
public void DeleteLink()
|
|
{
|
|
Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var link = GetLink(h);
|
|
|
|
if (link != null)
|
|
{
|
|
DeleteLink(h, link);
|
|
}
|
|
});
|
|
}
|
|
|
|
private bool IsSzulDatumValidacio(IDalHandler h, IJelszoModositasLink link)
|
|
{
|
|
if ((DateTime.Now - link.LetrehozasDatuma).Days > 7)
|
|
{
|
|
DeleteInvalidLink(h, link);
|
|
var intezmenyCo = new IntezmenyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetAktivIntezmenyNevCim();
|
|
throw new KretaJelszoModositasException(string.Format(ErrorResource.EzAFeluletMarNemElerhetoAzOnSzamaraInvalidLink, intezmenyCo.Nev, intezmenyCo.IntezmenyCim));
|
|
}
|
|
|
|
if (link.ProbalkozasokSzama > 2)
|
|
{
|
|
DeleteInvalidLink(h, link);
|
|
var intezmenyCo = new IntezmenyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetAktivIntezmenyNevCim();
|
|
throw new KretaJelszoModositasException(string.Format(ErrorResource.EzAFeluletMarNemElerhetoAzOnSzamaraInvalidLink, intezmenyCo.Nev, intezmenyCo.IntezmenyCim));
|
|
}
|
|
|
|
return link.IsSzuletesiDatumValidacio;
|
|
}
|
|
|
|
private void JelszoModositasEsEmail(IDalHandler h, JelszoValtoztatoCo co, int gondviseloId, int felhasznaloId)
|
|
{
|
|
var connectionType = new DalHandlerConnectionType(ConnectionType, h);
|
|
var felhasznaloBelepesHelper = new FelhasznaloBelepesHelper(connectionType);
|
|
|
|
if (gondviseloId.IsEntityId())
|
|
{
|
|
var intezmenyCo = new IntezmenyHelper(connectionType).GetAktivIntezmenyNevCim();
|
|
var felhasznaloBelepesDal = h.FelhasznaloBelepes();
|
|
var gondviseloDal = h.Gondviselo();
|
|
var gondviselo = gondviseloDal.Get(gondviseloId);
|
|
var gondviseloFelhasznaloBelepes = gondviselo.FelhasznaloBelepes.SingleOrDefault(x => !x.Torolt);
|
|
var felhasznaloNev = string.Empty;
|
|
if (gondviseloFelhasznaloBelepes == null)
|
|
{
|
|
var tanulo = h.Tanulo().Get(felhasznaloId);
|
|
var index = 1;
|
|
felhasznaloNev = CommonUtils.GenerateGondviseloBejelentkezesiNev(felhasznaloBelepesDal, tanulo.OktatasiAzonosito, ref index, TanevId);
|
|
|
|
felhasznaloBelepesHelper.GrantLogin(felhasznaloId, felhasznaloNev, co.UjJelszo, gondviseloId);
|
|
}
|
|
else
|
|
{
|
|
felhasznaloNev = gondviseloFelhasznaloBelepes.BejelentkezesiNev;
|
|
felhasznaloBelepesHelper.ChangeUserPassword(felhasznaloNev, co.UjJelszo);
|
|
}
|
|
|
|
var gondviseloEmail = gondviselo.Email.SingleOrDefault(x => !x.Torolt && !x.IsHibasanMegadva && x.Alapertelmezett);
|
|
if (gondviseloEmail != null)
|
|
{
|
|
var message = string.Format(EmailResource.JelszoValtoztatasUtanFelhaszNevErtesitesEmail, gondviselo.Nev, felhasznaloNev, intezmenyCo.Nev, intezmenyCo.IntezmenyCim, CommonUtils.GetIntezmenyUrl(intezmenyCo.IntezmenyAzonosito));
|
|
new UzenetekHelper(connectionType).GondviseloJelszoEmail(message, gondviseloEmail.EmailCim, gondviseloEmail.Guid);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var felhasznaloBelepes = h.Tanulo().Get(felhasznaloId).FelhasznaloBelepes.SingleOrDefault(x => !x.Torolt && x.Gondviselo == null);
|
|
felhasznaloBelepesHelper.ChangeUserPassword(felhasznaloBelepes.BejelentkezesiNev, co.UjJelszo);
|
|
}
|
|
}
|
|
|
|
private void DeleteInvalidLink(IDalHandler h, IJelszoModositasLink link)
|
|
{
|
|
var gondviseloDal = h.Gondviselo();
|
|
|
|
var gondviselo = gondviseloDal.Get(link.GondviseloId);
|
|
if (gondviselo.IsCsokkentettGondviselo)
|
|
{
|
|
gondviseloDal.Delete(gondviselo);
|
|
}
|
|
else
|
|
{
|
|
DeleteLink(h, link);
|
|
}
|
|
}
|
|
|
|
private void DeleteLink(IDalHandler h, IJelszoModositasLink link)
|
|
{
|
|
h.JelszoModositasLinkDal().Delete(link);
|
|
}
|
|
|
|
private bool ValidateSzulestesiDatum(IDalHandler h, DateTime tanuloSzuletesiDatum, int felhasznaloId)
|
|
{
|
|
var tanuloSzulDatumDbben = h.Tanulo().Get(felhasznaloId).SzuletesiDatum;
|
|
|
|
return tanuloSzulDatumDbben.Equals(tanuloSzuletesiDatum);
|
|
}
|
|
}
|
|
}
|