init
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
using System.Collections.Generic;
|
||||
using Kreta.Ellenorzo.BL.VN.Ellenorzo;
|
||||
using Kreta.Ellenorzo.Domain.VN.Common;
|
||||
using Kreta.Ellenorzo.Domain.VN.Fogadoora;
|
||||
using Kreta.Ellenorzo.Domain.VN.Fogadoora.Idopont;
|
||||
|
||||
namespace Kreta.Ellenorzo.BL.VN.Fogadoora
|
||||
{
|
||||
public class FogadooraFacade : EllenorzoFacade
|
||||
{
|
||||
public FogadooraFacade(MobileUser mobileUser) : base(mobileUser)
|
||||
{
|
||||
}
|
||||
|
||||
public HashSet<FogadooraListResponse> ListFogadoora(FogadooraListRequest request)
|
||||
=> RunSubquery(() => FogadooraSubqueries.ListFogadoora(DefaultConnectionParameters, request));
|
||||
|
||||
public FogadooraResponse GetFogadoora(string uid)
|
||||
=> RunSubquery(() => FogadooraSubqueries.GetFogadoora(DefaultConnectionParameters, uid));
|
||||
|
||||
public void DeleteFogadooraIdopontJelentkezes(FogadooraIdopontJelentkezesDeleteRequest request) => RunSubquery(()
|
||||
=> FogadooraSubqueries.DeleteSajatFogadooraIdopontJelentkezes(DefaultConnectionParameters, request));
|
||||
|
||||
public void CreateFogadooraIdopontJelentkezes(FogadooraJelentkezesCreateRequest request)
|
||||
=> RunSubquery(() => FogadooraSubqueries.CreateFogadooraIdopontJelentkezes(DefaultConnectionParameters, request));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,175 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Kreta.BusinessLogic.Helpers;
|
||||
using Kreta.Core.ConnectionType;
|
||||
using Kreta.Core.Enum;
|
||||
using Kreta.Core.Exceptions;
|
||||
using Kreta.Core.Logic;
|
||||
using Kreta.DataAccessManual.Util;
|
||||
using Kreta.Ellenorzo.BL.VN.Logic;
|
||||
using Kreta.Ellenorzo.Dao.VN.Fogadoora;
|
||||
using Kreta.Ellenorzo.Domain.VN.Common;
|
||||
using Kreta.Ellenorzo.Domain.VN.Felhasznalo.Alkalmazott.Tanar;
|
||||
using Kreta.Ellenorzo.Domain.VN.Fogadoora;
|
||||
using Kreta.Ellenorzo.Domain.VN.Fogadoora.Idopont;
|
||||
using Kreta.Ellenorzo.Domain.VN.Terem;
|
||||
using Kreta.Ellenorzo.Domain.VN.UniqueIdentifier;
|
||||
using Kreta.Ellenorzo.Enums;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Resources;
|
||||
|
||||
namespace Kreta.Ellenorzo.BL.VN.Fogadoora
|
||||
{
|
||||
internal static class FogadooraSubqueries
|
||||
{
|
||||
internal static HashSet<FogadooraListResponse> ListFogadoora(DefaultConnectionParameters dcp, FogadooraListRequest request)
|
||||
{
|
||||
new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid();
|
||||
|
||||
var fogadoorakAndFogadooraIdopontokDaoList = dcp.DalHandler.Fogadoora().GetTanarFogadoorakByGondviseloId(dcp.GondviseloId.Value, request.Uid?.Id, request.DatumTol).ToDaoList<FogadooraResponseDao>();
|
||||
|
||||
if (!fogadoorakAndFogadooraIdopontokDaoList.Any())
|
||||
{
|
||||
return new HashSet<FogadooraListResponse>();
|
||||
}
|
||||
|
||||
var fogadooraIdopontokByTanarId = fogadoorakAndFogadooraIdopontokDaoList.GroupBy(i => (i.TanarId, i.TanarNev))
|
||||
.ToDictionary(i => i.Key, i => i.GroupBy(l => l.FogadooraId));
|
||||
|
||||
return GetFogadooraListResponse(fogadooraIdopontokByTanarId).ToHashSet();
|
||||
}
|
||||
|
||||
private static IEnumerable<FogadooraListResponse> GetFogadooraListResponse(Dictionary<(int TanarId, string TanarNev), IEnumerable<IGrouping<int, FogadooraResponseDao>>> fogadooraIdopontokByTanarId)
|
||||
{
|
||||
foreach ((var tanarId, var tanarNev) in fogadooraIdopontokByTanarId.Keys)
|
||||
{
|
||||
var tanarFogadoorai = new FogadooraListResponse()
|
||||
{
|
||||
Tanar = new TanarSimplifiedResponse
|
||||
{
|
||||
Uid = new TanarUid(tanarId),
|
||||
Nev = tanarNev
|
||||
},
|
||||
Fogadoorak = fogadooraIdopontokByTanarId[(tanarId, tanarNev)].Select(fogadoora => CreateFogadooraResponse(fogadoora, fogadoora.First())).ToList()
|
||||
};
|
||||
|
||||
yield return tanarFogadoorai;
|
||||
}
|
||||
}
|
||||
|
||||
private static FogadooraResponse CreateFogadooraResponse(IGrouping<int, FogadooraResponseDao> fogadoora, FogadooraResponseDao fogadooraValueFirst)
|
||||
{
|
||||
return new FogadooraResponse
|
||||
{
|
||||
Uid = new FogadooraUid(fogadoora.Key),
|
||||
Terem = new TeremSimplifiedResponse
|
||||
{
|
||||
Uid = new TeremUid(fogadooraValueFirst.TeremId),
|
||||
Nev = fogadooraValueFirst.TeremNev
|
||||
},
|
||||
IsJelentkezesFeatureEnabled = fogadooraValueFirst.TipusId != (int)FogadooraTipusEnum.NemJelentkezheto,
|
||||
KezdoIdopont = fogadooraValueFirst.FogadooraKezdete,
|
||||
VegIdopont = fogadooraValueFirst.FogadooraVege,
|
||||
JelentkezesHatarido = fogadooraValueFirst.JelentkezesHatarido,
|
||||
Idopontok = fogadooraValueFirst.FogadooraIdopontId.HasValue ? GetFogadooraIdopontok(fogadoora).ToList() : new List<FogadooraIdopontResponse>()
|
||||
};
|
||||
}
|
||||
|
||||
private static IEnumerable<FogadooraIdopontResponse> GetFogadooraIdopontok(IGrouping<int, FogadooraResponseDao> fogadoora)
|
||||
{
|
||||
return fogadoora.Where(fogadooraIdopont => fogadooraIdopont.IsSzabadIdopont || (!fogadooraIdopont.IsSzabadIdopont && fogadooraIdopont.IsJelentkeztem))
|
||||
.Select(idopont => new FogadooraIdopontResponse
|
||||
{
|
||||
Uid = new FogadooraIdopontUid(idopont.FogadooraIdopontId.Value),
|
||||
FogadooraUid = new FogadooraUid(idopont.FogadooraId),
|
||||
FogadooraKezdete = idopont.FogadooraKezdete,
|
||||
KezdoIdopont = idopont.FogadooraIdopontKezdete.Value,
|
||||
VegIdopont = idopont.FogadooraIdopontVege.Value,
|
||||
JelentkezesHatarido = idopont.JelentkezesHatarido,
|
||||
IsJelentkeztem = idopont.IsJelentkeztem
|
||||
});
|
||||
}
|
||||
|
||||
internal static FogadooraResponse GetFogadoora(DefaultConnectionParameters dcp, string uid)
|
||||
{
|
||||
return ListFogadoora(dcp, new FogadooraListRequest() { Uid = new FogadooraUid(uid) }).SingleOrDefault()?.Fogadoorak?.SingleOrDefault() ?? throw new BlException(BlExceptionType.NemLetezoEntitas);
|
||||
}
|
||||
|
||||
internal static void DeleteSajatFogadooraIdopontJelentkezes(DefaultConnectionParameters dcp, FogadooraIdopontJelentkezesDeleteRequest request)
|
||||
{
|
||||
var jogosultElemek = ListHozzaferhetoFogadooraIdopont(dcp);
|
||||
if (jogosultElemek.TryGetValue(new FogadooraIdopontResponse { Uid = new FogadooraIdopontUid(request.FogadooraIdopontUid.Id) }, out var talaltElem))
|
||||
{
|
||||
if (!talaltElem.IsJelentkeztem)
|
||||
{
|
||||
throw new BlException(BlExceptionType.AMuveletNemVegezhetoElTobbszor);
|
||||
}
|
||||
if (DateTime.Now > talaltElem.FogadooraKezdete)
|
||||
{
|
||||
throw new BlException(ErrorResource.FogadooraJelentkezestMarNemLehetLemondani, BlExceptionType.ModelValidacio);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new BlException(BlExceptionType.NemLetezoEntitas);
|
||||
}
|
||||
|
||||
var isJelentkezesFeatureEnabled = dcp.DalHandler.Fogadoora().IsFogadooraJelentkezesFeatureEnabled(request.FogadooraIdopontUid.Id);
|
||||
if (!isJelentkezesFeatureEnabled)
|
||||
{
|
||||
throw new BlException(BlExceptionType.FunkcioKikapcsolva);
|
||||
}
|
||||
|
||||
new FogadooraHelper(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler))
|
||||
.FogadooraGondviseloJelentkezesLemondas(request.FogadooraIdopontUid.Id, dcp.GondviseloId.Value);
|
||||
}
|
||||
|
||||
internal static void CreateFogadooraIdopontJelentkezes(DefaultConnectionParameters dcp, FogadooraJelentkezesCreateRequest request)
|
||||
{
|
||||
var jogosultElemek = ListHozzaferhetoFogadooraIdopont(dcp);
|
||||
if (jogosultElemek.TryGetValue(new FogadooraIdopontResponse { Uid = new FogadooraIdopontUid(request.FogadooraIdopontUid.Id) }, out var talaltElem))
|
||||
{
|
||||
if (talaltElem.IsJelentkeztem)
|
||||
{
|
||||
throw new BlException(BlExceptionType.AMuveletNemVegezhetoElTobbszor);
|
||||
}
|
||||
|
||||
if (DateTime.Now > (talaltElem.JelentkezesHatarido ?? talaltElem.FogadooraKezdete))
|
||||
{
|
||||
throw new BlException(ErrorResource.FogadooraJelentkezesHataridejeLejart, BlExceptionType.ModelValidacio);
|
||||
}
|
||||
|
||||
if (jogosultElemek.Any(x => x.FogadooraUid.Id == talaltElem.FogadooraUid.Id && x.IsJelentkeztem))
|
||||
{
|
||||
throw new BlException(BlExceptionType.AMuveletNemVegezhetoElTobbszor);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new BlException(BlExceptionType.NemLetezoEntitas);
|
||||
}
|
||||
|
||||
var isJelentkezesFeatureEnabled = dcp.DalHandler.Fogadoora().IsFogadooraJelentkezesFeatureEnabled(request.FogadooraIdopontUid.Id);
|
||||
if (!isJelentkezesFeatureEnabled)
|
||||
{
|
||||
throw new BlException(BlExceptionType.FunkcioKikapcsolva);
|
||||
}
|
||||
|
||||
new FogadooraHelper(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler))
|
||||
.FogadooraGondviseloJelentkezes(request.FogadooraIdopontUid.Id, dcp.GondviseloId.Value);
|
||||
}
|
||||
|
||||
internal static HashSet<FogadooraIdopontResponse> ListHozzaferhetoFogadooraIdopont(DefaultConnectionParameters dcp)
|
||||
{
|
||||
var response = new HashSet<FogadooraIdopontResponse>();
|
||||
if (FelhasznaloLogic.IsJogosult(false, dcp.JogosultsagLista, FelhasznaloSzerepkor.Gondviselo))
|
||||
{
|
||||
response = ListFogadoora(dcp, new FogadooraListRequest())
|
||||
.SelectMany(x => x.Fogadoorak).SelectMany(f => f.Idopontok).ToHashSet(new FogadooraIdopontResponse());
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user