diff --git a/ELT.Client/Managers/Insurance/KaskoManager.cs b/ELT.Client/Managers/Insurance/KaskoManager.cs index b779c26..1ebd66b 100644 --- a/ELT.Client/Managers/Insurance/KaskoManager.cs +++ b/ELT.Client/Managers/Insurance/KaskoManager.cs @@ -1,5 +1,7 @@ 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; @@ -9,6 +11,7 @@ namespace ELT.Client.Managers.Insurance public class KaskoManager : InsuranceManager { private readonly EltSoap _eltKaskoSoap; + public KaskoManager() { _eltKaskoSoap = new EltSoapClient(); @@ -23,9 +26,11 @@ namespace ELT.Client.Managers.Insurance kaskoParams.Mark = preRequestData.Brand; kaskoParams.Model = preRequestData.Model; + var result = new Dictionary(); - foreach (var companyId in calculateKaskoRequest.CompanyIds) - try + + var tasks = calculateKaskoRequest.CompanyIds.Distinct().Select(companyId => + new Task(() => { var res = _eltKaskoSoap.PreliminaryKASKOCalculation( new ELTKasko.AuthInfo @@ -46,11 +51,11 @@ namespace ELT.Client.Managers.Insurance , kaskoParams); if (string.IsNullOrEmpty(res.Error)) result.Add(companyId, res); - } - catch (Exception) - { - // ignored - } + })); + + var tasksArray = tasks as Task[] ?? tasks.ToArray(); + Parallel.ForEach(tasksArray, (t) => t.Start()); + Task.WaitAll(tasksArray.ToArray()); return result; }