public IEnumerable <RiskItem> GetAllSports() { var sportRisk = _riskRepository.GetAll().Where(m => m.Name.Equals("Sport")).FirstOrDefault(); var sports = sportRisk != null?_riskItemRepository.GetAllByRiskId(sportRisk.ID) : Enumerable.Empty <RiskItem>(); return(sports); }
public IPolicy GetPolicy(string nameOfInsuredObject, DateTime effectiveDate) { var policyId = IdGenerator.ConstructPolicyId(nameOfInsuredObject, effectiveDate); var policyModel = _policyRepository.Get(policyId); if (policyModel == null) { throw new NoSuchPolicyException(nameOfInsuredObject, effectiveDate); } var policyRisks = _riskRepository .GetAll() .Where(riskModel => riskModel.PolicyId == policyId) .Select(riskModel => new Risk { Name = riskModel.Name, YearlyPrice = riskModel.YearlyPrice }) .ToList(); decimal premium = _premiumCalculator.CalculatePremiumOfSoldPolicy(nameOfInsuredObject, effectiveDate); return(new Policy() { NameOfInsuredObject = policyModel.NameOfInsuredObject, ValidFrom = policyModel.ValidFrom, ValidTill = policyModel.ValidTill, InsuredRisks = policyRisks, Premium = premium }); }
//Used to calculate premium for Risk already in storage public decimal CalculatePremiumOfSoldPolicy(string nameOfInsuredObject, DateTime effectiveDate) { var policyId = IdGenerator.ConstructPolicyId(nameOfInsuredObject, effectiveDate); decimal premium = 0.0m; var insuredRisks = _riskRepository .GetAll() .Where(riskModel => riskModel.PolicyId == policyId) .ToList(); foreach (var insuredRisk in insuredRisks) { premium += Math.Round(insuredRisk.YearlyPrice / 365.0m, 2) * (int)(insuredRisk.ValidTill - insuredRisk.ValidFrom).TotalDays; } return(Math.Round(premium, 2)); }
public IEnumerable <Risk> GetAll() { return(_risk.GetAll()); }