using System.Collections.Generic;
using System.Linq;
using LCU.Library.Internal.CoreApiWrapperLib.Configuration;
using LCU.Library.Internal.CoreApiWrapperLib.CoreApiUtilities;
using LCU.Library.Internal.CoreApiWrapperLib.Utilities;
using LCU.Library.Internal.CoreApiWrapperModel.CoreModels;
using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.CoreRequests;
using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.Organizations;
using System.Threading.Tasks;
using LCU.Library.Internal.CoreApiWrapperLib.CoreDbUtilities;
namespace LCU.Library.Internal.CoreApiWrapperLib.DataAccess
{
public class OrganizationDao : BaseCoreDao, IOrganizationDao
{
private const string OrganizationByNameLikeCount = "Organization/OrganizationByNameLikeCount";
private const string OrganizationNumberByNameLikeQuery = "Organization/OrganizationNumberByNameLikeQuery";
private readonly CoreApiConfiguration _coreApiConfiguration;
private readonly ICoreDbExecution _coreDb;
public OrganizationDao
(
ICoreRequest coreRequest,
CoreConfiguration coreConfiguration,
ICoreDbExecution coreDbExecution
)
: base(coreRequest)
{
_coreApiConfiguration = coreConfiguration.CoreApiConfiguration;
_coreDb = coreDbExecution;
}
///
/// Calls Core API to search based on any field in the OrganizationSearchRequest properties.
///
///
///
/// IEnumerable
public async Task> FindByOrganizationsSearch(CoreRequestParameters coreRequestParameters, OrganizationSearchRequest searchRequest)
{
var endpointParameters = HttpUtilities.BuildDictionaryOfNonNullValues(coreRequestParameters);
var jsonBody = HttpUtilities.BuildJsonOfNonNullProperties(searchRequest);
var result = await _coreRequest.PostRequestObject>>(_coreApiConfiguration.CoreEndPointConfiguration.OrganizationQuerySearch,
endpointParameters,
jsonBody);
return result?.MessageBody;
}
///
/// Calls Core API to search based on MemberAgreementNbrRequest property.
/// Default Included: Graph
///
///
///
/// Organization
public async Task FindOrganizationByMemberAgreeNbr(CoreRequestParameters coreRequestParameters, MemberNbrRequest organizationRequest)
{
var endpointParameters = HttpUtilities.BuildDictionaryOfNonNullValues(coreRequestParameters);
var jsonBody = HttpUtilities.BuildJsonOfNonNullProperties(organizationRequest);
var result = await _coreRequest.PostRequestObject>(
_coreApiConfiguration.CoreEndPointConfiguration.OrganizationsQueryMemberAgreementNbr,
endpointParameters,
jsonBody);
return result?.MessageBody;
}
public async Task CountOrganizationNumbersByName(string name)
{
var query = QueryUtilities.GetQuery(OrganizationByNameLikeCount);
var queryParameters = new {
organizationName = name.ToLowerInvariant()
};
return (await _coreDb.ExecuteQuery(query, queryParameters)).Single();
}
public async Task> FindOrganizationNumbersByNameSearch(string name, int limit)
{
var query = QueryUtilities.GetQuery(OrganizationNumberByNameLikeQuery);
var queryParameters = new {
organizationName = name.ToLowerInvariant(),
limit
};
return await _coreDb.ExecuteQuery(query, queryParameters);
}
}
}