calculate osago

This commit is contained in:
Chika 2021-02-25 12:29:02 +03:00
parent b816b1d172
commit 95115b53d7
13 changed files with 270 additions and 123 deletions

View File

@ -1,83 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using ELT.Models;
using ELTKasko;
namespace ELT.Client.Kasko
{
public class KaskoManager
{
private readonly EltSoap _eltKaskoSoap;
public KaskoManager()
{
_eltKaskoSoap = new EltSoapClient();
}
public Dictionary<string, KASKOCalculationResult> CalculateKasko(CalculateKaskoRequest calculateKaskoRequest)
{
var authInfo = new AuthInfo
{
Login = Environment.GetEnvironmentVariable("eltLogin"),
Password = Environment.GetEnvironmentVariable("eltPassword")
};
var eltParams = calculateKaskoRequest.ELTParams;
//KLADR
var kladr = "0";
var eltRegions = _eltKaskoSoap.GetRegionsExt(new GetRegionsExtRequest());
var eltRegion = eltRegions.GetRegionsExtResult.FirstOrDefault(x =>
x.Name.Contains(calculateKaskoRequest.Preparams.RegionName.Split(" ")[0])
);
if (eltRegion != null)
{
if (eltRegion.Kladr != null)
{
kladr = eltRegion.Kladr;
}
else
{
if (eltRegion.Id != null)
{
var eltCities = _eltKaskoSoap.GetCitiesExt(new GetCitiesExtRequest {RegionId = eltRegion.Id});
var eltCity = eltCities.GetCitiesExtResult.FirstOrDefault(x =>
x.Name.Contains(calculateKaskoRequest.Preparams.CityName.Split(" ")[0]));
if (eltCity != null) kladr = eltCity.Kladr;
}
}
}
eltParams.UsageCityKLADR = kladr;
//KLADR
//CAR
var mappedCars = _eltKaskoSoap.MappedCars(new MappedCarsRequest
{
Marka = calculateKaskoRequest.Preparams.BrandId,
Model = calculateKaskoRequest.Preparams.ModelId
});
eltParams.Mark = mappedCars.Mark;
eltParams.Model = mappedCars.Model;
//CAR
var result = new Dictionary<string, KASKOCalculationResult>();
foreach (var companyId in calculateKaskoRequest.CompanyIds)
try
{
var res = _eltKaskoSoap.PreliminaryKASKOCalculation(authInfo, null, companyId, null, null, null,
"15", null,
false, null, null, eltParams);
result.Add(companyId, res);
}
catch (Exception)
{
// ignored
}
return result;
}
}
}

View File

@ -1,19 +0,0 @@
using ELTKasko;
namespace ELT.Models
{
public class Preparams
{
public string RegionName { get; set; }
public string CityName { get; set; }
public string BrandId { get; set; }
public string ModelId { get; set; }
}
public class CalculateKaskoRequest
{
public string[] CompanyIds { get; set; }
public PreliminaryKASKOCalculationParams ELTParams { get; set; }
public Preparams Preparams { get; set; }
}
}

View File

@ -0,0 +1,20 @@
using System;
namespace ELT.Client.Managers
{
public class AuthInfo
{
public string Login { get; set; }
public string Password { get; set; }
}
public class BaseManager
{
protected AuthInfo AuthInfo =>
new AuthInfo
{
Login = Environment.GetEnvironmentVariable("eltLogin"),
Password = Environment.GetEnvironmentVariable("eltPassword")
};
}
}

View File

@ -0,0 +1,58 @@
using System;
using System.Collections.Generic;
using ELT.Client.Models.Insurance;
using ELT.Client.Models.Insurance.Kasko;
using ELTKasko;
namespace ELT.Client.Managers.Insurance
{
public class KaskoManager : BaseManager
{
private readonly EltSoap _eltKaskoSoap;
public KaskoManager()
{
_eltKaskoSoap = new EltSoapClient();
}
public Dictionary<string, KASKOCalculationResult> CalculateKasko(CalculateKaskoRequest calculateKaskoRequest,
ELTPreData preRequestData)
{
var kaskoParams = calculateKaskoRequest.KaskoParams;
kaskoParams.UsageCityKLADR = preRequestData.Kladr;
kaskoParams.Mark = preRequestData.Brand;
kaskoParams.Model = preRequestData.Model;
var result = new Dictionary<string, KASKOCalculationResult>();
foreach (var companyId in calculateKaskoRequest.CompanyIds)
try
{
var res = _eltKaskoSoap.PreliminaryKASKOCalculation(
new ELTKasko.AuthInfo
{
Login = AuthInfo.Login,
Password = AuthInfo.Password
}
, null
, companyId
, null
, null
, null
, "15"
, null
, false
, null
, null
, kaskoParams);
if (string.IsNullOrEmpty(res.Error))
result.Add(companyId, res);
}
catch (Exception)
{
// ignored
}
return result;
}
}
}

View File

@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using ELT.Client.Models.Insurance;
using ELT.Client.Models.Insurance.Osago;
using ELTOsago;
namespace ELT.Client.Managers.Insurance
{
public class OsagoManager : BaseManager
{
private readonly EltSoap _eltOsagoSoap;
public OsagoManager()
{
_eltOsagoSoap = new EltSoapClient();
}
public Dictionary<string, OSAGOFullCalculationResponse> CalculateOsago(
CalculateOsagoRequest calculateOsagoRequest, ELTPreData preRequestData)
{
var result = new Dictionary<string, OSAGOFullCalculationResponse>();
var osagoParams = calculateOsagoRequest.OsagoParams;
osagoParams.UsagePlace = preRequestData.Kladr;
osagoParams.CarInfo.Mark = preRequestData.Brand;
osagoParams.CarInfo.Model = preRequestData.Model;
osagoParams.AuthInfo = new ELTOsago.AuthInfo
{
Login = AuthInfo.Login,
Password = AuthInfo.Password
};
foreach (var companyId in calculateOsagoRequest.CompanyIds)
{
try
{
var res = _eltOsagoSoap.OSAGOFullCalculation(osagoParams);
if (string.IsNullOrEmpty(res.Error))
result.Add(companyId, res);
}
catch (Exception)
{
// ignored
}
}
return result;
}
}
}

