Esempio n. 1
0
        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();
            }
        }
Esempio n. 2
0
        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) }));
        }