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
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;
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|