public async Task <PagedItems <Organisation> > GetOrganisations(OrganisationQueryOptions queryOptions) { var query = from organisation in ScopeQuery.GetOrganisationEntityQuery(_context, queryOptions.Scope) select new Organisation() { Id = organisation.Id, Name = organisation.Name, ApplicationIds = organisation.ApplicationIds, Config = organisation.Config, }; var pagedItems = new PagedItems <Organisation>(); if (queryOptions.BranchId.HasValue) { var branch = await _context.Branch.FirstOrDefaultAsync(b => b.Id == queryOptions.BranchId.Value); if (branch != null) { query = query.Where(o => o.Id == branch.OrganisationId); } } //Get total items pagedItems.TotalItems = await query.CountAsync(); //Ordering query = query.OrderBy(queryOptions.SortOptions.Column, queryOptions.SortOptions.Direction); //Paging pagedItems.Items = await query.TakePage(queryOptions.PageOptions.Number, queryOptions.PageOptions.Size).ToListAsync(); return(pagedItems); }
public async Task <IActionResult> Index(string filters = null) { var scope = AuthenticationService.GetScope(User, User.IsSuperAdmin()); var queryOptions = new OrganisationQueryOptions(scope, filters); var pagedItems = await OrganisationService.GetOrganisations(queryOptions); return(Ok(pagedItems)); }
public async Task Index() { var organisation = new Organisation() { Id = Guid.NewGuid(), Name = "organisation_1" }; var items = new PagedItems <Organisation>() { TotalItems = 1, Items = new List <Organisation>() { organisation } }; var service = new Mock <IOrganisationService>(); var authService = TestHelper.MockAuthenticationService(Scope.Branch); OrganisationQueryOptions queryOptions = null; service.Setup(c => c.GetOrganisations(It.IsAny <OrganisationQueryOptions>())) .Callback((OrganisationQueryOptions options) => queryOptions = options) .ReturnsAsync(items); var controller = new OrganisationsController(authService.Object, service.Object, null); controller.ControllerContext = TestHelper.GetControllerContext(new ClaimsPrincipal()); var result = await controller.Index(); Assert.Equal(Scope.Branch, queryOptions.Scope.Scope); Assert.Equal("Name", queryOptions.SortOptions.Column); Assert.Equal(SortDirection.Ascending, queryOptions.SortOptions.Direction); Assert.Equal(0, queryOptions.PageOptions.Size); Assert.Equal(0, queryOptions.PageOptions.Number); var okResult = Assert.IsType <OkObjectResult>(result); var returnValue = Assert.IsType <PagedItems <Organisation> >(okResult.Value); Assert.Same(items, returnValue); }
public async Task GetOrganisations_None() { var options = TestHelper.GetDbContext("GetOrganisations_None"); //Given //Nothing using (var context = new DataContext(options)) { var service = new OrganisationService(context); //When var scope = TestHelper.GetScopeOptions(Guid.NewGuid()); var queryOptions = new OrganisationQueryOptions(scope); var actual = await service.GetOrganisations(queryOptions); //Then Assert.Equal(0, actual.TotalItems); Assert.Empty(actual.Items); } }
public async Task GetOrganisations_Sort() { var options = TestHelper.GetDbContext("GetOrganisations_Sort"); //Given var org1 = new OrganisationEntity { Id = Guid.NewGuid(), Name = "A Org 1", ApplicationIds = new List <Guid>() { Application.CLIENT_ID } }; var org2 = new OrganisationEntity { Id = Guid.NewGuid(), Name = "B Org 2", ApplicationIds = new List <Guid>() { Application.CLIENT_ID, Application.DIRECTORY_ID } }; var org3 = new OrganisationEntity { Id = Guid.NewGuid(), Name = "C Org 3", ApplicationIds = new List <Guid>() { Application.CLIENT_ID } }; var org4 = new OrganisationEntity { Id = Guid.NewGuid(), Name = "D Org 4", ApplicationIds = new List <Guid>() { Application.CLIENT_ID, Application.COMPLIANCE_ID } }; var org5 = new OrganisationEntity { Id = Guid.NewGuid(), Name = "E Org 5", ApplicationIds = new List <Guid>() { Application.CLIENT_ID } }; var org6 = new OrganisationEntity { Id = Guid.NewGuid(), Name = "F Org 6", ApplicationIds = new List <Guid>() { Application.CLIENT_ID } }; using (var context = new DataContext(options)) { //Jumbled order context.Organisation.Add(org6); context.Organisation.Add(org1); context.Organisation.Add(org2); context.Organisation.Add(org4); context.Organisation.Add(org5); context.Organisation.Add(org3); context.SaveChanges(); } using (var context = new DataContext(options)) { var service = new OrganisationService(context); //When var scope = TestHelper.GetScopeOptions(Guid.NewGuid()); scope.IgnoreScope = true; var queryOptions = new OrganisationQueryOptions(scope); var actual = await service.GetOrganisations(queryOptions); //Then Assert.Equal(6, actual.TotalItems); var organisations = actual.Items.ToArray(); Assert.Equal(6, organisations.Count()); var actual1 = organisations[0]; Assert.Equal(org1.Id, actual1.Id); Assert.Equal(org1.Name, actual1.Name); Assert.Equal(org1.ApplicationIds, actual1.ApplicationIds); var actual2 = organisations[1]; Assert.Equal(org2.Id, actual2.Id); Assert.Equal(org2.Name, actual2.Name); Assert.Equal(org2.ApplicationIds, actual2.ApplicationIds); var actual6 = organisations[5]; Assert.Equal(org6.Id, actual6.Id); Assert.Equal(org6.Name, actual6.Name); Assert.Equal(org6.ApplicationIds, actual6.ApplicationIds); //Scope check scope = TestHelper.GetScopeOptions(org6.Id); queryOptions = new OrganisationQueryOptions(scope); actual = await service.GetOrganisations(queryOptions); Assert.Equal(1, actual.TotalItems); organisations = actual.Items.ToArray(); actual1 = organisations[0]; Assert.Equal(org6.Id, actual1.Id); Assert.Equal(org6.Name, actual1.Name); Assert.Equal(org6.ApplicationIds, actual1.ApplicationIds); } }