View File

@ -0,0 +1,60 @@
using System.Linq;
using ELT.Client.Models.Insurance;
using ELTKasko;
namespace ELT.Client.Managers.Insurance
{
public class PreRequestManager
{
private readonly EltSoap _eltKaskoSoap;
public PreRequestManager()
{
_eltKaskoSoap = new EltSoapClient();
}
public ELTPreData GetPreRequestData(Preparams preparams)
{
var eltPreData = new ELTPreData();
//KLADR
var kladr = "0";
var eltRegions = _eltKaskoSoap.GetRegionsExt(new GetRegionsExtRequest());
var eltRegion = eltRegions.GetRegionsExtResult.FirstOrDefault(x =>
x.Name.Contains(preparams.RegionName.Split(" ")[0])
);
if (eltRegion != null)
{
if (eltRegion.Kladr != null)
{
kladr = eltRegion.Kladr;
}
else
{
if (eltRegion.Id != null)
{
var eltCities = _eltKaskoSoap.GetCitiesExt(new GetCitiesExtRequest {RegionId = eltRegion.Id});
var eltCity = eltCities.GetCitiesExtResult.FirstOrDefault(x =>
x.Name.Contains(preparams.CityName.Split(" ")[0]));
if (eltCity != null) kladr = eltCity.Kladr;
}
}
}
eltPreData.Kladr = kladr;
//KLADR
//CAR
var mappedCars = _eltKaskoSoap.MappedCars(new MappedCarsRequest
{
Marka = preparams.BrandId,
Model = preparams.ModelId
});
eltPreData.Brand = mappedCars.Mark;
eltPreData.Model = mappedCars.Model;
//CAR
return eltPreData;
}
}
}

View File

@ -0,0 +1,8 @@
namespace ELT.Client.Models.Insurance
{
public class BaseInsuranceRequest
{
public string[] CompanyIds { get; set; }
public Preparams Preparams { get; set; }
}
}

View File

@ -0,0 +1,9 @@
namespace ELT.Client.Models.Insurance
{
public class ELTPreData
{
public string Kladr { get; set; }
public string Brand { get; set; }
public string Model { get; set; }
}
}

View File

@ -0,0 +1,9 @@
using ELTKasko;
namespace ELT.Client.Models.Insurance.Kasko
{
public class CalculateKaskoRequest : BaseInsuranceRequest
{
public PreliminaryKASKOCalculationParams KaskoParams { get; set; }
}
}

View File

@ -0,0 +1,9 @@
using ELTOsago;
namespace ELT.Client.Models.Insurance.Osago
{
public class CalculateOsagoRequest : BaseInsuranceRequest
{
public OSAGOFullCalculationRequest OsagoParams { get; set; }
}
}

View File

@ -0,0 +1,10 @@
namespace ELT.Client.Models.Insurance
{
public class Preparams
{
public string RegionName { get; set; }
public string CityName { get; set; }
public string BrandId { get; set; }
public string ModelId { get; set; }
}
}

View File

@ -0,0 +1,37 @@
using System.Collections.Generic;
using ELT.Client.Managers.Insurance;
using ELT.Client.Models.Insurance.Kasko;
using ELT.Client.Models.Insurance.Osago;
using ELTKasko;
using ELTOsago;
using Microsoft.AspNetCore.Mvc;
namespace ELT.Controllers
{
[ApiController]
[Route("[controller]")]
public class InsuranceController : ControllerBase
{
[HttpPost("[action]")]
public ActionResult<Dictionary<string, KASKOCalculationResult>> CalculateOsago(
[FromBody] CalculateKaskoRequest calculateKaskoRequest)
{
var preRequestManager = new PreRequestManager();
var preRequestData = preRequestManager.GetPreRequestData(calculateKaskoRequest.Preparams);
var kaskoManager = new KaskoManager();
return kaskoManager.CalculateKasko(calculateKaskoRequest, preRequestData);
}
[HttpPost("[action]")]
public ActionResult<Dictionary<string, OSAGOFullCalculationResponse>> CalculateKasko(
[FromBody] CalculateOsagoRequest calculateOsagoRequest)
{
var preRequestManager = new PreRequestManager();
var preRequestData = preRequestManager.GetPreRequestData(calculateOsagoRequest.Preparams);
var osagoManager = new OsagoManager();
return osagoManager.CalculateOsago(calculateOsagoRequest, preRequestData);
}
}
}

View File

@ -1,21 +0,0 @@
using System.Collections.Generic;
using ELT.Client.Kasko;
using ELT.Models;
using ELTKasko;
using Microsoft.AspNetCore.Mvc;
namespace ELT.Controllers
{
[ApiController]
[Route("[controller]")]
public class KaskoController : ControllerBase
{
[HttpPost("[action]")]
public ActionResult<Dictionary<string, KASKOCalculationResult>> CalculateKasko(
[FromBody] CalculateKaskoRequest calculateKaskoRequest)
{
var kaskoManager = new KaskoManager();
return kaskoManager.CalculateKasko(calculateKaskoRequest);
}
}
}