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

219 lines
10 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Client;
using Kreta.Client.Mdsz.Dto;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.Core.Exceptions;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.ParameterClasses;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Framework.Logging;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class DiakolimpiaHelper : LogicBase
{
public DiakolimpiaHelper(IConnectionType connectionType) : base(connectionType) { }
public DataSet GetDiakolimpiaGrid(DiakolimpiaSearchCO searchCO)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.DiakolimpiaDAL(GridParameters);
return dal.GetDiakolimpiaGrid(ConvertSearchCOToPCO(searchCO), TanevId);
});
}
public string GetFeladhelySorszam() //amit az mdsz feladatellátási hely sorszámnak hív, az nálunk a működési hely azonosítója
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var mukodesiHelyhelper = new MukodesiHelyHelper(new DalHandlerConnectionType(ConnectionType, h));
var tanarHelper = new TanarHelper(new DalHandlerConnectionType(ConnectionType, h));
var feladHelyHelper = new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, h));
var tanar = tanarHelper.GetTanarAdatok(FelhasznaloId);
if (!tanar.FeladatellatasiHely.IsEntityId())
{
return "001";
}
var feladHely = feladHelyHelper.GetFeladatEllatasiHelyAdatok(tanar.FeladatellatasiHely.Value);
var sorszam = mukodesiHelyhelper.GetMukodesiHelyAdatok(feladHely.MukodesiHelyID).MukodesiHelyAzonosito;
return string.IsNullOrWhiteSpace(sorszam) ? "001" : sorszam;
});
}
public string GetFeladhelySorszambyId(int id)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var mukodesiHelyhelper = new MukodesiHelyHelper(new DalHandlerConnectionType(ConnectionType, h));
var feladHelyHelper = new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, h));
var feladHely = feladHelyHelper.GetFeladatEllatasiHelyAdatok(id);
var data = mukodesiHelyhelper.GetMukodesiHelyAdatok(feladHely.MukodesiHelyID);
return string.IsNullOrWhiteSpace(data.MukodesiHelyAzonosito) ? "001" : data.MukodesiHelyAzonosito;
});
}
public string GetDataForMdszInterface(List<int> tanuloIds, string feladhelySorszam)
{
var dto = new MdszDto();
var tanar = new TanarAdatCO();
var mukodesiHely = new MukodesiHelyCO();
var elkuldottTanulok = new List<string>();
Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var intezmeny = h.IntezmenyDal().Get(IntezmenyId);
var helper = new TanarHelper(new DalHandlerConnectionType(ConnectionType, h));
tanar = helper.GetTanarAdatok(FelhasznaloId);
if (tanar.FeladatellatasiHely.IsEntityId())
{
var feladHelyId = tanar.FeladatellatasiHely;
var mukodesiHelyHelper = new MukodesiHelyHelper(new DalHandlerConnectionType(ConnectionType, h));
var feladHelyHelper = new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, h));
var feladHely = feladHelyHelper.GetFeladatEllatasiHelyAdatok(feladHelyId.Value);
mukodesiHely = mukodesiHelyHelper.GetMukodesiHelyAdatok(feladHely.MukodesiHelyID);
var intezmenyAdatok = intezmeny.IntezmenyAdatok.First(x => x.IntezmenyId == IntezmenyId && x.TanevId == TanevId && !x.Torolt);
var intezmenyJellemzoi = feladHelyHelper.GetOsztalyJellemzoi();
var intezmenyTip = intezmenyJellemzoi[OsztalyJellemzoEnum.IsSzakkepzeses] ? "2" : "1";
SetMdszCoAlapAdatok(dto, intezmenyAdatok, tanar, mukodesiHely, feladhelySorszam, intezmenyTip);
SetMdszDiakok(tanuloIds, dto, h, elkuldottTanulok);
}
});
var mdszClient = new MdszClient(ApplicationData.MdszUrl);
var responseMessage = mdszClient.SendData(dto, ApplicationData.MdszUserName, ApplicationData.MdszPassword);
if (!responseMessage.Equals(AdminisztracioResource.AKuldesSikeresVolt))
{
throw new BlException(responseMessage);
}
if (elkuldottTanulok.Count < 11)
{
responseMessage += $"{Core.Constants.General.Sortores}{AdminisztracioResource.ElkuldottTanulok} {string.Join(", ", elkuldottTanulok)}";
}
else
{
responseMessage += string.Format($"{Core.Constants.General.Sortores}{AdminisztracioResource.SikeresenNevezve0Tanulo}", elkuldottTanulok.Count);
}
SDAServer.Instance.Logger.CustomEvent(Events.DiakolimpiaCsomag, LogLevel.INFO, responseMessage);
SikeresAdatokMentese(dto);
return responseMessage;
}
private void SikeresAdatokMentese(MdszDto dto)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.DiakolimpiaDAL();
foreach (var diak in dto.Diakok)
{
var entity = dal.Get();
entity.Datum = DateTime.Now;
entity.TanuloId = diak.Id;
entity.TanarId = dto.Tanar.Id;
dal.Insert(entity);
}
});
}
private void SetMdszDiakok(List<int> tanuloIds, MdszDto dto, IDalHandler h, List<string> elkuldottTanulok)
{
dto.Diakok = new List<MdszDto.DiakDto>();
var tanuloDal = h.Tanulo();
foreach (var tanuloId in tanuloIds)
{
var tanulo = tanuloDal.Get(tanuloId);
var diak = new MdszDto.DiakDto();
diak.Om = tanulo.OktatasiAzonosito ?? string.Empty;
diak.Nev = tanulo.NyomtatasiNev ?? string.Empty;
diak.SzuletesiNev = tanulo.SzuletesiNev ?? string.Empty;
diak.SzuletesiHely = tanulo.SzuletesiHely ?? string.Empty;
diak.SzuletesiIdo = tanulo.SzuletesiDatum.ToString("yyyy.MM.dd");
diak.AnyjaNeve = tanulo.AnyjaNeve ?? string.Empty;
diak.Neme = tanulo.Neme == (int)NemEnum.Ferfi ? "F" : "L";
diak.Id = tanulo.ID;
dto.Diakok.Add(diak);
if (!string.IsNullOrWhiteSpace(diak.Nev))
elkuldottTanulok.Add(diak.Nev);
}
}
private void SetMdszCoAlapAdatok(MdszDto dto, IIntezmenyAdatok intezmenyAdatok, TanarAdatCO tanar, MukodesiHelyCO mukodesiHely, string feladhelySorszam, string intezmenyTip)
{
dto.Iskola = new MdszDto.IskolaDto();
dto.Iskola.Om = $"{intezmenyAdatok.OMKod}/{feladhelySorszam}";
dto.Iskola.Nev = mukodesiHely.Nev ?? string.Empty;
dto.Iskola.RovidNev = /*intezmenyAdatok.RovidNev ??*/ string.Empty;
dto.Iskola.Adoszam = string.Empty;
dto.Iskola.Url = /*intezmenyAdatok.IntezmenyHonlapja ??*/ string.Empty;
dto.Iskola.Telefon = mukodesiHely.Telefonszam ?? string.Empty;
dto.Iskola.Fax = mukodesiHely.Fax ?? string.Empty;
dto.Iskola.Email = mukodesiHely.Email ?? string.Empty;
dto.Iskola.VezetoNeve = mukodesiHely.VezetoNeve ?? string.Empty;
dto.Iskola.CimIrsz = mukodesiHely.Iranyitoszam ?? string.Empty;
dto.Iskola.CimVaros = mukodesiHely.Varos ?? string.Empty;
dto.Iskola.CimKozteruletNevJelleg = $"{mukodesiHely.Kozterulet} {mukodesiHely.KozteruletJellegeNev}";
dto.Iskola.CimHsz = mukodesiHely.Szam ?? string.Empty;
dto.Iskola.IntezmenyNev = intezmenyAdatok.Nev ?? string.Empty;
dto.Iskola.IntezmenyRovidNev = intezmenyAdatok.RovidNev ?? string.Empty;
dto.Iskola.IntezmenyAdoszam = string.Empty;
dto.Iskola.IntezmenyUrl = intezmenyAdatok.IntezmenyHonlapja ?? string.Empty;
dto.Iskola.IntezmenyTelefon = intezmenyAdatok.Telefonszam ?? string.Empty;
dto.Iskola.IntezmenyFax = mukodesiHely.Fax ?? string.Empty;
dto.Iskola.IntezmenyEmail = intezmenyAdatok.EmailCim ?? string.Empty;
dto.Iskola.IntezmenyVezetoNev = intezmenyAdatok.IgazgatoNeve ?? string.Empty;
dto.Iskola.IntezmenyCimIrsz = intezmenyAdatok.IranyitoSzam ?? string.Empty;
dto.Iskola.IntezmenyCimVaros = intezmenyAdatok.Varos ?? string.Empty;
dto.Iskola.IntezmenyCimKozteruletNevJelleg = $"{intezmenyAdatok.KozteruletNev} {intezmenyAdatok.KozteruletJellegeNev}";
dto.Iskola.IntezmenyCimHsz = intezmenyAdatok.Hazszam ?? string.Empty;
dto.Iskola.IntezmenyAzon = IntezmenyAzonosito;
dto.Iskola.IntezmenyTip = intezmenyTip;
dto.Tanar = new MdszDto.TanarDto();
dto.Tanar.Om = tanar.OktatasiAzonosito ?? string.Empty;
dto.Tanar.Nev = Extensions.NameExtensions.GetNevSorrendben("F", tanar.Elotag, tanar.MunkavallaloCsaladiNev, tanar.MunkavallaloUtonev);
dto.Tanar.Login = tanar.BelepesiNev ?? string.Empty;
dto.Tanar.Email = tanar.Email ?? string.Empty;
dto.Tanar.Telefon = tanar.Telefon ?? string.Empty;
dto.Tanar.Id = tanar.Id.Value;
}
private DiakolimpiaSearchPCO ConvertSearchCOToPCO(DiakolimpiaSearchCO searchCO)
{
return new DiakolimpiaSearchPCO
{
SearchNev = searchCO.SearchNev,
SearchSzuletesiDatumtol = searchCO.SearchSzuletesiDatumtol,
SearchSzuletesiDatumig = searchCO.SearchSzuletesiDatumig,
SearchAnyjaNeve = searchCO.SearchAnyjaNeve,
SearchOktatasiAzonosito = searchCO.SearchOktatasiAzonosito,
SearchOsztalya = searchCO.SearchOsztalya
};
}
}
}