91 lines
4.2 KiB
C#
91 lines
4.2 KiB
C#
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Calls Core API to search based on any field in the OrganizationSearchRequest properties.
|
|
/// </summary>
|
|
/// <param name="coreRequestParameters"></param>
|
|
/// <param name="searchRequest"></param>
|
|
/// <returns>IEnumerable<Organization></returns>
|
|
public async Task<IEnumerable<Organization>> FindByOrganizationsSearch(CoreRequestParameters coreRequestParameters, OrganizationSearchRequest searchRequest)
|
|
{
|
|
var endpointParameters = HttpUtilities.BuildDictionaryOfNonNullValues(coreRequestParameters);
|
|
var jsonBody = HttpUtilities.BuildJsonOfNonNullProperties(searchRequest);
|
|
var result = await _coreRequest.PostRequestObject<CoreApiMessage<IEnumerable<Organization>>>(_coreApiConfiguration.CoreEndPointConfiguration.OrganizationQuerySearch,
|
|
endpointParameters,
|
|
jsonBody);
|
|
return result?.MessageBody;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Calls Core API to search based on MemberAgreementNbrRequest property.
|
|
/// Default Included: Graph
|
|
/// </summary>
|
|
/// <param name="coreRequestParameters"></param>
|
|
/// <param name="memberAgreeNbrRequest"></param>
|
|
/// <returns>Organization</returns>
|
|
public async Task<Organization> FindOrganizationByMemberAgreeNbr(CoreRequestParameters coreRequestParameters, MemberNbrRequest organizationRequest)
|
|
{
|
|
var endpointParameters = HttpUtilities.BuildDictionaryOfNonNullValues(coreRequestParameters);
|
|
var jsonBody = HttpUtilities.BuildJsonOfNonNullProperties(organizationRequest);
|
|
var result = await _coreRequest.PostRequestObject<CoreApiMessage<Organization>>(
|
|
_coreApiConfiguration.CoreEndPointConfiguration.OrganizationsQueryMemberAgreementNbr,
|
|
endpointParameters,
|
|
jsonBody);
|
|
|
|
return result?.MessageBody;
|
|
}
|
|
|
|
public async Task<long> CountOrganizationNumbersByName(string name)
|
|
{
|
|
var query = QueryUtilities.GetQuery(OrganizationByNameLikeCount);
|
|
var queryParameters = new {
|
|
organizationName = name.ToLowerInvariant()
|
|
};
|
|
|
|
return (await _coreDb.ExecuteQuery<long, dynamic>(query, queryParameters)).Single();
|
|
}
|
|
|
|
public async Task<IEnumerable<long>> FindOrganizationNumbersByNameSearch(string name, int limit)
|
|
{
|
|
var query = QueryUtilities.GetQuery(OrganizationNumberByNameLikeQuery);
|
|
var queryParameters = new {
|
|
organizationName = name.ToLowerInvariant(),
|
|
limit
|
|
};
|
|
|
|
return await _coreDb.ExecuteQuery<long, dynamic>(query, queryParameters);
|
|
}
|
|
}
|
|
}
|