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;
}
///
/// Calls Core API to search based on personNumber and postalAddressNumber.
/// Default Included: Standard
///
///
///
///
/// CoreApiMessage
public async Task> FindByPersonNumberAddressNumber(CoreRequestParameters coreRequestParameters,
string personNumber,
string postalAddressId)
{
var endpointParameters = HttpUtilities.BuildDictionaryOfNonNullValues(coreRequestParameters);
var endpoint = ReplaceEndpointsPersonIdAndPostalAddressId(personNumber, postalAddressId);
return await _coreRequest.GetRequestObject>(endpoint, endpointParameters, null);
}
///
/// Calls Core API to search based on personNumber.
/// Default Included: Standard
///
///
///
///
/// CoreApiMessage
public async Task>> 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>>(endpoint, endpointParameters, null);
return result;
}
//
/// Calls Core API to Post Address.
/// Default Included: Standard
///
///
/// boole
public async Task 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>(endpoint, null, jsonBody);
return result?.MessageBody;
}
///
/// Calls Core API to Delete Address.
/// Default Included: Standard
///
///
/// boole
public async Task RemovePersonPostalAddress(CoreApiMessage request)
{
var endpoint = ReplaceEndpointsPersonIdAndPostalAddressId(request.MessageBody.PersonNumber.ToString(),
request.MessageBody.Id.ToString());
var jsonBody = JsonConvert.SerializeObject(request);
var result = await _coreRequest.DeleteRequestObject