195 lines
9 KiB
C#
195 lines
9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Kreta.BusinessLogic.HelperClasses;
|
|
using Kreta.BusinessLogic.Utils;
|
|
using Kreta.Client.Kir;
|
|
using Kreta.Client.Kir.Interfaces;
|
|
using Kreta.Client.Kir.KirModels;
|
|
using Kreta.Client.Kir.Models;
|
|
using Kreta.Client.Kir2Service;
|
|
using Kreta.Core.ConnectionType;
|
|
using Kreta.DataAccess.Interfaces;
|
|
using Kreta.DataAccessManual;
|
|
using Kreta.DataAccessManual.Interfaces;
|
|
|
|
namespace Kreta.BusinessLogic.Helpers
|
|
{
|
|
public class KirExportHelper : LogicBase
|
|
{
|
|
private IKirClient _kirClient;
|
|
|
|
public KirExportHelper(IConnectionType connectionType) : base(connectionType) { }
|
|
|
|
public void KirLogin(KirLoginCo loginCo, string felhasznaloNevCacheKey, string jelszoCacheKey, string kirTokenCacheKey)
|
|
{
|
|
IKirAuthentication kirAuthentication = new KirAuthentication(KirLoginCo.ConvertCoToKirModel(loginCo), felhasznaloNevCacheKey, jelszoCacheKey);
|
|
_kirClient = new KirClient(kirAuthentication, kirTokenCacheKey);
|
|
}
|
|
|
|
public void KirSzinkronForTanulo(KirLoginCo loginCo, List<KirNebuloCo> kirNebuloList, string felhasznaloNevCacheKey, string jelszoCacheKey, string kirTokenCacheKey, string iarAzonosito)
|
|
{
|
|
if (_kirClient == null)
|
|
{
|
|
KirLogin(loginCo, felhasznaloNevCacheKey, jelszoCacheKey, kirTokenCacheKey);
|
|
}
|
|
|
|
string kontenerId;
|
|
|
|
var statuszRequestModel = new KirKerelemModel.StatuszLekerdezesRequestModel
|
|
{
|
|
IARAzonosito = iarAzonosito,
|
|
};
|
|
|
|
Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
if (kirNebuloList.Count > 0)
|
|
{
|
|
kontenerId = Guid.NewGuid().ToString("N").Remove(25);
|
|
|
|
var kerelemXml = new KerelemXMLType
|
|
{
|
|
Item = new KIR2SznyTanuloJogviszonyBejelentesKerelemType
|
|
{
|
|
KerelemFej = new KerelemFejType
|
|
{
|
|
RogzitoKliens = new Client.Kir.KirModels.stringWithStringId { id = "Kreta", Value = "String" },
|
|
RogzitoNeve = new stringWithId { id = 0, Value = loginCo.FelhasznaloNev },
|
|
RogzitesDatuma = DateTime.Now,
|
|
KliensId = FelhasznaloId.ToString()
|
|
},
|
|
TanuloJogviszonyBejelentesek = new TanuloJogviszonyBejelentesekType
|
|
{
|
|
TanuloJogviszonyBejelentes = KirNebuloCo.ConvertNebuloToKirNebulo(h, kirNebuloList, IntezmenyId, TanevId),
|
|
}
|
|
}
|
|
};
|
|
|
|
string kirXmlString = CommonUtils.SerializeXmlFromClass(kerelemXml);
|
|
byte[] plainTextBytes = Encoding.UTF8.GetBytes(kirXmlString);
|
|
string base64EncodedXml = Convert.ToBase64String(plainTextBytes);
|
|
|
|
var kerelemBekuldesRequestModel = new KirKerelemModel.BekuldesRequestModel()
|
|
{
|
|
KontenerId = kontenerId,
|
|
IARAzonosito = iarAzonosito,
|
|
CelSzolgaltatasType = Client.Kir2Service.CelSzolgaltatasType.KIR2SZNYTJVB,
|
|
Idopont = DateTime.Now,
|
|
KerelemXml = base64EncodedXml
|
|
};
|
|
|
|
KirKerelemModel.BekuldesResponseModel responseModel = _kirClient.KerelemBekuldese(kerelemBekuldesRequestModel);
|
|
|
|
InsertKirKontener(kerelemBekuldesRequestModel, responseModel.Valaszkod, h);
|
|
InsertKirKontenerElem(kirNebuloList.Select(x => x.Id).ToList(), kontenerId, h);
|
|
}
|
|
|
|
GetFelhasznaloAktivKontenerId(h).ForEach(aktivKontenerId =>
|
|
{
|
|
statuszRequestModel.KontenerId = aktivKontenerId;
|
|
KirKerelemModel.StatuszLekerdezesResponseModel responseModel = _kirClient.KerelemStatuszLekerdezes(statuszRequestModel);
|
|
|
|
InsertKirKontenerStatusz(aktivKontenerId, responseModel, h);
|
|
SetNebuloKirStatusz(responseModel, GetNebuloFromKontener(aktivKontenerId, h), IntezmenyId, h);
|
|
});
|
|
});
|
|
}
|
|
|
|
private void SetNebuloKirStatusz(KirKerelemModel.StatuszLekerdezesResponseModel responseModel, List<int> kirNebuloList, int intezmenyId, IDalHandler h)
|
|
{
|
|
Client.Kir2Service.KontenerStatuszType kontenerResponse = responseModel.KontenerStatusz;
|
|
var nebuloStatuszList = new List<(int NebuloId, int? KontenerStatuszKod, string KontenerElemStatuszKod)>();
|
|
|
|
kirNebuloList.ForEach(nebuloId =>
|
|
{
|
|
if (responseModel.KontenerStatusz.KontenerElemStatuszok == null)
|
|
{
|
|
nebuloStatuszList.Add((nebuloId, kontenerResponse.KontenerStatuszKod, (string)null));
|
|
}
|
|
else
|
|
{
|
|
List<Client.Kir2Service.KontenerElemStatuszType> kontenerElemStatuszokList = responseModel.KontenerStatusz.KontenerElemStatuszok.ToList();
|
|
List<Client.Kir2Service.KontenerElemStatuszType> hibasKontenerElemStatuszokList = kontenerElemStatuszokList.Where(y => y.StatuszInfo.StatuszKod.Contains("ERR")).ToList();
|
|
List<Client.Kir2Service.KontenerElemStatuszType> hibatlanKontenerElemStatuszokList = kontenerElemStatuszokList.Where(y => y.StatuszInfo.StatuszKod == "KEZ").ToList();
|
|
|
|
hibasKontenerElemStatuszokList.ForEach(x =>
|
|
hibatlanKontenerElemStatuszokList.RemoveAll(y => y.KontenerElemID == x.KontenerElemID)
|
|
);
|
|
|
|
hibatlanKontenerElemStatuszokList.ForEach(x =>
|
|
nebuloStatuszList.Add((Convert.ToInt32(x.KontenerElemID), (int?)null, x.StatuszInfo.StatuszKod))
|
|
);
|
|
|
|
hibasKontenerElemStatuszokList.ForEach(x =>
|
|
nebuloStatuszList.Add((Convert.ToInt32(x.KontenerElemID), (int?)null, x.StatuszInfo.StatuszKod.Remove(0, 3)))
|
|
);
|
|
}
|
|
});
|
|
|
|
nebuloStatuszList.ForEach(nebuloStatusz =>
|
|
{
|
|
h.Nebulo().SetNebuloKirStatusz(nebuloStatusz.NebuloId, nebuloStatusz.KontenerStatuszKod != null ? nebuloStatusz.KontenerStatuszKod.ToString() : nebuloStatusz.KontenerElemStatuszKod, intezmenyId, TanevId);
|
|
});
|
|
}
|
|
|
|
private List<int> GetNebuloFromKontener(string kontenerId, IDalHandler h)
|
|
{
|
|
return h.Nebulo().GetNebuloFromKontener(kontenerId);
|
|
}
|
|
|
|
private void InsertKirKontener(KirKerelemModel.BekuldesRequestModel kirKontener, string kontenerValaszkod, IDalHandler h)
|
|
{
|
|
IKirKontenerDAL dal = h.KirKontenerDAL();
|
|
IKIRKontener entity = dal.Get();
|
|
|
|
entity.CelSzolgaltatas = kirKontener.CelSzolgaltatasType.ToString();
|
|
entity.IARAzonosito = kirKontener.IARAzonosito;
|
|
entity.KontenerId = kirKontener.KontenerId;
|
|
entity.IntezmenyAzonosito = IntezmenyAzonosito;
|
|
entity.ValaszKod = kontenerValaszkod;
|
|
entity.FelhasznaloId = FelhasznaloId;
|
|
|
|
dal.Insert(entity);
|
|
}
|
|
|
|
private List<string> GetFelhasznaloAktivKontenerId(IDalHandler h)
|
|
{
|
|
return h.KirKontenerDAL().GetFelhasznaloAktivKontenerId(FelhasznaloId, IntezmenyId, TanevId);
|
|
}
|
|
|
|
private void InsertKirKontenerStatusz(string kontenerId, KirKerelemModel.StatuszLekerdezesResponseModel statuszResponseModel, IDalHandler h)
|
|
{
|
|
IKirKontenerDAL kirKontenerDal = h.KirKontenerDAL();
|
|
IKirKontenerStatuszDAL kirKontenerStatusz = h.KirKontenerStatuszDAL();
|
|
IKirKontenerElemStatuszDAL kirKontenerElemStatusz = h.KirKontenerElemStatuszDAL();
|
|
|
|
IKIRKontener kirKontener = kirKontenerDal.GetByFelhasznalo(FelhasznaloId, IntezmenyAzonosito, kontenerId);
|
|
|
|
kirKontenerStatusz.InsertByKirKontener(kirKontener, statuszResponseModel);
|
|
|
|
if (statuszResponseModel.KontenerStatusz.KontenerElemStatuszok != null)
|
|
{
|
|
kirKontenerElemStatusz.InsertManyByKirKontener(kirKontener, statuszResponseModel);
|
|
}
|
|
}
|
|
|
|
private void InsertKirKontenerElem(List<int> nebuloIdList, string kontenerId, IDalHandler h)
|
|
{
|
|
IKirKontenerDAL kirKontenerDal = h.KirKontenerDAL();
|
|
|
|
nebuloIdList.ForEach(nebuloId =>
|
|
{
|
|
IKirKontenerElemDAL dal = h.KirKontenerElemDAL();
|
|
IKIRKontenerElem entity = dal.Get();
|
|
|
|
entity.KIRKontenerId = kirKontenerDal.GetByFelhasznalo(FelhasznaloId, IntezmenyAzonosito, kontenerId).ID;
|
|
entity.KontenerElemId = nebuloId;
|
|
entity.NebuloId = nebuloId;
|
|
|
|
dal.Insert(entity);
|
|
});
|
|
}
|
|
}
|
|
}
|