288 lines
22 KiB
C#
288 lines
22 KiB
C#
namespace Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Logic
|
|
{
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Ora.Common;
|
|
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Ora.JavasoltJelenletTemplate;
|
|
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Enum;
|
|
using Kreta.Core.Validation.Exceptions;
|
|
using Kreta.Core.Validation.Exceptions.Enum;
|
|
using Kreta.Enums;
|
|
using Kreta.Enums.ManualEnums;
|
|
|
|
/// TODO: Optional refact: lehetne dictionary a template, sokkal optimálisabb lenne (DevKornél)
|
|
public class JavasoltJelenletTemplateLogic
|
|
{
|
|
private static readonly List<JavasoltJelenletTemplateGetResponseCo> OrarendiOraJavasoltJelenlet = new List<JavasoltJelenletTemplateGetResponseCo> {
|
|
new JavasoltJelenletTemplateGetResponseCo{
|
|
Tipus = JavasoltJelenletTemplateType.Default,
|
|
Prioritas = 1,
|
|
SzuroElemLista = new List<JavasoltJelenletTemplateItemGetResponseCo>{
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.ures),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(true,true,MulasztasTipusEnum.jelenlet),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.hianyzas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.potlas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.szabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.tappenz),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.betegszabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.keses)
|
|
}
|
|
},
|
|
new JavasoltJelenletTemplateGetResponseCo{
|
|
Tipus = JavasoltJelenletTemplateType.ElozoOranHianyzott,
|
|
Prioritas = 2,
|
|
SzuroElemLista = new List<JavasoltJelenletTemplateItemGetResponseCo>{
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.ures),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.jelenlet),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(true,true,MulasztasTipusEnum.hianyzas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.potlas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.szabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.tappenz),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.betegszabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.keses)
|
|
}
|
|
},
|
|
new JavasoltJelenletTemplateGetResponseCo{
|
|
Tipus = JavasoltJelenletTemplateType.Igazolas,
|
|
Prioritas = 3,
|
|
SzuroElemLista = new List<JavasoltJelenletTemplateItemGetResponseCo>{
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.ures),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.jelenlet),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(true,true,MulasztasTipusEnum.hianyzas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.potlas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.szabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.tappenz),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.betegszabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.keses)
|
|
}
|
|
},
|
|
new JavasoltJelenletTemplateGetResponseCo{
|
|
Tipus = JavasoltJelenletTemplateType.ParhuzamosOranNaplozott,
|
|
Prioritas = 4,
|
|
SzuroElemLista = new List<JavasoltJelenletTemplateItemGetResponseCo>{
|
|
new JavasoltJelenletTemplateItemGetResponseCo(true,true,MulasztasTipusEnum.ures),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.jelenlet),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,false,MulasztasTipusEnum.hianyzas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.potlas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.szabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.tappenz),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.betegszabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,false,MulasztasTipusEnum.keses)
|
|
}
|
|
},
|
|
new JavasoltJelenletTemplateGetResponseCo{
|
|
Tipus = JavasoltJelenletTemplateType.MagantanuloOralatogatasAloliMentesseg,
|
|
Prioritas = 5,
|
|
SzuroElemLista = new List<JavasoltJelenletTemplateItemGetResponseCo>{
|
|
new JavasoltJelenletTemplateItemGetResponseCo(true,true,MulasztasTipusEnum.ures),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.jelenlet),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,false,MulasztasTipusEnum.hianyzas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.potlas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.szabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.tappenz),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.betegszabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,false,MulasztasTipusEnum.keses)
|
|
}
|
|
},
|
|
new JavasoltJelenletTemplateGetResponseCo{
|
|
Tipus = JavasoltJelenletTemplateType.Felmentes,
|
|
Prioritas = 6,
|
|
SzuroElemLista = new List<JavasoltJelenletTemplateItemGetResponseCo>{
|
|
new JavasoltJelenletTemplateItemGetResponseCo(true,true,MulasztasTipusEnum.ures),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.jelenlet),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,false,MulasztasTipusEnum.hianyzas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.potlas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.szabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.tappenz),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.betegszabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,false,MulasztasTipusEnum.keses)
|
|
}
|
|
},
|
|
new JavasoltJelenletTemplateGetResponseCo{
|
|
Tipus = JavasoltJelenletTemplateType.SzakmaiGyakorlat,
|
|
Prioritas = 7,
|
|
SzuroElemLista = new List<JavasoltJelenletTemplateItemGetResponseCo>{
|
|
new JavasoltJelenletTemplateItemGetResponseCo(true,true,MulasztasTipusEnum.ures),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.jelenlet),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.hianyzas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.potlas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.szabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.tappenz),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.betegszabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.keses)
|
|
}
|
|
},
|
|
new JavasoltJelenletTemplateGetResponseCo{
|
|
Tipus = JavasoltJelenletTemplateType.JogviszonySzuneteltetes,
|
|
Prioritas = 8,
|
|
SzuroElemLista = new List<JavasoltJelenletTemplateItemGetResponseCo>{
|
|
new JavasoltJelenletTemplateItemGetResponseCo(true,true,MulasztasTipusEnum.ures),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,false,MulasztasTipusEnum.jelenlet),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,false,MulasztasTipusEnum.hianyzas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.potlas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.szabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.tappenz),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.betegszabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,false,MulasztasTipusEnum.keses)
|
|
}
|
|
}
|
|
};
|
|
|
|
private static readonly List<JavasoltJelenletTemplateGetResponseCo> TanitasiOraJavasoltJelenlet = new List<JavasoltJelenletTemplateGetResponseCo> {
|
|
new JavasoltJelenletTemplateGetResponseCo{
|
|
Tipus = JavasoltJelenletTemplateType.Default,
|
|
Prioritas = 1,
|
|
SzuroElemLista = new List<JavasoltJelenletTemplateItemGetResponseCo>{
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true, MulasztasTipusEnum.ures),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.jelenlet),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.hianyzas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.potlas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.szabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.tappenz),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.betegszabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.keses)
|
|
}
|
|
},
|
|
new JavasoltJelenletTemplateGetResponseCo{
|
|
Tipus = JavasoltJelenletTemplateType.ElozoOranHianyzott,
|
|
Prioritas = 2,
|
|
SzuroElemLista = new List<JavasoltJelenletTemplateItemGetResponseCo>{
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.ures),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.jelenlet),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.hianyzas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.potlas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.szabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.tappenz),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.betegszabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.keses)
|
|
}
|
|
},
|
|
new JavasoltJelenletTemplateGetResponseCo{
|
|
Tipus = JavasoltJelenletTemplateType.Igazolas,
|
|
Prioritas = 3,
|
|
SzuroElemLista = new List<JavasoltJelenletTemplateItemGetResponseCo>{
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false, true, MulasztasTipusEnum.ures),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false, true, MulasztasTipusEnum.jelenlet),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false, true, MulasztasTipusEnum.hianyzas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.potlas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.szabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.tappenz),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.betegszabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false, true, MulasztasTipusEnum.keses)
|
|
}
|
|
},
|
|
new JavasoltJelenletTemplateGetResponseCo{
|
|
Tipus = JavasoltJelenletTemplateType.ParhuzamosOranNaplozott,
|
|
Prioritas = 4,
|
|
SzuroElemLista = new List<JavasoltJelenletTemplateItemGetResponseCo>{
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.ures),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.jelenlet),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,false,MulasztasTipusEnum.hianyzas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.potlas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.szabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.tappenz),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.betegszabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,false,MulasztasTipusEnum.keses)
|
|
}
|
|
},
|
|
new JavasoltJelenletTemplateGetResponseCo{
|
|
Tipus = JavasoltJelenletTemplateType.MagantanuloOralatogatasAloliMentesseg,
|
|
Prioritas = 5,
|
|
SzuroElemLista = new List<JavasoltJelenletTemplateItemGetResponseCo>{
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.ures),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.jelenlet),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,false,MulasztasTipusEnum.hianyzas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.potlas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.szabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.tappenz),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.betegszabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,false,MulasztasTipusEnum.keses)
|
|
}
|
|
},
|
|
new JavasoltJelenletTemplateGetResponseCo{
|
|
Tipus = JavasoltJelenletTemplateType.Felmentes,
|
|
Prioritas = 6,
|
|
SzuroElemLista = new List<JavasoltJelenletTemplateItemGetResponseCo>{
|
|
new JavasoltJelenletTemplateItemGetResponseCo (false,true,MulasztasTipusEnum.ures),
|
|
new JavasoltJelenletTemplateItemGetResponseCo (false,true,MulasztasTipusEnum.jelenlet),
|
|
new JavasoltJelenletTemplateItemGetResponseCo (false,false,MulasztasTipusEnum.hianyzas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.potlas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.szabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.tappenz),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.betegszabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo (false,false,MulasztasTipusEnum.keses)
|
|
}
|
|
},
|
|
new JavasoltJelenletTemplateGetResponseCo{
|
|
Tipus = JavasoltJelenletTemplateType.SzakmaiGyakorlat,
|
|
Prioritas = 7,
|
|
SzuroElemLista = new List<JavasoltJelenletTemplateItemGetResponseCo>{
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.ures),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.jelenlet),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.hianyzas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.potlas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.szabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.tappenz),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.betegszabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.keses)
|
|
}
|
|
},
|
|
new JavasoltJelenletTemplateGetResponseCo{
|
|
Tipus = JavasoltJelenletTemplateType.JogviszonySzuneteltetes,
|
|
Prioritas = 8,
|
|
SzuroElemLista = new List<JavasoltJelenletTemplateItemGetResponseCo>{
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.ures),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,false,MulasztasTipusEnum.jelenlet),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,false,MulasztasTipusEnum.hianyzas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.potlas),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.szabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.tappenz),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,true,MulasztasTipusEnum.betegszabadsag),
|
|
new JavasoltJelenletTemplateItemGetResponseCo(false,false,MulasztasTipusEnum.keses)
|
|
}
|
|
}
|
|
};
|
|
|
|
public JavasoltJelenletTemplateLogic(TanoraAllapotaEnum oraAllapota)
|
|
{
|
|
OraAllapota = oraAllapota;
|
|
}
|
|
|
|
private JavasoltJelenletTemplateLogic()
|
|
{
|
|
}
|
|
|
|
public TanoraAllapotaEnum OraAllapota { get; }
|
|
|
|
/// TODO: vizsgálatot meg kell csinálni, ha magasabb prior állítana default értéket, de már le van tiltva (vagy egy új ajánlást) (DevKornél)
|
|
public JavasoltJelenletTemplateGetResponseCo GetCalculatedJelenletJavaslatConsideringSzuro(IEnumerable<IJavasoltJelenletSzuroGetResponseCo> javasoltJelenletTemplateTipusSzuroLista)
|
|
{
|
|
if (!javasoltJelenletTemplateTipusSzuroLista.Any(filter => filter.Tipus == JavasoltJelenletTemplateType.Default))
|
|
{
|
|
throw new ValidationException(ValidationErrorType.Undefined, $"{nameof(JavasoltJelenletTemplateType.Default)} template filter does not exist!");
|
|
}
|
|
|
|
var orderedTeljesultSzuroTemplateLista = GetTemplate().FindAll(template => javasoltJelenletTemplateTipusSzuroLista.Any(filter => filter.Tipus == template.Tipus)).OrderByDescending(x => x.Prioritas).ToList();
|
|
|
|
if (!orderedTeljesultSzuroTemplateLista.Exists(template => template.Tipus == JavasoltJelenletTemplateType.Default))
|
|
{
|
|
throw new ValidationException(ValidationErrorType.Undefined, $"{nameof(JavasoltJelenletTemplateType.Default)} template does not exist!");
|
|
}
|
|
|
|
return orderedTeljesultSzuroTemplateLista[0];
|
|
}
|
|
|
|
public List<JavasoltJelenletTemplateGetResponseCo> GetTemplate()
|
|
{
|
|
switch (this.OraAllapota)
|
|
{
|
|
case TanoraAllapotaEnum.Nem_naplozott:
|
|
return OrarendiOraJavasoltJelenlet;
|
|
case TanoraAllapotaEnum.Naplozott:
|
|
return TanitasiOraJavasoltJelenlet;
|
|
default:
|
|
throw new ValidationException(ValidationErrorType.Undefined, $"Template does not exist!");
|
|
}
|
|
}
|
|
}
|
|
}
|