kreta/KretaWeb/Areas/Adminisztracio/Models/SajatAdatlapInfoModel.cs
2024-03-13 00:33:46 +01:00

498 lines
24 KiB
C#

using System;
using System.ComponentModel.DataAnnotations;
using System.IO;
using System.Web.Mvc;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Interfaces;
using Kreta.Core.Configuratiaton;
using Kreta.Core.Configuratiaton.Interface;
using Kreta.Core.Logic;
using Kreta.Enums;
using Kreta.Resources;
using Kreta.Web.Models;
using Kreta.Web.Models.EditorTemplates;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Adminisztracio.Models
{
public class SajatAdatlapInfoModel : PanelBarChildModel
{
public SajatAdatlapInfoModel()
{
AlapAdat = new AlapAdatModel();
Gondviselo = new GondviseloModel();
TanuloIgazolvany = new TanuloIgazolvanyModel();
Felhasznalo4TAdatokModel = new Felhasznalo4TAdatokModel();
ApaczaiMentorNyugdijModel = new MentoriNyugdijModel();
}
public AlapAdatModel AlapAdat { get; set; }
public GondviseloModel Gondviselo { get; set; }
public TanuloIgazolvanyModel TanuloIgazolvany { get; set; }
public TanuloBankszamlaModel TanuloBankszamla { get; set; }
public AlkalmazottBankszamlaModel AlkalmazottBankszamla { get; set; }
public BankszamlaIgenylesModel MkbBankszamlaIgenylesModel { get; set; }
public BankszamlaIgenylesModel OtpBankszamlaIgenylesModel { get; set; }
public EgyhaztartasbanElokModel EgyhaztartasbanElokModel { get; set; }
public Felhasznalo4TAdatokModel Felhasznalo4TAdatokModel { get; set; }
public MentoriNyugdijModel ApaczaiMentorNyugdijModel { get; set; }
public bool HideControlsForApaczaiOD { get; set; }
public bool HideControlsForAlkalmazott { get; set; }
#region AlapAdat
public class AlapAdatModel
{
[Display(Name = nameof(AlkalmazottResource.OktatasiAzonosito), ResourceType = typeof(AlkalmazottResource))]
public string OktatasiAzonosito { get; set; }
[Display(Name = nameof(AlkalmazottResource.Elotag), ResourceType = typeof(AlkalmazottResource))]
public string EloTag { get; set; }
[Display(Name = nameof(AlkalmazottResource.CsaladiNev), ResourceType = typeof(AlkalmazottResource))]
public string CsaladiNev { get; set; }
[Display(Name = nameof(AlkalmazottResource.Utonev), ResourceType = typeof(AlkalmazottResource))]
public string Utonev { get; set; }
[Display(Name = nameof(AlkalmazottResource.SzuletesiElotag), ResourceType = typeof(AlkalmazottResource))]
public string SzuletesiElotag { get; set; }
[Display(Name = nameof(AlkalmazottResource.SzuletesiCsaladiNev), ResourceType = typeof(AlkalmazottResource))]
public string SzuletesiCsaladNev { get; set; }
[Display(Name = nameof(AlkalmazottResource.SzuletesiUtonev), ResourceType = typeof(AlkalmazottResource))]
public string SzuletesiUtonev { get; set; }
[Display(Name = nameof(AlkalmazottResource.AnyjaElotag), ResourceType = typeof(AlkalmazottResource))]
public string AnyjaElotag { get; set; }
[Display(Name = nameof(AlkalmazottResource.AnyjaCsaladiNeve), ResourceType = typeof(AlkalmazottResource))]
public string AnyjaCsaladiNeve { get; set; }
[Display(Name = nameof(AlkalmazottResource.AnyjaUtoneve), ResourceType = typeof(AlkalmazottResource))]
public string AnyjaUtonev { get; set; }
[Display(Name = nameof(TanuloResource.Anyanyelv), ResourceType = typeof(TanuloResource))]
public string Anyanyelv { get; set; }
[Display(Name = nameof(TanuloResource.SzuletesiOrszag), ResourceType = typeof(TanuloResource))]
public string SzuletesiOrszag { get; set; }
[Display(Name = nameof(TanuloResource.SzuletesiHely), ResourceType = typeof(TanuloResource))]
public string SzuletesiHely { get; set; }
[Display(Name = nameof(TanuloResource.SzuletesiIdo), ResourceType = typeof(TanuloResource))]
public DateTime SzuletesiIdo { get; set; }
[Display(Name = nameof(TanuloResource.SzuletesiIdo), ResourceType = typeof(TanuloResource))]
public string SzuletesiIdo_SDATE => SzuletesiIdo.ToString(Core.Constants.ToStringPattern.HungarianDateWithSpaces);
[Display(Name = nameof(TanuloResource.Allampolgarsag), ResourceType = typeof(TanuloResource))]
public string Allampolgarsag { get; set; }
[Display(Name = nameof(TanuloResource.Allampolgarsag2), ResourceType = typeof(TanuloResource))]
public string Allampolgarsag2 { get; set; }
[Display(Name = nameof(TanuloResource.IgazolvanyTipus), ResourceType = typeof(TanuloResource))]
public string IgazolvanyTipus { get; set; }
[Display(Name = nameof(TanuloResource.IgazolvanySzam), ResourceType = typeof(TanuloResource))]
public string IgazolvanySzam { get; set; }
[Display(Name = nameof(AlkalmazottResource.Felhasznalonev), ResourceType = typeof(AlkalmazottResource))]
public string BelepesiNev { get; set; }
[Display(Name = nameof(TanuloResource.Osztaly), ResourceType = typeof(TanuloResource))]
public string OsztalyNev { get; set; }
[Display(Name = nameof(OsztalyCsoportResource.Osztalyfonok), ResourceType = typeof(OsztalyCsoportResource))]
public string OsztalyfonokNev { get; set; }
[Display(Name = nameof(OsztalyCsoportResource.Terem), ResourceType = typeof(OsztalyCsoportResource))]
public string TeremNev { get; set; }
[Display(Name = nameof(TanuloResource.Evfolyam), ResourceType = typeof(TanuloResource))]
public string EvfolyamNev { get; set; }
}
#endregion
public class TanuloAdatModel : IKretaIdentity
{
public string ID { get; set; }
[Display(Name = nameof(TanuloResource.Tanulo), ResourceType = typeof(TanuloResource))]
public string TanuloNev { get; set; }
[Display(Name = nameof(TanuloResource.OktatasiAzonosito), ResourceType = typeof(TanuloResource))]
public string OktAzon { get; set; }
[Display(Name = nameof(TanuloResource.Osztaly), ResourceType = typeof(TanuloResource))]
public string OsztalyNev { get; set; }
[Display(Name = nameof(OsztalyCsoportResource.Osztalyfonok), ResourceType = typeof(OsztalyCsoportResource))]
public string OsztalyfonokNev { get; set; }
[Display(Name = nameof(OsztalyCsoportResource.Terem), ResourceType = typeof(OsztalyCsoportResource))]
public string TeremNev { get; set; }
}
#region Elerhetőségek
public class ElerhetosegCimModel : IKretaIdentity
{
public string ID { get; set; }
[Display(Name = nameof(TanuloResource.Tipus), ResourceType = typeof(TanuloResource))]
public string CimTipus_DNAME { get; set; }
[Display(Name = nameof(TanuloResource.Iranyitoszam), ResourceType = typeof(TanuloResource))]
public string Irsz { get; set; }
[Display(Name = nameof(TanuloResource.Helyseg), ResourceType = typeof(TanuloResource))]
public string Varos { get; set; }
[Display(Name = nameof(TanuloResource.Cim), ResourceType = typeof(TanuloResource))]
public string Cim { get; set; }
[Display(Name = nameof(TanuloResource.Kozterulet), ResourceType = typeof(TanuloResource))]
public string Kozterulet { get; set; }
[Display(Name = nameof(TanuloResource.KozteruletJellege), ResourceType = typeof(TanuloResource))]
public string KozteruletJellegeNev { get; set; }
[Display(Name = nameof(TanuloResource.Hazszam), ResourceType = typeof(TanuloResource))]
public string HazSzam { get; set; }
[Display(Name = nameof(TanuloResource.Emelet), ResourceType = typeof(TanuloResource))]
public string Emelet { get; set; }
[Display(Name = nameof(TanuloResource.Ajto), ResourceType = typeof(TanuloResource))]
public string Ajto { get; set; }
[Display(Name = nameof(TanuloResource.Alapertelmezett), ResourceType = typeof(TanuloResource))]
public bool Alapertelmezett_BOOL { get; set; }
}
public class ElerhetosegTelModel : IKretaIdentity
{
public string ID { get; set; }
[Display(Name = nameof(TanuloResource.Tipus), ResourceType = typeof(TanuloResource))]
public string Tipus_DNAME { get; set; }
[Display(Name = nameof(TanuloResource.Telefonszam), ResourceType = typeof(TanuloResource))]
public string TelefonSzam { get; set; }
[Display(Name = nameof(TanuloResource.Alapertelmezett), ResourceType = typeof(TanuloResource))]
public bool Alapertelmezett_BOOL { get; set; }
}
public class ElerhetosegEmailModel : IKretaIdentity
{
public string ID { get; set; }
[Display(Name = nameof(TanuloResource.Tipus), ResourceType = typeof(TanuloResource))]
public string Tipus_DNAME { get; set; }
[Display(Name = nameof(TanuloResource.EmailCim), ResourceType = typeof(TanuloResource))]
public string EmailCim { get; set; }
[Display(Name = nameof(TanuloResource.Alapertelmezett), ResourceType = typeof(TanuloResource))]
public bool Alapertelmezett_BOOL { get; set; }
}
public class TargyiEszkozModel : IKretaIdentity
{
public string ID { get; set; }
[Display(Name = nameof(TanarResource.Megnevezes), ResourceType = typeof(TanarResource))]
public string Megnevezes { get; set; }
[Display(Name = nameof(TanarResource.GyariSzam), ResourceType = typeof(TanarResource))]
public string GyariSzam { get; set; }
[Display(Name = nameof(TanarResource.LeltariSzam), ResourceType = typeof(TanarResource))]
public string LeltariSzam { get; set; }
}
#endregion
public class GondviseloModel
{
[Display(Name = nameof(TanuloResource.TeljesNev), ResourceType = typeof(TanuloResource))]
public string GondviseloNeve { get; set; }
[Display(Name = nameof(TanuloResource.RokonsagiFok), ResourceType = typeof(TanuloResource))]
public string RokonsagiFok { get; set; }
[Display(Name = nameof(TanuloResource.TorvenyesKepviselo), ResourceType = typeof(TanuloResource))]
public string IsTorvenyesKepviselo { get; set; }
}
public class TanuloIgazolvanyModel
{
[Display(Name = nameof(TanuloResource.IgazolvanySzama), ResourceType = typeof(TanuloResource))]
public string Igazolvanyszam { get; set; }
[Display(Name = nameof(TanuloResource.IgazolvanyTipus), ResourceType = typeof(TanuloResource))]
public string IgazolvanyTipus { get; set; }
[Display(Name = nameof(TanuloResource.DiakigazolvanySzam), ResourceType = typeof(TanuloResource))]
public string DiakigazolvanySzam { get; set; }
public DateTime? DiakigazolvanyKelte { get; set; }
[Display(Name = nameof(TanuloResource.DiakigazolvanyKelte), ResourceType = typeof(TanuloResource))]
public string DiakigazolvanyKelte_SDATE => DiakigazolvanyKelte.ToShortDateString();
[Display(Name = nameof(TanuloResource.TajSzam), ResourceType = typeof(TanuloResource))]
public string TajSzam { get; set; }
[Display(Name = nameof(TanuloResource.AdoazonositoJel), ResourceType = typeof(TanuloResource))]
public string AdoazonositoJel { get; set; }
}
public static SajatAdatlapInfoModel ConvertTanarAdatCoToModel(TanarAdatCO co, EgyhaztartasbanElokCo egyhaztartasbanElokCo)
{
var model = new SajatAdatlapInfoModel
{
AlapAdat = new AlapAdatModel
{
OktatasiAzonosito = co.OktatasiAzonosito,
EloTag = co.Elotag,
CsaladiNev = co.MunkavallaloCsaladiNev,
Utonev = co.MunkavallaloUtonev,
AnyjaCsaladiNeve = co.AnyjaCsaladiNeve,
AnyjaUtonev = co.AnyjaUtoneve,
AnyjaElotag = co.AnyjaNeveElotag,
SzuletesiCsaladNev = co.SzuletesiCsaladiNev,
SzuletesiUtonev = co.SzuletesiUtonev,
SzuletesiElotag = co.SzuletesiNevElotag,
SzuletesiHely = co.SzuletesiHely,
SzuletesiIdo = co.SzuletesiIdo,
IgazolvanyTipus = co.IgazolvanyTipus.GetDisplayName<IgazolvanyTipusEnum>(ClaimData.SelectedTanevID.Value),
IgazolvanySzam = co.IgazolvanySzam,
BelepesiNev = co.BelepesiNev
},
AlkalmazottBankszamla = new AlkalmazottBankszamlaModel("SajatAdatlapHelper.alkalmazottBankszamlaMentesClick")
{
BankszamlaSzam = co.BankszamlaSzam,
BankszamlaTulajdonos = co.BankszamlaTulajdonos,
BankszamlaTulajdonosNeve = co.BankszamlaTulajdonosNeve,
SzamlavezetoBank = co.SzamlavezetoBank,
IsApaczaiMentor = co.IsApaczaiMentor,
},
EgyhaztartasbanElokModel = GetEgyhaztartasbanElokModel(egyhaztartasbanElokCo),
ApaczaiMentorNyugdijModel = new MentoriNyugdijModel
{
IsApaczaiMentor = co.IsApaczaiMentor,
IsNyugdijas = co.IsNyugdijas,
NyugdijKezdet = co.NyugdijKezdet,
NyugdijTipusId = co.NyugdijTipusId,
MunkaugyiAdatId = co.MunkaugyiAdatId
}
};
return model;
}
public static SajatAdatlapInfoModel ConvertTanuloAdatCoToModel(TanuloAdatCO co, BankszamlaIgenylesCo bankszamlaIgenylesCo, EgyhaztartasbanElokCo egyhaztartasbanElokCo)
{
var model = new SajatAdatlapInfoModel
{
AlapAdat = new AlapAdatModel
{
OktatasiAzonosito = co.OktatasiAzonosito,
EloTag = co.Elotag,
CsaladiNev = co.CsaladiNev,
Utonev = co.UtoNev,
AnyjaCsaladiNeve = co.AnyjaCsaladiNev,
AnyjaUtonev = co.AnyjaUtoNev,
AnyjaElotag = co.AnyjaNeveElotag,
SzuletesiCsaladNev = co.SzuletesiCsaladiNev,
SzuletesiUtonev = co.SzuletesiUtoNev,
SzuletesiElotag = co.SzuletesiNevElotag,
SzuletesiOrszag = co.SzuletesiOrszag.GetDisplayName<OrszagTipusEnum>(ClaimData.SelectedTanevID.Value),
SzuletesiHely = co.SzuletesiHely,
SzuletesiIdo = co.SzuletesiIdo,
Anyanyelv = co.Anyanyelv.GetDisplayName<AnyanyelvEnum>(ClaimData.SelectedTanevID.Value),
Allampolgarsag = co.Allampolgarsag.GetDisplayName<AllampolgarsagEnum>(ClaimData.SelectedTanevID.Value),
Allampolgarsag2 = co.Allampolgarsag2.GetDisplayName<AllampolgarsagEnum>(ClaimData.SelectedTanevID.Value),
BelepesiNev = co.BelepesiNev,
OsztalyNev = co.OsztalyNev,
EvfolyamNev = co.EvfolyamNev,
OsztalyfonokNev = co.OsztalyfonokNev,
TeremNev = co.TeremNev
},
TanuloIgazolvany = new TanuloIgazolvanyModel
{
AdoazonositoJel = co.AdoazonositoJel,
DiakigazolvanyKelte = co.DiakigazolvanyKelte,
DiakigazolvanySzam = co.DiakigazolvanySzam,
Igazolvanyszam = co.Igazolvanyszam,
IgazolvanyTipus = co.IgazolvanyTipus.GetDisplayName<IgazolvanyTipusEnum>(ClaimData.SelectedTanevID.Value),
TajSzam = co.TajSzam
},
TanuloBankszamla = new TanuloBankszamlaModel("SajatAdatlapHelper.tanuloBankszamlaMentesClick")
{
BankszamlaSzam = co.BankszamlaSzam,
BankszamlaTulajdonos = co.BankszamlaTulajdonos,
BankszamlaTulajdonosNeve = co.BankszamlaTulajdonosNeve,
SzamlavezetoBank = co.SzamlavezetoBank,
},
MkbBankszamlaIgenylesModel = GetBankszamlaIgenylesModel<IMkbBankszamlaIgenylesConfiguration>(bankszamlaIgenylesCo),
OtpBankszamlaIgenylesModel = GetBankszamlaIgenylesModel<IOtpBankszamlaIgenylesConfiguration>(bankszamlaIgenylesCo),
EgyhaztartasbanElokModel = GetEgyhaztartasbanElokModel(egyhaztartasbanElokCo),
Felhasznalo4TAdatokModel = new Felhasznalo4TAdatokModel()
{
AnyjaUtonev = co.AnyjaUtoNev,
AnyjaVezeteknev = co.AnyjaCsaladiNev,
Elotag = co.Elotag,
SzuletesiDatum = co.SzuletesiIdo,
SzuletesiHely = co.SzuletesiHely,
SzuletesiUtonev = co.SzuletesiUtoNev,
SzuletesiVezeteknev = co.SzuletesiCsaladiNev,
Utonev = co.UtoNev,
Vezeteknev = co.CsaladiNev,
},
};
return model;
}
public static SajatAdatlapInfoModel ConvertGondviseloAdatCoToModel(TanuloGondviseloCO co, Felhasznalo4TAdatokCo felhasznalo4TAdatokCo, BankszamlaIgenylesCo bankszamlaIgenylesCo, EgyhaztartasbanElokCo egyhaztartasbanElokCo)
{
var model = new SajatAdatlapInfoModel
{
AlapAdat = new AlapAdatModel
{
BelepesiNev = co.GondviseloBelepesiNeve
},
Gondviselo = new GondviseloModel
{
RokonsagiFok = co.RokonsagiFok.GetDisplayName<RokonsagiFokEnum>(ClaimData.SelectedTanevID.Value),
IsTorvenyesKepviselo = co.IsTorvenyesKepviselo.GetDisplayName(),
GondviseloNeve = co.GondviseloNeve
},
TanuloBankszamla = new TanuloBankszamlaModel("SajatAdatlapHelper.tanuloBankszamlaMentesClick")
{
BankszamlaSzam = co.TanuloBankszamlaCo.BankszamlaSzam,
BankszamlaTulajdonos = co.TanuloBankszamlaCo.BankszamlaTulajdonos,
BankszamlaTulajdonosNeve = co.TanuloBankszamlaCo.BankszamlaTulajdonosNeve,
SzamlavezetoBank = co.TanuloBankszamlaCo.SzamlavezetoBank,
IsReadonly = !co.IsTorvenyesKepviselo
},
MkbBankszamlaIgenylesModel = GetBankszamlaIgenylesModel<MkbBankszamlaIgenylesConfiguration>(bankszamlaIgenylesCo, co),
OtpBankszamlaIgenylesModel = GetBankszamlaIgenylesModel<OtpBankszamlaIgenylesConfiguration>(bankszamlaIgenylesCo, co),
EgyhaztartasbanElokModel = GetEgyhaztartasbanElokModel(egyhaztartasbanElokCo),
Felhasznalo4TAdatokModel = new Felhasznalo4TAdatokModel(felhasznalo4TAdatokCo) { IsEditable = false }
};
return model;
}
private static BankszamlaIgenylesModel GetBankszamlaIgenylesModel<T>(BankszamlaIgenylesCo bankszamlaIgenylesCo, TanuloGondviseloCO gondviselo = null) where T : IBankszamlaIgenylesConfiguration
{
bool showIgenyles = false;
string igenylesOldalUrl = string.Empty;
//NOTE: Ha az adatbátzisban az intézmény adatokban(T_INTEZMENYADATOK) be van állítva, hogy szakképző az intézmény(C_ISSZAKKEPZO = 'T'), akkor lehet csak megjeleníteni a funkciót.
// Csak az NSZFH-s intézményeknél lehet true.
if (ClaimData.IsSzakkepzoIntezmeny)
{
//NOTE: Csak abban az esetben lehet igényelni bankszámlát, ha
// - még nincs bankszámlaszáma(azaz null vagy üres string a Bankszamlaszam) és
// - a tanuló bármelyik osztálya megfelelő évfolyamú(Kreta.Core.Constants.BankszamlatIgenyelhetoTanuloOsztalyEvfolyamTipusIdList).
if (string.IsNullOrWhiteSpace(bankszamlaIgenylesCo.Bankszamlaszam) && bankszamlaIgenylesCo.IsTanuloIgenyelhetBankszamlatByOsztalyEvfolyamTipus)
{
bool isGondviselo = gondviselo != null;
//NOTE: Ha a felhasználó gondviselő, csak abban az esetben lehet igényelni bankszámlát, ha
// - törvényes képviselő.
if (isGondviselo)
{
if (gondviselo.IsTorvenyesKepviselo)
{
showIgenyles = true;
}
}
//NOTE: Ha a felhasználó tanuló, minden esetben lehet igényelni bankszámlát.
else
{
showIgenyles = true;
}
}
var bankszamlaIgenylesConfiguration = DependencyResolver.Current.GetService<T>();
//NOTE: Beállítjuk a bankszámla igénylés oldal url-jét az MKB-nak megfelelő titkosítás szerint, ha
// - meg kell jeleníteni a korábbi feltételek alapján és
// - létezik a publikus kulcs és
// - amit encrypt-álunk, az nem lesz null vagy üres string.
if (showIgenyles && File.Exists(bankszamlaIgenylesConfiguration.PublicKeyFileName))
{
string token = UrlLogic.JweEncrypt(
bankszamlaIgenylesConfiguration.PublicKeyFileName,
bankszamlaIgenylesConfiguration.PublicKeyFilePassword,
bankszamlaIgenylesCo.EgyediAzonosito);
if (!string.IsNullOrWhiteSpace(token))
{
igenylesOldalUrl = string.Format(bankszamlaIgenylesConfiguration.FormUrl, bankszamlaIgenylesCo.UrlHost, token);
}
}
//NOTE: Ha valami miatt mégsem sikerült beállítani a bankszámla igénylés oldal url-jét akkor nem jelenítjük meg az igénylés gombot.
if (string.IsNullOrWhiteSpace(igenylesOldalUrl))
{
showIgenyles = false;
}
}
var model = new BankszamlaIgenylesModel
{
ShowIgenyles = showIgenyles,
IgenylesOldalUrl = igenylesOldalUrl,
};
return model;
}
private static EgyhaztartasbanElokModel GetEgyhaztartasbanElokModel(EgyhaztartasbanElokCo co)
{
var model = new EgyhaztartasbanElokModel() { };
if (co.Sorok.Count > 0)
{
foreach (var item in co.Sorok)
{
model.Sorok.Add(new EgyhaztartasbanElokRowModel()
{
ID = item.ID,
Nev = item.Nev,
AnyjaNev = item.AnyjaNev,
SzuletesiIdo = item.SzuletesiIdo,
SzuletesiHely = item.SzuletesiHely,
Taj = item.Taj,
RokonsagiFok = item.RokonsagiFok,
Email = item.Email,
Telefon = item.Telefon
});
}
}
return model;
}
}
}