Files
monorepo/LCU.Api.Internal.CoreApiWrapper/LCU.Library.Internal.CoreApiWrapperLib/DataAccess/AddressDao.cs
T
2026-03-31 14:32:23 -05:00

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