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 tanuloIds, string feladhelySorszam) { var dto = new MdszDto(); var tanar = new TanarAdatCO(); var mukodesiHely = new MukodesiHelyCO(); var elkuldottTanulok = new List(); 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 tanuloIds, MdszDto dto, IDalHandler h, List elkuldottTanulok) { dto.Diakok = new List(); 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 }; } } }