Example #1
0
        private CommissionSplitRulePolicyEntity MapModelToEntity(CommissionSplitRulePolicy model, CommissionSplitRulePolicyEntity entity = null)
        {
            if (entity == null)
            {
                entity = new CommissionSplitRulePolicyEntity();
            }

            entity.PolicyId = model.PolicyId.Value;
            entity.CommissionSplitRuleId = model.CommissionSplitRuleId.Value;

            return(entity);
        }
Example #2
0
        public async Task <IActionResult> Insert([FromBody] CommissionSplitRulePolicy commissionSplitRulePolicy)
        {
            var scope = AuthenticationService.GetScope(User);

            var result = await CommissionSplitRulePolicyService.InsertCommissionSplitRulePolicy(scope, commissionSplitRulePolicy);

            if (!result.Success)
            {
                return(BadRequest(result.ValidationFailures));
            }

            return(Ok(result));
        }
Example #3
0
        public async Task Update()
        {
            var rule = new CommissionSplitRulePolicy()
            {
                Id       = Guid.NewGuid(),
                PolicyId = Guid.NewGuid(),
                CommissionSplitRuleId = Guid.NewGuid()
            };

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

            var result = new Result()
            {
                Success = true
            };

            ScopeOptions options = null;
            CommissionSplitRulePolicy updated = null;

            service.Setup(c => c.UpdateCommissionSplitRulePolicy(It.IsAny <ScopeOptions>(), It.IsAny <CommissionSplitRulePolicy>()))
            .Callback((ScopeOptions o, CommissionSplitRulePolicy i) =>
            {
                updated = i;
                options = o;
            })
            .ReturnsAsync(result);

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

            var actual = await controller.Update(rule.Id.Value, rule);

            Assert.Same(rule, updated);
            Assert.Equal(Scope.Branch, options.Scope);

            var okResult    = Assert.IsType <OkObjectResult>(actual);
            var returnValue = Assert.IsType <Result>(okResult.Value);

            Assert.Same(result, returnValue);
        }
Example #4
0
        public async Task Get()
        {
            var rule = new CommissionSplitRulePolicy()
            {
                Id       = Guid.NewGuid(),
                PolicyId = Guid.NewGuid(),
                CommissionSplitRuleId = Guid.NewGuid()
            };

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

            service.Setup(c => c.GetCommissionSplitRulePolicy(It.IsAny <ScopeOptions>(), It.Is <Guid>(m => m == rule.Id.Value)))
            .ReturnsAsync(rule);

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

            var result = await controller.Get(rule.Id.Value);

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

            Assert.Same(rule, returnValue);
        }
Example #5
0
        public async Task <Result> UpdateCommissionSplitRulePolicy(ScopeOptions scope, CommissionSplitRulePolicy commissionSplitRulePolicy)
        {
            var validator = new CommissionSplitRulePolicyValidator(_context, scope, false);
            var result    = validator.Validate(commissionSplitRulePolicy).GetResult();

            if (!result.Success)
            {
                return(result);
            }

            var entity = await GetCommissionSplitRulePolicyEntityQuery(scope).FirstOrDefaultAsync(b => b.Id == commissionSplitRulePolicy.Id);

            if (entity == null)
            {
                return(new Result());
            }

            var defaultRule = await GetDefaultCommissionSplitRule(scope, commissionSplitRulePolicy.PolicyId.Value);

            //If this is the default rule, then remove this instance
            if (defaultRule != null && commissionSplitRulePolicy.CommissionSplitRuleId == defaultRule.Id)
            {
                await DeleteCommissionSplitRulePolicy(scope, commissionSplitRulePolicy.Id.Value);

                return(result);
            }

            var commissionSplitRulePolicyEntity = MapModelToEntity(commissionSplitRulePolicy, entity);

            await _context.SaveChangesAsync();

            await _auditService.InsertAuditLog(scope, AuditLog.ACTION_UPDATE, "CommissionSplitRulePolicy", entity.Id, commissionSplitRulePolicy);

            return(result);
        }
