protected void GetQuote(object sender, EventArgs e) { var client = ChannelFactory <IInsuranceQuoteService> .CreateChannel( new BasicHttpBinding(), new EndpointAddress("http://localhost:8088/ins")); BeginCall: try { var findPolicyRequest = new FindPolicyRequest() { PersonSSN = txtSSN.Text, DateOfBirth = new DateTime(Convert.ToInt32(lstBirthYear.SelectedValue), 1, 1), Gender = "M", PolicyType = lstPolicyType.SelectedItem.Text, }; var policies = client.FindPolicies(findPolicyRequest); resultsGrid.DataSource = policies; resultsGrid.DataBind(); ResultsMsg.InnerText = String.Format("Showing {0} results for age {1} years and policy type {2}", policies.Length, DateTime.Now.Year - findPolicyRequest.DateOfBirth.Year, findPolicyRequest.PolicyType); } catch (Exception ex) { //this service was buggy during testing, retry command on failure goto BeginCall; } }
public Policy[] FindPolicies(FindPolicyRequest req) { Console.WriteLine("Request Receieved"); using (var db = new InsuranceDBContext()) { var policies = db.InsurancePolicies.AsQueryable(); if (req.PolicyType == "Single" || req.PolicyType == "Married" || req.PolicyType == "Family") { policies = policies.Where(x => x.PolicyType == req.PolicyType); } List <Policy> returnList = new List <Policy>(); foreach (var p in policies) { var policy = new Policy() { PolicyName = p.PolicyName, ID = p.ID }; policy.BasePrice = CalculateBasePrice(p, req); returnList.Add(policy); } return(returnList.ToArray()); } }
private decimal CalculateBasePrice(InsurancePolicy insurancePolicy, FindPolicyRequest req) { var basePrice = insurancePolicy.BasePrice; var ageOfApplicant = DateTime.Now.Year - req.DateOfBirth.Year; if (ageOfApplicant < 20) { basePrice += 2M; } else if (ageOfApplicant >= 20 && ageOfApplicant < 30) { basePrice += 5M; } else { basePrice += fib((ageOfApplicant)) + 10M; } return(basePrice); }