/// <summary> /// Creates the enquiry for customer. /// </summary> /// <param name="integrationEnquiry">The integration enquiry.</param> /// <returns>EnquiryResult object.</returns> public EnquiryResult CreateEnquiryForCustomer(IntegrationEnquiry integrationEnquiry) { Logger.InfoFormat("EnquiryFactory.CreateEnquiryForCustomer executing, with params integrationEnquiry, object contains: {0}.", integrationEnquiry.ToString()); EnquiryResult enquiryResult = null; // check for you manual email process engaged if (EnquiryMethod.Equals("XML", StringComparison.OrdinalIgnoreCase)) { EnquiryRequest enquiryRequest = BuildSiebelEnquiryRequest(integrationEnquiry); EnquiryResponse enquiryResponse = null; var xmlPacket = SerializationHelper.ConvertToXml(enquiryRequest); Logger.InfoFormat("EnquiryFactory.CreateEnquiryForCustomer executing XML{0}.", xmlPacket); try { // call enquiry method via the channel factory using (var proxy = new EnquiryProxy(EnquiryEndPoint, EnquiryTimeout)) { enquiryResponse = proxy.Enquiry(enquiryRequest); } } catch (Exception ex) { // log error Logger.Error("EnquiryFactory.CreateEnquiryForCustomer threw an exception.", ex); } enquiryResult = ProcessResponse(enquiryResponse); } else { enquiryResult = new EnquiryResult { EnquiryNumber = string.Empty, ResultStatus = ResultStatus.EmailRequired // nothing to do Domain will email }; } return enquiryResult; }
/// <summary> /// Processes the response. /// </summary> /// <param name="enquiryResponse">The enquiry response.</param> /// <returns>EnquiryResult object populated from the web service response.</returns> private EnquiryResult ProcessResponse(EnquiryResponse enquiryResponse) { Logger.Debug("EnquiryFactory.ProcessResponse executing."); EnquiryResult enquiryResult = new EnquiryResult(); if (enquiryResponse != null) { if (!string.IsNullOrEmpty(enquiryResponse.EnquiryNumber)) { enquiryResult.ResultStatus = ResultStatus.Success; enquiryResult.EnquiryNumber = enquiryResponse.EnquiryNumber.Replace("Your enquiry reference is:", "").Trim(); } else { string returnedError = "UNDEFINED"; string errorDescription = "UNDEFINED"; if (enquiryResponse.Error != null) { returnedError = enquiryResponse.Error; errorDescription = enquiryResponse.ErrorDescription ?? "UNDEFINED"; } enquiryResult.ResultStatus = ResultStatus.Error; enquiryResult.Errors = new List<string> { returnedError, errorDescription }; Logger.ErrorFormat("EnquiryFactory.ProcessResponse failed with Error: {0}; ErrorDescription: {1}.", returnedError, errorDescription); } } else { string returnedError = "UNDEFINED"; string errorDescription = "UNDEFINED"; if (enquiryResponse.Error != null) { returnedError = enquiryResponse.Error; errorDescription = enquiryResponse.ErrorDescription ?? "UNDEFINED"; } enquiryResult.ResultStatus = ResultStatus.Error; enquiryResult.Errors = new List<string> { returnedError, errorDescription }; // log the error Logger.ErrorFormat("EnquiryFactory.ProcessResponse failed with Error: {0}; ErrorDescription: {1}.", returnedError, errorDescription); } return enquiryResult; }