public async Task <IActionResult> Insert([FromBody] CommissionAllocationEdit commissionAllocation)
        {
            var scope = AuthenticationService.GetScope(User);

            var result = await CommissionAllocationService.InsertCommissionAllocation(scope, commissionAllocation);

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

            return(Ok(result));
        }
Example #2
0
        public async Task InsertCommissionAllocation()
        {
            var options = TestHelper.GetDbContext("InsertCommissionAllocation");

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

            var user2 = TestHelper.InsertUserDetailed(options);

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

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

                context.SaveChanges();
            }

            using (var context = new DataContext(options))
            {
                var ca1 = new CommissionAllocationEdit
                {
                    FromClientId = client1.Client.Id,
                    ToClientId   = client2.Client.Id,
                    PolicyIds    = new List <Guid>()
                    {
                        policy1.Id
                    }
                };

                var auditService = new AuditServiceMock();
                var service      = new CommissionAllocationService(context, auditService);

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

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

                var actual = await context.CommissionAllocation.FindAsync(((CommissionAllocationEdit)result.Tag).Id);

                Assert.Equal(ca1.Id, actual.Id);
                Assert.Equal(ca1.FromClientId, actual.FromClientId);
                Assert.Equal(ca1.ToClientId, actual.ToClientId);

                var policyIds = await context.CommissionAllocationPolicy.Where(p => p.CommissionAllocationId == actual.Id).Select(p => p.PolicyId).ToListAsync();

                Assert.Equal(ca1.PolicyIds, policyIds);

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

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