63 lines
2.1 KiB
C#
63 lines
2.1 KiB
C#
using System;
|
|
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;
|
|
|
|
|
|
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
|
|
, null
|
|
, null
|
|
, null
|
|
, "13"
|
|
, null
|
|
, false
|
|
, null
|
|
, null
|
|
, kaskoParams);
|
|
//if (string.IsNullOrEmpty(res.Error))
|
|
result.Add(companyId, res);
|
|
}));
|
|
|
|
var tasksArray = tasks as Task[] ?? tasks.ToArray();
|
|
Parallel.ForEach(tasksArray, (t) => t.Start());
|
|
Task.WaitAll(tasksArray.ToArray());
|
|
|
|
return result;
|
|
}
|
|
}
|
|
} |