[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));
        }
示例#3
0
        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);
        }
示例#5
0
        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);
            }
        }