using System.Collections.Generic; 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.Accounts; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.CoreRequests; namespace LCU.Library.Internal.CoreApiWrapperLib.DataAccess { public class AccountUserFieldDao : BaseCoreDao, IAccountUserFieldDao { private readonly CoreConfiguration _coreConfiguration; private readonly CoreApiConfiguration _coreApiConfiguration; public AccountUserFieldDao(ICoreRequest coreRequest, CoreConfiguration coreConfiguration) : base(coreRequest) { _coreConfiguration = coreConfiguration; _coreApiConfiguration = _coreConfiguration.CoreApiConfiguration; } /// /// Calls Core API to update Accounts UserField. /// Default Included: Graph /// /// /// /// /// AccountUserField public async Task UpdateAccountUserField(CoreApiMessage accountUserFieldUpdateRequest, string accountId, string userFieldId) { var endpoint = HttpUtilities.ReplaceRootParameter(_coreApiConfiguration.CoreEndPointConfiguration.PutAccountUserField, RequestRootParameters.AccountId, accountId); endpoint = HttpUtilities.ReplaceRootParameter(endpoint, RequestRootParameters.UserFieldId, userFieldId); var jsonBody = JsonConvert.SerializeObject(accountUserFieldUpdateRequest); var result = await _coreRequest.PutRequestObject>(endpoint, null, jsonBody); return result?.MessageBody; } /// /// Calls Core API to insert Accounts UserField. /// Default Included: Graph /// /// /// /// /// AccountUserField public async Task InsertAccountUserField(CoreApiMessage accountUserFieldRequest, string accountId) { var endpoint = HttpUtilities.ReplaceRootParameter(_coreApiConfiguration.CoreEndPointConfiguration.AccountUserFields, RequestRootParameters.AccountId, accountId); var jsonBody = JsonConvert.SerializeObject(accountUserFieldRequest); var result = await _coreRequest.PostRequestObject>(endpoint, null, jsonBody); return result?.MessageBody; } /// /// Calls Core API to search for UserFields based AccountId. /// Default Included: Graph /// /// /// /// IEnumerable public async Task>> FindAccountUserFieldCoreApiResponseByAccountId(CoreRequestParameters coreRequestParameters, string accountId) { var endpointParameters = HttpUtilities.BuildDictionaryOfNonNullValues(coreRequestParameters); var endpoint = HttpUtilities.ReplaceRootParameter(_coreApiConfiguration.CoreEndPointConfiguration.AccountUserFields, RequestRootParameters.AccountId, accountId); return await _coreRequest.GetRequestObject>>(endpoint, endpointParameters); } } }