using System; using System.Collections; using System.ComponentModel; using System.Configuration; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Xml; using System.Xml.Xsl; using Cara.BusinessObjects; using Cara.BaseClasses; using Cara.Utils.DAL; using Cara.YourCarMotorInsuranceWebservice; using NHibernate; using NHibernate.Expression; namespace Example.ajax { /// /// Summary description for insuranceproxy. /// public class insuranceproxy { private Hashtable cookieValues = new Hashtable(); public insuranceproxy() { } public override void Page_Load (object sender, System.EventArgs e) { Response.ContentType = "text/plain"; string sReturn = string.Empty; string sMethod = Request.QueryString["method"]; if(sMethod.Equals("group_quotations")) { sReturn = groupQuotations(); } else if(sMethod.Equals("full_quotations")) { sReturn = fullQuotations(); } Response.Write(sReturn); } private string groupQuotations() { string sReturn = string.Empty; XmlDocument tempDoc = new XmlDocument(); XmlWriter xmlWriter = new XmlTextWriter(Response.OutputStream, System.Text.Encoding.UTF8); try { YourCarMotorInsuranceWebservice.InsuranceCalculation s = new YourCarMotorInsuranceWebservice.InsuranceCalculation(); YourCarMotorInsuranceWebservice.InsuranceCalculationData d = new YourCarMotorInsuranceWebservice.InsuranceCalculationData(); d.DateOfBirth = Request.Form["dob"]; d.Gender = bool.Parse(Request.Form["gender"]); d.HasAccident = bool.Parse(Request.Form["accidents"]); d.HasConviction = bool.Parse(Request.Form["convictions"]); d.IsGaraged = bool.Parse(Request.Form["garaged"]); d.Mileage = Convert.ToInt32(Request.Form["insurancemileage"]); d.PostCode = Request.Form["postcode"]; d.PromoCode = Request.Form["promocode"]; d.RestrictionsId = Convert.ToInt32(Request.Form["covertype"]); string[] sIGroups = Request.Form["insurancegroups"].Split(','); ArrayList arrWebServiceGroups = new ArrayList(); ArrayList arrCachedGroups = new ArrayList(); for( int i = 0; i < sIGroups.Length; i++ ) { if(Session["insuranceGroup" + sIGroups[i]] == null && !sIGroups[i].Equals("-1")) { arrWebServiceGroups.Add( Convert.ToInt32( sIGroups[i] ) ); } else if(!sIGroups[i].Equals("-1")) { arrCachedGroups.Add( Convert.ToInt32( sIGroups[i] ) ); } } XmlNode result = null; if( arrWebServiceGroups.Count > 0 ) { result = tempDoc.ImportNode( s.CalculateListFromGroups(XXXXXXXXXXX, XXXXXXXXXXX, 1, d, (int[])arrWebServiceGroups.ToArray( typeof( int )) ), true ); } else { tempDoc.LoadXml(""); result = (XmlNode)tempDoc.DocumentElement; } if(result.InnerXml.IndexOf("Exception") > -1) { throw new Exception("error"); } else { // cache xml nodes for each insurance group calculation XmlNodeList fragment = result.SelectNodes("//Calculation"); foreach( XmlNode x in fragment ) { int iInsuranceGroup = Convert.ToInt32(x.SelectSingleNode("Vehicle/InsuranceGroup").InnerText); Session["insuranceGroup" + iInsuranceGroup] = x; } // append cached results XmlNode x_CalculationsNode = result.SelectSingleNode("./Calculations"); foreach( int i in arrCachedGroups ) { x_CalculationsNode.AppendChild( tempDoc.ImportNode( (XmlNode)Session["insuranceGroup" + i], true ) ); } // transform into javascript calls XslTransform xslTransformGroupListing = new XslTransform(); xslTransformGroupListing.Load(Server.MapPath(@"..\xml\InsuranceGroupListing.xsl")); xslTransformGroupListing.Transform(result, null, xmlWriter, null); } } catch (Exception ex) { LogError(ex.Message, ex); Response.StatusCode = 500; } finally { xmlWriter.Flush(); xmlWriter.Close(); } return sReturn; } private string fullQuotations() { string sReturn = string.Empty; XmlDocument tempDoc = new XmlDocument(); XmlWriter xmlWriter = new XmlTextWriter(Response.OutputStream, System.Text.Encoding.UTF8); try { YourCarMotorInsuranceWebservice.InsuranceCalculation s = new LloydLatchfordWebService.InsuranceCalculation(); YourCarMotorInsuranceWebservice.InsuranceCalculationData d = new LloydLatchfordWebService.InsuranceCalculationData(); d.DateOfBirth = Request.Form["dob"]; d.Gender = bool.Parse(Request.Form["gender"]); d.HasAccident = bool.Parse(Request.Form["accidents"]); d.HasConviction = bool.Parse(Request.Form["convictions"]); d.IsGaraged = bool.Parse(Request.Form["garaged"]); d.Mileage = Convert.ToInt32(Request.Form["insuranceMileage"]); d.PostCode = Request.Form["postcode"]; d.PromoCode = Request.Form["promocode"]; d.RestrictionsId = Convert.ToInt32(Request.Form["covertype"]); LloydLatchfordWebService.InsuranceCalculationVehicle veh = new LloydLatchfordWebService.InsuranceCalculationVehicle(); veh.CapId = Convert.ToInt32(Request.Form["capid"]); XmlNode result = null; result = s.Calculate(XXXXXXXXXXXX, XXXXXXXXXXXX, 1, d, veh); if(result.SelectSingleNode("Exceptions") == null) { GetCookie(); if(cookieValues.Count > 0) { // get the vehicle's capid Vehicle v = (Vehicle)Db.Session.CreateCriteria(typeof(Vehicle)) .Add(Expression.Eq("CapId", Convert.ToInt32(Request.Form["capid"]))) .Add(Expression.Eq("Datasetid", m_Site.Preferences.Datasetid)) .UniqueResult(); XsltArgumentList args = new XsltArgumentList(); args.AddParam("vehiclePrice", "", v.OtrPrice); args.AddParam("dob", "", cookieValues["dob"]); args.AddParam("coverType", "", cookieValues["covertype"]); args.AddParam("capId", "", v.CapId); args.AddParam("email", "", cookieValues["email"]); args.AddParam("forename", "", cookieValues["forename"]); args.AddParam("garage", "", cookieValues["garaged"]); args.AddParam("gender", "", cookieValues["gender"]); args.AddParam("postcode", "", cookieValues["postcode"]); args.AddParam("surname", "", cookieValues["surname"]); args.AddParam("tracker", "", cookieValues["tracker"]); args.AddParam("mileage", "", cookieValues["insurancemileage"]); args.AddParam("claim", "", cookieValues["accidents"]); args.AddParam("conviction", "", cookieValues["convictions"]); args.AddParam("siteId", "", 1); args.AddParam("telephone", "", cookieValues["telephone"]); args.AddParam("building", "", cookieValues["building"]); args.AddParam("buildingName", "", cookieValues["buildingname"]); args.AddParam("title", "", cookieValues["title"]); args.AddParam("imagePath", "", m_Site.ImagePath); args.AddParam("isNew", "", "true"); args.AddParam("vehicleAge", "", DateTime.Now.Year); args.AddParam("webserviceUserId", "", "3410"); XslTransform xslTransform = new XslTransform(); xslTransform.Load(Server.MapPath(@"..\whitelabel\" + m_Site.Id + @"\includes\insurance_template.xsl")); xslTransform.Transform(result, args, xmlWriter, null); } else { sReturn = "
Unfortuantely we were unable to calculate quote due to the credentials supplied.
Cookie Details
"; } } else { sReturn = "
Unfortuantely we were unable to calculate quote due to the credentials supplied.
Exception In XML
"; } } catch (Exception ex) { LogError(ex.Message, ex); Response.StatusCode = 501; sReturn = "
Unfortuantely we were unable to calculate quote due to the credentials supplied.
Error Thrown
"; } finally { xmlWriter.Flush(); xmlWriter.Close(); } return sReturn; } private void GetCookie() { HttpCookie cookie = Request.Cookies["insuranceQuoteFormDetails"]; string[] sSplit = Server.UrlDecode(cookie.Value).Split(','); foreach(string s in sSplit) { string[] sValue = s.Split('='); cookieValues.Add(sValue[0], sValue[1]); } } } }