public async Task <IActionResult> Index(string sortColumn, string sortDirection, int pageSize = 0, int pageNumber = 0, string filters = null)
        {
            var scope = AuthenticationService.GetScope(User);

            var queryOptions = new ClientQueryOptions(scope, sortColumn, sortDirection, pageSize, pageNumber, filters);

            var clients = await ClientService.GetClients(queryOptions);

            return(Ok(clients));
        }
Пример #2
0
        public async Task Index()
        {
            var client = new OneAdvisor.Model.Client.Model.Client.Client()
            {
                Id                = Guid.NewGuid(),
                FirstName         = "1",
                LastName          = "2",
                DateOfBirth       = DateTime.Now,
                IdNumber          = "3",
                Initials          = "4",
                MaidenName        = "5",
                MarriageDate      = DateTime.Now,
                MarritalStatusId  = Guid.NewGuid(),
                AlternateIdNumber = "6",
                PreferredName     = "7",
                TaxNumber         = "8",
                ClientTypeId      = Guid.NewGuid()
            };

            var pagedItems = new PagedItems <OneAdvisor.Model.Client.Model.Client.Client>()
            {
                TotalItems = 1,
                Items      = new List <OneAdvisor.Model.Client.Model.Client.Client>()
                {
                    client
                }
            };

            var service     = new Mock <IClientService>();
            var authService = TestHelper.MockAuthenticationService(Scope.Branch);

            ClientQueryOptions queryOptions = null;

            service.Setup(c => c.GetClients(It.IsAny <ClientQueryOptions>()))
            .Callback((ClientQueryOptions options) => queryOptions = options)
            .ReturnsAsync(pagedItems);

            var controller = new ClientsController(service.Object, authService.Object);

            var result = await controller.Index("firstName", "desc", 15, 2, "lastName=%van%");

            Assert.Equal(Scope.Branch, queryOptions.Scope.Scope);
            Assert.Equal("firstName", queryOptions.SortOptions.Column);
            Assert.Equal(SortDirection.Descending, queryOptions.SortOptions.Direction);
            Assert.Equal(15, queryOptions.PageOptions.Size);
            Assert.Equal(2, queryOptions.PageOptions.Number);

            Assert.Equal("%van%", queryOptions.LastName);

            var okResult    = Assert.IsType <OkObjectResult>(result);
            var returnValue = Assert.IsType <PagedItems <OneAdvisor.Model.Client.Model.Client.Client> >(okResult.Value);

            Assert.Same(pagedItems, returnValue);
        }
        public async Task GetClients_OrganisationLevel()
        {
            var options = TestHelper.GetDbContext("GetClients_OrganisationLevel");

            var orgId1 = Guid.NewGuid();
            var orgId2 = Guid.NewGuid();

            //Given
            var client1 = new ClientEntity {
                Id = Guid.NewGuid(), OrganisationId = orgId1
            };
            var client2 = new ClientEntity {
                Id = Guid.NewGuid(), OrganisationId = orgId1
            };
            var client3 = new ClientEntity {
                Id = Guid.NewGuid(), OrganisationId = orgId2
            };

            using (var context = new DataContext(options))
            {
                context.Client.Add(client1);
                context.Client.Add(client2);
                context.Client.Add(client3);

                context.SaveChanges();
            }

            using (var context = new DataContext(options))
            {
                var auditService = new AuditServiceMock();
                var service      = new ClientService(context, auditService);

                //When
                var scope        = TestHelper.GetScopeOptions(orgId1);
                var queryOptions = new ClientQueryOptions(scope, "", "", 0, 0);
                var clients      = await service.GetClients(queryOptions);

                //Then
                Assert.Equal(2, clients.TotalItems);
                Assert.Equal(2, clients.Items.Count());

                var actual = clients.Items.First();
                Assert.Equal(client1.Id, actual.Id);

                actual = clients.Items.Last();
                Assert.Equal(client2.Id, actual.Id);
            }
        }
        public async Task GetClients_Filter()
        {
            var options = TestHelper.GetDbContext("GetClients_Filter");

            //Given
            var orgId1  = Guid.NewGuid();
            var client1 = new ClientEntity
            {
                Id             = Guid.NewGuid(),
                LastName       = "van Niekerk",
                OrganisationId = orgId1
            };

            var client2 = new ClientEntity
            {
                Id             = Guid.NewGuid(),
                LastName       = "Jones",
                OrganisationId = orgId1
            };

            using (var context = new DataContext(options))
            {
                context.Client.Add(client1);
                context.Client.Add(client2);

                context.SaveChanges();
            }

            using (var context = new DataContext(options))
            {
                var auditService = new AuditServiceMock();
                var service      = new ClientService(context, auditService);

                //When
                var scope        = TestHelper.GetScopeOptions(orgId1);
                var queryOptions = new ClientQueryOptions(scope, "", "", 0, 0, "lastName=%nie%");
                var clients      = await service.GetClients(queryOptions);

                //Then
                Assert.Equal(1, clients.TotalItems);
                Assert.Single(clients.Items);

                var actual = clients.Items.First();
                Assert.Equal(client1.Id, actual.Id);
            }
        }
