Example #1
0
        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 CommissionSplitRulePolicyInfoQueryOptions(scope, sortColumn, sortDirection, pageSize, pageNumber, filters);

            var commissions = await CommissionSplitRulePolicyService.GetCommissionSplitRulePolicyInfoList(queryOptions);

            return(Ok(commissions));
        }
Example #2
0
        public async Task Index()
        {
            var rule = new CommissionSplitRulePolicyInfo()
            {
                PolicyId        = Guid.NewGuid(),
                PolicyNumber    = Guid.NewGuid().ToString(),
                PolicyCompanyId = Guid.NewGuid(),
                PolicyUserId    = Guid.NewGuid()
            };

            var pagedItems = new PagedItems <CommissionSplitRulePolicyInfo>()
            {
                TotalItems = 1,
                Items      = new List <CommissionSplitRulePolicyInfo>()
                {
                    rule
                }
            };

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

            CommissionSplitRulePolicyInfoQueryOptions queryOptions = null;

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

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

            var result = await controller.Index("PolicyUserId", "desc", 15, 2, $"PolicyUserId={rule.PolicyUserId}");

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

            Assert.Equal(rule.PolicyUserId, queryOptions.PolicyUserId.Single());

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

            Assert.Same(pagedItems, returnValue);
        }
Example #3
0
        public async Task <PagedItems <CommissionSplitRulePolicyInfo> > GetCommissionSplitRulePolicyInfoList(CommissionSplitRulePolicyInfoQueryOptions queryOptions)
        {
            var query = GetCommissionSplitRulePolicyInfoQuery(queryOptions.Scope);

            //Apply filters ----------------------------------------------------------------------------------------
            if (queryOptions.PolicyUserId.Any())
            {
                query = query.Where(c => queryOptions.PolicyUserId.Contains(c.PolicyUserId));
            }

            if (queryOptions.PolicyCompanyId.Any())
            {
                query = query.Where(c => queryOptions.PolicyCompanyId.Contains(c.PolicyCompanyId));
            }

            if (queryOptions.PolicyClientId.Any())
            {
                query = query.Where(c => queryOptions.PolicyClientId.Contains(c.PolicyClientId));
            }

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

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

            if (!string.IsNullOrWhiteSpace(queryOptions.PolicyClientLastName))
            {
                query = query.Where(c => EF.Functions.Like(c.PolicyClientLastName, queryOptions.PolicyClientLastName));
            }
            //------------------------------------------------------------------------------------------------------

            var pagedItems = new PagedItems <CommissionSplitRulePolicyInfo>();

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

            var user1   = TestHelper.InsertUserDetailed(options);
            var user2   = TestHelper.InsertUserDetailed(options, user1.Organisation);
            var client1 = TestHelper.InsertClient(options, user1.Organisation);
            var client2 = TestHelper.InsertClient(options, user1.Organisation);

            var user3   = TestHelper.InsertUserDetailed(options);
            var client3 = TestHelper.InsertClient(options, user3.Organisation);

            //Given
            var policy1 = new PolicyEntity
            {
                Id        = Guid.NewGuid(),
                CompanyId = Guid.NewGuid(),
                ClientId  = client1.Client.Id,
                UserId    = user1.User.Id,
                Number    = "123465",
            };

            var policy2 = new PolicyEntity
            {
                Id        = Guid.NewGuid(),
                CompanyId = Guid.NewGuid(),
                ClientId  = client2.Client.Id,
                UserId    = user2.User.Id,
                Number    = "654321",
            };

            var policy3 = new PolicyEntity
            {
                Id        = Guid.NewGuid(),
                CompanyId = Guid.NewGuid(),
                ClientId  = client2.Client.Id,
                UserId    = user2.User.Id,
                Number    = "987654"
            };

            var policy4 = new PolicyEntity
            {
                Id        = Guid.NewGuid(),
                CompanyId = Guid.NewGuid(),
                ClientId  = client3.Client.Id,
                UserId    = user3.User.Id,
                Number    = "987654"
            };

            var csr1 = new CommissionSplitRuleEntity
            {
                Id        = Guid.NewGuid(),
                UserId    = user1.User.Id,
                Name      = "Com Split Rule 1",
                IsDefault = true,
                Split     = new List <CommissionSplit>()
                {
                    new CommissionSplit()
                    {
                        UserId     = user1.User.Id,
                        Percentage = 100
                    }
                }
            };

            var csr2 = new CommissionSplitRuleEntity
            {
                Id        = Guid.NewGuid(),
                UserId    = user2.User.Id,
                Name      = "Com Split Rule 2",
                IsDefault = true,
                Split     = new List <CommissionSplit>()
                {
                    new CommissionSplit()
                    {
                        UserId     = user2.User.Id,
                        Percentage = 100
                    }
                }
            };

            var csr3 = new CommissionSplitRuleEntity
            {
                Id        = Guid.NewGuid(),
                UserId    = user2.User.Id,
                Name      = "Com Split Rule 3",
                IsDefault = false,
                Split     = new List <CommissionSplit>()
                {
                    new CommissionSplit()
                    {
                        UserId     = user2.User.Id,
                        Percentage = 100
                    }
                }
            };

            var csrp1 = new CommissionSplitRulePolicyEntity
            {
                Id       = Guid.NewGuid(),
                PolicyId = policy2.Id,
                CommissionSplitRuleId = csr3.Id
            };

            using (var context = new DataContext(options))
            {
                context.Policy.Add(policy1);
                context.Policy.Add(policy2);
                context.Policy.Add(policy3);
                context.Policy.Add(policy4);

                context.CommissionSplitRule.Add(csr1);
                context.CommissionSplitRule.Add(csr2);
                context.CommissionSplitRule.Add(csr3);

                context.CommissionSplitRulePolicy.Add(csrp1);

                context.SaveChanges();
            }

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

                //When
                var scope        = TestHelper.GetScopeOptions(user1);
                var queryOptions = new CommissionSplitRulePolicyInfoQueryOptions(scope, "", "", 0, 0);
                var rules        = await service.GetCommissionSplitRulePolicyInfoList(queryOptions);

                //Then
                Assert.Equal(3, rules.TotalItems);
                Assert.Equal(3, rules.Items.Count());

                var items  = rules.Items.ToList();
                var actual = items[0];
                Assert.Equal(policy1.Id, actual.PolicyId);
                Assert.Equal(policy1.Number, actual.PolicyNumber);
                Assert.Equal(policy1.UserId, actual.PolicyUserId);
                Assert.Equal(policy1.CompanyId, actual.PolicyCompanyId);
                Assert.Equal(client1.Client.Id, actual.PolicyClientId);
                Assert.Equal(client1.Client.FirstName, actual.PolicyClientFirstName);
                Assert.Equal(client1.Client.LastName, actual.PolicyClientLastName);
                Assert.Null(actual.CommissionSplitRuleId);
                Assert.Null(actual.CommissionSplitRuleName);
                Assert.Equal(csr1.Id, actual.DefaultCommissionSplitRuleId);
                Assert.Equal(csr1.Name, actual.DefaultCommissionSplitRuleName);

                actual = items[1];
                Assert.Equal(policy2.Id, actual.PolicyId);
                Assert.Equal(policy2.Number, actual.PolicyNumber);
                Assert.Equal(policy2.UserId, actual.PolicyUserId);
                Assert.Equal(policy2.CompanyId, actual.PolicyCompanyId);
                Assert.Equal(client2.Client.Id, actual.PolicyClientId);
                Assert.Equal(client2.Client.FirstName, actual.PolicyClientFirstName);
                Assert.Equal(client2.Client.LastName, actual.PolicyClientLastName);
                Assert.Equal(csrp1.CommissionSplitRuleId, actual.CommissionSplitRuleId);
                Assert.Equal(csr3.Name, actual.CommissionSplitRuleName);
                Assert.Equal(csr2.Id, actual.DefaultCommissionSplitRuleId);
                Assert.Equal(csr2.Name, actual.DefaultCommissionSplitRuleName);

                actual = items[2];
                Assert.Equal(policy3.Id, actual.PolicyId);
                Assert.Null(actual.CommissionSplitRuleId);
                Assert.Null(actual.CommissionSplitRuleName);
                Assert.Equal(csr2.Id, actual.DefaultCommissionSplitRuleId);
                Assert.Equal(csr2.Name, actual.DefaultCommissionSplitRuleName);

                //Check scope
                scope        = TestHelper.GetScopeOptions(user3, Scope.Organisation);
                queryOptions = new CommissionSplitRulePolicyInfoQueryOptions(scope, "", "", 0, 0);
                rules        = await service.GetCommissionSplitRulePolicyInfoList(queryOptions);

                Assert.Single(rules.Items);

                actual = rules.Items.Single();
                Assert.Equal(policy4.Id, actual.PolicyId);
                Assert.Null(actual.CommissionSplitRuleId);
                Assert.Null(actual.DefaultCommissionSplitRuleId);
            }
        }