2023-05-08 20:51:09 +03:00

71 lines
2.5 KiB
C#

using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using ELT.Client.Models.Insurance;
using ELT.Client.Models.Insurance.Request;
using ELTKasko;
namespace ELT.Client.Managers.Insurance
{
public class KaskoManager : InsuranceManager<CalculateKaskoRequest, KASKOCalculationResult>
{
private readonly EltSoapClient _eltKaskoSoap;
public KaskoManager()
{
_eltKaskoSoap = new EltSoapClient();
}
public override Dictionary<string, KASKOCalculationResult> Calculate(
CalculateKaskoRequest calculateKaskoRequest,
ELTPreData preRequestData)
{
var kaskoParams = calculateKaskoRequest.ELTParams;
kaskoParams.UsageCityKLADR = preRequestData.Kladr;
kaskoParams.Mark = preRequestData.Brand;
kaskoParams.Model = preRequestData.Model;
if (kaskoParams.Modification != null)
kaskoParams.Modification.Name = preRequestData.Modification;
var specialMachinery = calculateKaskoRequest.Preparams.SpecialMachinery;
specialMachinery.SpecialMachineryMark = preRequestData.Brand;
specialMachinery.SpecialMachineryModel = preRequestData.Model;
kaskoParams.SpecialMachinery = specialMachinery;
var result = new Dictionary<string, KASKOCalculationResult>();
var tasks = calculateKaskoRequest.CompanyIds.Distinct().Select(companyId =>
new Task(() =>
{
var res = _eltKaskoSoap.PreliminaryKASKOCalculation(
new ELTKasko.AuthInfo
{
Login = AuthInfo.Login,
Password = AuthInfo.Password
}
, null
, companyId
, 0
, 0
, null
, null
, null
, "13"
, null
, false
, null
, null
, kaskoParams);
result.Add(companyId, res);
}));
var tasksArray = tasks as Task[] ?? tasks.ToArray();
Parallel.ForEach(tasksArray, (t) => t.Start());
Task.WaitAll(tasksArray.ToArray());
return result;
}
}
}