You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

103 lines
3.0 KiB

using Business.LoqateApi;
using Common.Models.Loqate;
using Common.Models.RequestResponse;
using log4net;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Business.BusinessLogic.Address
{
public class ServiceApi
{
public string _key { get; set; }
PostcodeAnywhere_SoapClient _SoapClient { get; set; }
public ServiceApi()
{
_key = ConfigurationManager.AppSettings["loqatekey"].ToString();
_SoapClient = new PostcodeAnywhere_SoapClient();
}
public Capture_Interactive_Find_v1_10_ArrayOfResults Find_v1_10(string search)
{
return _SoapClient.Capture_Interactive_Find_v1_10(_key, search, true, null, null, "GB", 20, "en-gb", false, "", "");
}
public Capture_Interactive_Find_v1_10_ArrayOfResults Find_v1_10(string search, string container)
{
return _SoapClient.Capture_Interactive_Find_v1_10(_key, search, true, container, "", "GB", 20, "en-gb", false, "", "");
}
}
public class LocateBusiness:ILocateBusiness
{
private static readonly ILog Log = LogManager.GetLogger(typeof(LocateBusiness));
ServiceApi serviceApi { get; set; }
public LocateBusiness()
{
serviceApi = new ServiceApi();
}
public TPResponse QueryAddress(string postCode)
{
TPResponse rxResponse = new TPResponse() { ResponseCode = "1", Msg = "No Data found" };
var results = serviceApi.Find_v1_10(postCode);
Log.Debug(Newtonsoft.Json.JsonConvert.SerializeObject(results));
if (results != null && results.Any())
{
var single = results.FirstOrDefault();
if (single != null && single.Type.Equals("Postcode"))
{
rxResponse.ResponseCode = "0";
rxResponse.Msg = "Post code found";
var result2 = serviceApi.Find_v1_10(postCode, single.Id);
QueryResponse queryResponsse = new QueryResponse();
queryResponsse.Addresses = new List<Common.Models.Loqate.Address>();
foreach (Capture_Interactive_Find_v1_10_Results item in result2)
{
queryResponsse.Addresses.Add(new Common.Models.Loqate.Address()
{
Id = item.Id,
Type = item.Type,
Address1 = item.Text,
City = item.Description.Substring(0, item.Description.LastIndexOf(",")),
Address2= item.Description
});
}
rxResponse.Data = queryResponsse;
}
}
else
{
rxResponse.Msg = "No result!";
}
return rxResponse;
}
}
}