[UseCaseAuthorize("dir_view_branches", "dir_edit_users")] //If you can edit a user you need a list of branches public async Task <IActionResult> Index(string filters = null) { var scope = AuthenticationService.GetScope(User, User.IsSuperAdmin()); var queryOptions = new BranchQueryOptions(scope, filters); var pagedItems = await BranchService.GetBranches(queryOptions); return(Ok(pagedItems)); }
public async Task <IList <Branch> > GetAsync(string projectId, Action <BranchQueryOptions> options) { var queryOptions = new BranchQueryOptions(); options?.Invoke(queryOptions); string url = _branchQueryBuilder.Build($"projects/{projectId}/repository/branches", queryOptions); return(await _httpFacade.GetPagedList <Branch>(url)); }
public async Task Index() { var branch = new Branch() { Id = Guid.NewGuid(), OrganisationId = Guid.NewGuid(), Name = "Branch1" }; var pagedItems = new PagedItems <Branch>() { TotalItems = 1, Items = new List <Branch>() { branch } }; var service = new Mock <IBranchService>(); var authService = TestHelper.MockAuthenticationService(Scope.Branch); BranchQueryOptions queryOptions = null; service.Setup(c => c.GetBranches(It.IsAny <BranchQueryOptions>())) .Callback((BranchQueryOptions options) => queryOptions = options) .ReturnsAsync(pagedItems); var controller = new BranchesController(service.Object, authService.Object); controller.ControllerContext = TestHelper.GetControllerContext(new ClaimsPrincipal()); var result = await controller.Index($"organisationId={branch.OrganisationId}"); 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); Assert.Equal(branch.OrganisationId, queryOptions.OrganisationId); var okResult = Assert.IsType <OkObjectResult>(result); var returnValue = Assert.IsType <PagedItems <Branch> >(okResult.Value); Assert.Same(pagedItems, returnValue); }
public async Task <PagedItems <Branch> > GetBranches(BranchQueryOptions queryOptions) { var query = GetBranchQuery(queryOptions.Scope); //Apply filters ---------------------------------------------------------------------------------------- if (queryOptions.OrganisationId.HasValue) { query = query.Where(b => b.OrganisationId == queryOptions.OrganisationId); } //------------------------------------------------------------------------------------------------------ var pagedItems = new PagedItems <Branch>(); //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 GetBranches_FilterAndSort() { var options = TestHelper.GetDbContext("GetBranches_FilterAndSort"); var user1 = TestHelper.InsertUserDetailed(options); //Given var orgId1 = Guid.NewGuid(); var orgId2 = Guid.NewGuid(); var branch1 = new BranchEntity { Id = Guid.NewGuid(), OrganisationId = orgId1, Name = "A Branch 1" }; var branch2 = new BranchEntity { Id = Guid.NewGuid(), OrganisationId = orgId2, Name = "B Branch 2" }; var branch3 = new BranchEntity { Id = Guid.NewGuid(), OrganisationId = orgId1, Name = "C Branch 3" }; var branch4 = new BranchEntity { Id = Guid.NewGuid(), OrganisationId = orgId2, Name = "D Branch 4" }; var branch5 = new BranchEntity { Id = Guid.NewGuid(), OrganisationId = orgId1, Name = "E Branch 5" }; var branch6 = new BranchEntity { Id = Guid.NewGuid(), OrganisationId = orgId1, Name = "F Branch 6" }; using (var context = new DataContext(options)) { //Jumbled order context.Branch.Add(branch6); context.Branch.Add(branch1); context.Branch.Add(branch2); context.Branch.Add(branch4); context.Branch.Add(branch5); context.Branch.Add(branch3); context.SaveChanges(); } using (var context = new DataContext(options)) { var auditService = new AuditServiceMock(); var service = new BranchService(context, auditService); //When var scope = TestHelper.GetScopeOptions(user1); scope.IgnoreScope = true; var queryOptions = new BranchQueryOptions(scope, $"organisationId={orgId1.ToString()}"); var actual = await service.GetBranches(queryOptions); //Then Assert.Equal(4, actual.TotalItems); var branches = actual.Items.ToArray(); Assert.Equal(4, branches.Count()); var actual1 = branches[0]; Assert.Equal(branch1.Id, actual1.Id); Assert.Equal(branch1.Name, actual1.Name); var actual2 = branches[1]; Assert.Equal(branch3.Id, actual2.Id); Assert.Equal(branch3.Name, actual2.Name); var actual6 = branches[3]; Assert.Equal(branch6.Id, actual6.Id); Assert.Equal(branch6.Name, actual6.Name); } }