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