Пример #5
0
        public async Task <PagedItems <Model.Client.Model.Client.Client> > GetClients(ClientQueryOptions queryOptions)
        {
            var query = from client in GetClientEntityQuery(queryOptions.Scope)
                        select new Model.Client.Model.Client.Client()
            {
                Id                = client.Id,
                ClientTypeId      = client.ClientTypeId,
                FirstName         = client.FirstName,
                LastName          = client.LastName,
                MaidenName        = client.MaidenName,
                IdNumber          = client.IdNumber,
                AlternateIdNumber = client.AlternateIdNumber,
                Initials          = client.Initials,
                PreferredName     = client.PreferredName,
                DateOfBirth       = client.DateOfBirth,
                TaxNumber         = client.TaxNumber,
                MarritalStatusId  = client.MarritalStatusId,
                MarriageDate      = client.MarriageDate,
            };

            //Apply filters ----------------------------------------------------------------------------------------
            if (!string.IsNullOrWhiteSpace(queryOptions.FirstName))
            {
                query = query.Where(m => EF.Functions.Like(m.FirstName, queryOptions.FirstName));
            }

            if (!string.IsNullOrWhiteSpace(queryOptions.LastName))
            {
                query = query.Where(m => EF.Functions.Like(m.LastName, queryOptions.LastName));
            }

            if (!string.IsNullOrWhiteSpace(queryOptions.IdNumber))
            {
                query = query.Where(m => EF.Functions.Like(m.IdNumber, queryOptions.IdNumber));
            }

            if (queryOptions.ClientId.Any())
            {
                query = query.Where(m => queryOptions.ClientId.Contains(m.Id));
            }

            if (queryOptions.ClientTypeId.Any())
            {
                query = query.Where(m => queryOptions.ClientTypeId.Contains(m.ClientTypeId));
            }
            //------------------------------------------------------------------------------------------------------

            var pagedItems = new PagedItems <Model.Client.Model.Client.Client>();

            //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 GetClients()
        {
            var options = TestHelper.GetDbContext("GetClients");

            var orgId1 = Guid.NewGuid();

            //Given
            var client1 = new ClientEntity
            {
                Id               = Guid.NewGuid(),
                ClientTypeId     = Guid.NewGuid(),
                FirstName        = "FN 1",
                LastName         = "LN 1",
                MaidenName       = "MN 1",
                Initials         = "INI 1",
                PreferredName    = "PN 1",
                IdNumber         = "321654",
                DateOfBirth      = new DateTime(1982, 10, 3),
                OrganisationId   = orgId1,
                TaxNumber        = "889977",
                MarritalStatusId = Guid.NewGuid(),
                MarriageDate     = new DateTime(2009, 11, 13),
            };

            var client2 = new ClientEntity
            {
                Id             = Guid.NewGuid(),
                OrganisationId = orgId1
            };

            var client3 = new ClientEntity
            {
                Id             = Guid.NewGuid(),
                IsDeleted      = true,
                OrganisationId = orgId1
            };

            using (var context = new DataContext(options))
            {
                context.Client.Add(client1);
                context.Client.Add(client2);
                context.Client.Add(client3);

                context.SaveChanges();
            }

            using (var context = new DataContext(options))
            {
                var auditService = new AuditServiceMock();
                var service      = new ClientService(context, auditService);

                //When
                var scope        = TestHelper.GetScopeOptions(orgId1);
                var queryOptions = new ClientQueryOptions(scope, "", "", 0, 0);
                var clients      = await service.GetClients(queryOptions);

                //Then
                Assert.Equal(2, clients.TotalItems);
                Assert.Equal(2, clients.Items.Count());

                var actual = clients.Items.First();
                Assert.Equal(client1.Id, actual.Id);
                Assert.Equal(client1.FirstName, actual.FirstName);
                Assert.Equal(client1.ClientTypeId, actual.ClientTypeId);
                Assert.Equal(client1.LastName, actual.LastName);
                Assert.Equal(client1.MaidenName, actual.MaidenName);
                Assert.Equal(client1.Initials, actual.Initials);
                Assert.Equal(client1.PreferredName, actual.PreferredName);
                Assert.Equal(client1.IdNumber, actual.IdNumber);
                Assert.Equal(client1.DateOfBirth, actual.DateOfBirth);
                Assert.Equal(client1.TaxNumber, actual.TaxNumber);
                Assert.Equal(client1.MarritalStatusId, actual.MarritalStatusId);
                Assert.Equal(client1.MarriageDate, actual.MarriageDate);
            }
        }
        public async Task GetClients_SortAndPage()
        {
            var options = TestHelper.GetDbContext("GetClients_SortAndPage");

            //Given
            var orgId1 = Guid.NewGuid();

            var mem1 = new ClientEntity {
                Id = Guid.NewGuid(), LastName = "A Name 1", OrganisationId = orgId1
            };
            var mem2 = new ClientEntity {
                Id = Guid.NewGuid(), LastName = "B Name 2", OrganisationId = orgId1
            };
            var mem3 = new ClientEntity {
                Id = Guid.NewGuid(), LastName = "C Name 3", OrganisationId = orgId1
            };
            var mem4 = new ClientEntity {
                Id = Guid.NewGuid(), LastName = "D Name 4", OrganisationId = orgId1
            };
            var mem5 = new ClientEntity {
                Id = Guid.NewGuid(), LastName = "E Name 5", OrganisationId = orgId1
            };
            var mem6 = new ClientEntity {
                Id = Guid.NewGuid(), LastName = "F Name 6", OrganisationId = orgId1
            };

            using (var context = new DataContext(options))
            {
                //Jumbled order
                context.Client.Add(mem1);
                context.Client.Add(mem2);
                context.Client.Add(mem6);
                context.Client.Add(mem4);
                context.Client.Add(mem5);
                context.Client.Add(mem3);

                context.SaveChanges();
            }

            using (var context = new DataContext(options))
            {
                var auditService = new AuditServiceMock();
                var service      = new ClientService(context, auditService);

                //When
                var scope        = TestHelper.GetScopeOptions(orgId1);
                var queryOptions = new ClientQueryOptions(scope, "LastName", "desc", 2, 2);
                var actual       = await service.GetClients(queryOptions);

                //Then
                Assert.Equal(6, actual.TotalItems);

                var clients = actual.Items.ToArray();

                Assert.Equal(2, clients.Count());

                var actual1 = clients[0];
                Assert.Equal(mem4.Id, actual1.Id);

                var actual2 = clients[1];
                Assert.Equal(mem3.Id, actual2.Id);
            }
        }