public decimal GetTravelInsurancePrice(TravelRiskItem riskItem) { string assemblyPath = AppDomain.CurrentDomain.RelativeSearchPath; System.IO.Stream stream = new FileStream(Path.Combine(assemblyPath, @"Rules\", "TravelInsurancePrice.drl"), FileMode.Open); try { var region = _riskItemRepository.GetById(riskItem.RegionID); var sport = riskItem.SportId.HasValue ? _riskItemRepository.GetById(riskItem.SportId.Value) : null; PackageBuilder builder = new PackageBuilder(); builder.AddPackageFromDrl("TravelInsurancePrice.drl", stream); Package pkg = builder.GetPackage(); RuleBase ruleBase = RuleBaseFactory.NewRuleBase(); ruleBase.AddPackage(pkg); WorkingMemory workingMemory = ruleBase.NewWorkingMemory(); workingMemory.assertObject(region); workingMemory.assertObject(sport); workingMemory.assertObject(riskItem); return(riskItem.RuleAmmount); } finally { stream.Close(); } }
public IHttpActionResult TravelInsurancePrice(TravelInsuranceModel model) { var riskItem = new TravelRiskItem { RegionID = model.RegionID, NumberOfChildren = model.NumberOfChildren, NumberOfAdultsUnder60 = model.NumberOfAdultsUnder60, DateFrom = model.DateFrom, DateTo = model.DateTo, SportId = model.SportId, InsuranceAmmount = model.InsuranceAmmount }; return(Ok(new { price = _priceService.GetTravelInsurancePrice(riskItem) })); }