Example #6
0
        public async Task <Result> InsertCommissionSplitRulePolicy(ScopeOptions scope, CommissionSplitRulePolicy commissionSplitRulePolicy)
        {
            var validator = new CommissionSplitRulePolicyValidator(_context, scope, true);
            var result    = validator.Validate(commissionSplitRulePolicy).GetResult();

            if (!result.Success)
            {
                return(result);
            }

            var defaultRule = await GetDefaultCommissionSplitRule(scope, commissionSplitRulePolicy.PolicyId.Value);

            //If the rule is already the default dont add it
            if (defaultRule != null && commissionSplitRulePolicy.CommissionSplitRuleId == defaultRule.Id)
            {
                return(result);
            }

            var entity = MapModelToEntity(commissionSplitRulePolicy);
            await _context.CommissionSplitRulePolicy.AddAsync(entity);

            await _context.SaveChangesAsync();

            commissionSplitRulePolicy.Id = entity.Id;
            result.Tag = commissionSplitRulePolicy;

            await _auditService.InsertAuditLog(scope, AuditLog.ACTION_INSERT, "CommissionSplitRulePolicy", entity.Id, commissionSplitRulePolicy);

            return(result);
        }
        public async Task UpdateCommissionSplitRule_IsDefault_Deleted()
        {
            var options = TestHelper.GetDbContext("UpdateCommissionSplitRule_IsDefault_Deleted");

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

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

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

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

            var csrp2 = new CommissionSplitRulePolicyEntity
            {
                Id       = Guid.NewGuid(),
                PolicyId = policy1.Id,
                CommissionSplitRuleId = Guid.NewGuid()
            };

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

                context.CommissionSplitRule.Add(csr2);

                context.CommissionSplitRulePolicy.Add(csrp1);
                context.CommissionSplitRulePolicy.Add(csrp2);

                context.SaveChanges();
            }

            using (var context = new DataContext(options))
            {
                var csrp2Updated = new CommissionSplitRulePolicy
                {
                    Id       = csrp2.Id,
                    PolicyId = policy1.Id,
                    CommissionSplitRuleId = csr2.Id
                };

                var auditService           = new AuditServiceMock();
                var commissionSplitService = new CommissionSplitService(context, auditService);
                var service = new CommissionSplitRulePolicyService(context, commissionSplitService, auditService);

                //When
                var scope  = TestHelper.GetScopeOptions(user1);
                var result = await service.UpdateCommissionSplitRulePolicy(scope, csrp2Updated);

                //Then
                Assert.True(result.Success);

                var actual = await context.CommissionSplitRulePolicy.FindAsync(csrp2Updated.Id);

                Assert.Null(actual);

                actual = await context.CommissionSplitRulePolicy.FindAsync(csrp1.Id);

                Assert.NotNull(actual);
            }
        }
        public async Task UpdateCommissionSplitRule()
        {
            var options = TestHelper.GetDbContext("UpdateCommissionSplitRule");

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

            var user2 = TestHelper.InsertUserDetailed(options);

            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  = client1.Client.Id,
                UserId    = user1.User.Id,
                Number    = "123465",
            };

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

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

            var csrp2 = new CommissionSplitRulePolicyEntity
            {
                Id       = Guid.NewGuid(),
                PolicyId = policy1.Id,
                CommissionSplitRuleId = Guid.NewGuid()
            };

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

                context.CommissionSplitRule.Add(csr2);

                context.CommissionSplitRulePolicy.Add(csrp1);
                context.CommissionSplitRulePolicy.Add(csrp2);

                context.SaveChanges();
            }

            using (var context = new DataContext(options))
            {
                var csrp2Updated = new CommissionSplitRulePolicy
                {
                    Id       = csrp2.Id,
                    PolicyId = policy2.Id,
                    CommissionSplitRuleId = csr2.Id
                };

                var auditService           = new AuditServiceMock();
                var commissionSplitService = new CommissionSplitService(context, auditService);
                var service = new CommissionSplitRulePolicyService(context, commissionSplitService, auditService);

                //When
                var scope  = TestHelper.GetScopeOptions(user1);
                var result = await service.UpdateCommissionSplitRulePolicy(scope, csrp2Updated);

                //Then
                Assert.True(result.Success);

                var actual = await context.CommissionSplitRulePolicy.FindAsync(csrp2Updated.Id);

                Assert.Equal(csrp2Updated.Id, actual.Id);
                Assert.Equal(csrp2Updated.PolicyId, actual.PolicyId);
                Assert.Equal(csrp2Updated.CommissionSplitRuleId, actual.CommissionSplitRuleId);

                //Out of scope
                scope  = TestHelper.GetScopeOptions(user2, Scope.User);
                result = await service.InsertCommissionSplitRulePolicy(scope, csrp2Updated);

                Assert.False(result.Success);
                Assert.Equal("'Policy' does not exist.", result.ValidationFailures.First().ErrorMessage);
            }
        }