133 lines
6.7 KiB
C#
133 lines
6.7 KiB
C#
using System.Threading.Tasks;
|
|
using Newtonsoft.Json;
|
|
using LCU.Library.Internal.CoreApiWrapperModel.CoreModels;
|
|
using LCU.Library.Internal.CoreApiWrapperLib.Utilities;
|
|
using LCU.Library.Internal.CoreApiWrapperLib.Configuration;
|
|
using LCU.Library.Internal.CoreApiWrapperLib.CoreApiUtilities;
|
|
using LCU.Library.Internal.CoreApiWrapperModel.Constants;
|
|
using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.PostalAddresses;
|
|
using System.Collections.Generic;
|
|
|
|
namespace LCU.Library.Internal.CoreApiWrapperLib.DataAccess
|
|
{
|
|
public class AddressDao : BaseCoreDao, IAddressDao
|
|
{
|
|
private readonly CoreConfiguration _coreConfiguration;
|
|
private readonly CoreApiConfiguration _coreApiConfiguration;
|
|
|
|
public AddressDao(ICoreRequest coreRequest,
|
|
CoreConfiguration coreConfiguration)
|
|
: base(coreRequest)
|
|
{
|
|
_coreConfiguration = coreConfiguration;
|
|
_coreApiConfiguration = _coreConfiguration.CoreApiConfiguration;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Calls Core API to search based on personNumber and postalAddressNumber.
|
|
/// Default Included: Standard
|
|
/// </summary>
|
|
/// <param name="coreRequestParameters"></param>
|
|
/// <param name="personNumber"></param>
|
|
/// <param name="postalAddressId"></param>
|
|
/// <returns>CoreApiMessage<PersonPostalAddress></returns>
|
|
public async Task<CoreApiMessage<PersonPostalAddress>> FindByPersonNumberAddressNumber(CoreRequestParameters coreRequestParameters,
|
|
string personNumber,
|
|
string postalAddressId)
|
|
{
|
|
var endpointParameters = HttpUtilities.BuildDictionaryOfNonNullValues(coreRequestParameters);
|
|
var endpoint = ReplaceEndpointsPersonIdAndPostalAddressId(personNumber, postalAddressId);
|
|
return await _coreRequest.GetRequestObject<CoreApiMessage<PersonPostalAddress>>(endpoint, endpointParameters, null);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Calls Core API to search based on personNumber.
|
|
/// Default Included: Standard
|
|
/// </summary>
|
|
/// <param name="coreRequestParameters"></param>
|
|
/// <param name="personNumber"></param>
|
|
/// <param name="postalAddressNumber"></param>
|
|
/// <returns>CoreApiMessage<PersonPostalAddress></returns>
|
|
public async Task<CoreApiMessage<IReadOnlyCollection<PersonPostalAddress>>> FindByPersonNumber(CoreRequestParameters coreRequestParameters,
|
|
string personNumber)
|
|
{
|
|
var endpointParameters = HttpUtilities.BuildDictionaryOfNonNullValues(coreRequestParameters);
|
|
var endpoint = HttpUtilities.ReplaceRootParameter(_coreApiConfiguration.CoreEndPointConfiguration.PersonPostalAddresses,
|
|
RequestRootParameters.PersonId,
|
|
personNumber);
|
|
var result = await _coreRequest.GetRequestObject<CoreApiMessage<IReadOnlyCollection<PersonPostalAddress>>>(endpoint, endpointParameters, null);
|
|
return result;
|
|
}
|
|
|
|
// <summary>
|
|
/// Calls Core API to Post Address.
|
|
/// Default Included: Standard
|
|
/// </summary>
|
|
/// <param name="coreUpdateRequestAddress"></param>
|
|
/// <returns>boole</returns>
|
|
public async Task<PersonPostalAddress> InsertPersonPostalAddress(PersonPostalAddress request)
|
|
{
|
|
var endpoint = HttpUtilities.ReplaceRootParameter(_coreApiConfiguration.CoreEndPointConfiguration.PersonPostalAddresses,
|
|
RequestRootParameters.PersonId,
|
|
request.PersonNumber.ToString());
|
|
var message = new
|
|
{
|
|
messageBody = request
|
|
};
|
|
var jsonBody = JsonConvert.SerializeObject(message);
|
|
var result = await _coreRequest.PostRequestObject<CoreApiMessage<PersonPostalAddress>>(endpoint, null, jsonBody);
|
|
return result?.MessageBody;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Calls Core API to Delete Address.
|
|
/// Default Included: Standard
|
|
/// </summary>
|
|
/// <param name="request"></param>
|
|
/// <returns>boole</returns>
|
|
public async Task<string> RemovePersonPostalAddress(CoreApiMessage<PersonPostalAddress> request)
|
|
{
|
|
var endpoint = ReplaceEndpointsPersonIdAndPostalAddressId(request.MessageBody.PersonNumber.ToString(),
|
|
request.MessageBody.Id.ToString());
|
|
var jsonBody = JsonConvert.SerializeObject(request);
|
|
var result = await _coreRequest.DeleteRequestObject<object>(endpoint, null, jsonBody);
|
|
var stringResult = "";
|
|
|
|
//If not null DNA sent back a error object back. We want to serialize and use in error log message.
|
|
if (result != null)
|
|
{
|
|
stringResult = JsonConvert.SerializeObject(result);
|
|
}
|
|
|
|
return stringResult;
|
|
}
|
|
|
|
public async Task<PersonAddrLine> UpdatePersonAddrLine(CoreApiMessage<PersonAddrLine> request)
|
|
{
|
|
var endpoint = ReplaceEndpointsPersonIdAndAdressUseCode(request.MessageBody.PersonNumber.ToString(), request.MessageBody.AddressUseCode);
|
|
|
|
var jsonBody = JsonConvert.SerializeObject(request);
|
|
var result = await _coreRequest.PutRequestObject<CoreApiMessage<PersonAddrLine>>(endpoint, null, jsonBody);
|
|
|
|
return result?.MessageBody;
|
|
}
|
|
|
|
private string ReplaceEndpointsPersonIdAndPostalAddressId(string personId, string postalAddressId)
|
|
{
|
|
var endpoint = ReplaceEndpointsPersonId(_coreApiConfiguration.CoreEndPointConfiguration.PersonPostalAddress, personId);
|
|
return HttpUtilities.ReplaceRootParameter(endpoint, RequestRootParameters.PostalAddressId, postalAddressId);
|
|
}
|
|
|
|
private string ReplaceEndpointsPersonIdAndAdressUseCode(string personId, string addressUseCode)
|
|
{
|
|
var endpoint = ReplaceEndpointsPersonId(_coreApiConfiguration.CoreEndPointConfiguration.PersonAddressLine, personId);
|
|
return HttpUtilities.ReplaceRootParameter(endpoint, RequestRootParameters.AddressUseCode, addressUseCode);
|
|
}
|
|
|
|
private string ReplaceEndpointsPersonId(string endpoint, string personId)
|
|
{
|
|
return HttpUtilities.ReplaceRootParameter(endpoint, RequestRootParameters.PersonId, personId);
|
|
}
|
|
}
|
|
}
|