using Newtonsoft.Json; using System.Collections.Generic; using System.Threading.Tasks; using LCU.Library.Internal.ApiSecurity.Enums; using LCU.Library.Internal.ApiSecurity.Models; using LCU.Library.Internal.CoreApiWrapperLib.Configuration; using LCU.Library.Internal.CoreApiWrapperLib.CoreApiUtilities; using LCU.Library.Internal.CoreApiWrapperLib.Utilities; using LCU.Library.Internal.CoreApiWrapperModel.Constants; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.CoreRequests; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.CoreResponses; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.Properties; using LCU.Library.Internal.LcuHttpClient.HttpRequest; namespace LCU.Library.Internal.CoreApiWrapperLib.DataAccess { public class PropertyUserFieldDao : BaseCoreDao, IPropertyUserFieldDao { private readonly CoreConfiguration _coreConfiguration; private readonly CoreApiConfiguration _coreApiConfiguration; private readonly CoreSoapApiConfiguration _coreSoapApiConfiguration; private readonly ApiSecurityConfiguration _apiSecurityConfiguration; private readonly IPostRequest _postRequest; private readonly IPutRequest _putRequest; private const string SoapClientKeyValue = "CoreSoapApiWrapper"; public PropertyUserFieldDao(ICoreRequest coreRequest, CoreConfiguration coreConfiguration, ApiSecurityConfiguration apiSecurityConfiguration, IPostRequest postRequest, IPutRequest putRequest) : base(coreRequest) { _coreConfiguration = coreConfiguration; _apiSecurityConfiguration = apiSecurityConfiguration; _coreApiConfiguration = _coreConfiguration.CoreApiConfiguration; _coreSoapApiConfiguration = _coreConfiguration.CoreSoapApiConfiguration; _postRequest = postRequest; _putRequest = putRequest; } public async Task>> FindPropertyUserFieldCoreApiResponseByPersonId(CoreRequestParameters coreRequestParameters, int propertyId) { var endpointParameters = HttpUtilities.BuildDictionaryOfNonNullValues(coreRequestParameters); var endpoint = HttpUtilities.ReplaceRootParameter(_coreApiConfiguration.CoreEndPointConfiguration.PropertyUserFields, RequestRootParameters.PropertyNumber, JsonConvert.ToString(propertyId)); return await _coreRequest.GetRequestObject>>(endpoint, endpointParameters); } /// /// Calls Core Soap API post to create a new user field. /// /// public async Task InsertPropertyUserField(UserFieldRequest userFieldRequest) { var endpoint = HttpUtilities.BuildHttpsUri(_coreSoapApiConfiguration.CoreSoapApiWrapperHost, _coreSoapApiConfiguration.CoreSoapEndpointConfiguration.PostPropertyUserField); var headers = LcuHttpClient.Utilities.HttpUtilities.GetApiKeyHeaders(SoapClientKeyValue, _apiSecurityConfiguration.ExtractApiKey(SoapClientKeyValue, ApiKeySetName.InternalKeySet)); return await _postRequest.Async(endpoint, userFieldRequest, headers, 0); } public async Task UpdatePropertyUserField(UserFieldRequest request) { var endpoint = HttpUtilities.BuildHttpsUri(_coreSoapApiConfiguration.CoreSoapApiWrapperHost, _coreSoapApiConfiguration.CoreSoapEndpointConfiguration.PutPropertyUserField); var headers = LcuHttpClient.Utilities.HttpUtilities.GetApiKeyHeaders(SoapClientKeyValue, _apiSecurityConfiguration.ExtractApiKey(SoapClientKeyValue, ApiKeySetName.InternalKeySet)); return await _putRequest.Async(endpoint, request, headers, 0); } } }