Exemplo n.º 1
0
        public async Task <Result> UpdatePolicy(ScopeOptions scope, PolicyEdit policy)
        {
            var validator = new PolicyValidator(_context, scope, false);
            var result    = validator.Validate(policy, ruleSet: "default,availability").GetResult();

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

            var entity = await GetPolicyEntityQuery(scope).FirstOrDefaultAsync(p => p.Id == policy.Id);

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

            var clientEntity = MapModelToEntity(policy, entity);

            await _context.SaveChangesAsync();

            await _auditService.InsertAuditLog(scope, AuditLog.ACTION_UPDATE, "Policy", entity.Id, policy);

            return(result);
        }
Exemplo n.º 2
0
        public void TestForeignKeyConstraintIsValidated()
        {
            // Arrange
            var assignments = new List <PolicyByUser>()
            {
                new PolicyByUser(),
                new PolicyByUser(),
                new PolicyByUser(),
            };

            // We define the data that will be returned by the repository
            var mockRepository = new Mock <IPolicyByUserRepository>();
            var mockICoverageTypeByPolicyRepository = new Mock <ICoverageTypeByPolicyRepository>();

            mockRepository.Setup(x => x.GetPolicyAssignations(It.IsAny <int>())).Returns(assignments.AsQueryable());

            var validator = new PolicyValidator(mockRepository.Object, mockICoverageTypeByPolicyRepository.Object);

            var policy = new Policy();

            // Act
            var result = validator.Validate(policy, ruleSet: "delete");

            // Assert
            Assert.Contains(result.Errors, x => x.ErrorMessage == "The policy is already assigned to a user, please delete the relationship first");
        }
 public PolicyProcessor(PolicyMiner policyMiner, PolicyValidator policyValidator, PolicyMapper policyMapper, ResponseMapper responseMapper, PolicySender policySender)
 {
     _policyMiner     = policyMiner;
     _policyMapper    = policyMapper;
     _policyValidator = policyValidator;
     _policySender    = policySender;
     _responseMapper  = responseMapper;
 }
Exemplo n.º 4
0
        public void Setup()
        {
            _policyTrue = new Policy
            {
                OwnerName    = "Bob",
                PolicyNumber = "4D"
            };

            _policyFalse = new Policy
            {
                OwnerName    = "0",
                PolicyNumber = "87"
            };

            _policyValidator = new PolicyValidator();
        }
Exemplo n.º 5
0
        public static void Validate(ExcelWorksheet worksheet, List <Entity> list)
        {
            if (worksheet.Name == "Beneficiary")
            {
                var validator = new BeneficiaryValidator();
                //validator.Validate(list);
            }
            if (worksheet.Name == "Policy")
            {
                var validator = new PolicyValidator();
            }
            if (worksheet.Name == "Claim")
            {
                var validator = new ClaimValidator();
            }

            //return validator;
        }
Exemplo n.º 6
0
        public void TestNoErrorIsReturnedIfPorcentageIsBelowOrEquals50AndTheRiskIsHigh()
        {
            // Arrange
            var mockRepository = new Mock <IPolicyByUserRepository>();
            var mockICoverageTypeByPolicyRepository = new Mock <ICoverageTypeByPolicyRepository>();

            var validator = new PolicyValidator(mockRepository.Object, mockICoverageTypeByPolicyRepository.Object);

            var policy = new Policy()
            {
                Coverage   = 50,
                RiskTypeId = (int)DataAccess.Enums.RiskType.High
            };

            // Act
            var result = validator.Validate(policy);

            // Assert
            Assert.DoesNotContain(result.Errors, x => x.ErrorMessage == "The coverage percentage can go above 50% because the risk is High");
        }
Exemplo n.º 7
0
        public async Task <Result> InsertPolicy(ScopeOptions scope, PolicyEdit policy)
        {
            var validator = new PolicyValidator(_context, scope, true);
            var result    = validator.Validate(policy, ruleSet: "default,availability").GetResult();

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

            var entity = MapModelToEntity(policy);
            await _context.Policy.AddAsync(entity);

            await _context.SaveChangesAsync();

            policy.Id  = entity.Id;
            result.Tag = policy;

            await _auditService.InsertAuditLog(scope, AuditLog.ACTION_INSERT, "Policy", entity.Id, policy);

            return(result);
        }
Exemplo n.º 8
0
        /// <summary>
        /// This method gets called by the runtime.
        /// Configures HTTP request pipeline.
        /// </summary>
        /// <param name="app"></param>
        /// <param name="config"></param>
        /// <param name="actionDescriptorCollectionProvider"></param>
        public static void Configure(
            IApplicationBuilder app,
            GlobalConfig config,
            IActionDescriptorCollectionProvider actionDescriptorCollectionProvider)
        {
            app.UseDeveloperExceptionPage();
            if (config.AddSwagger)
            {
                app.UseSwagger();
                app.UseSwaggerUI(c =>
                {
                    c.SwaggerEndpoint("/swagger/v1/swagger.json", "Bookshelf API");
                });
            }

            app.UseRouting();

            // app.UseHttpsRedirection();

            app.UseCors(builder => builder
                        .WithOrigins(new[] { "http://localhost:4200" })
                        .AllowAnyHeader()
                        .AllowAnyMethod()
                        .AllowCredentials()
                        );

            app.UseAuthentication();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });

            PolicyValidator.ValidateEndpointsPolicies(actionDescriptorCollectionProvider);
        }
Exemplo n.º 9
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var    meta   = AppUsers.GetCurrentAsync().GetAwaiter().GetResult();
            string tenant = TenantConvention.GetTenant();

            var policy = new PolicyValidator
            {
                ObjectNamespace = this.ObjectNamespace,
                ObjectName      = this.ObjectName,
                LoginId         = meta.LoginId,
                Tenant          = tenant,
                AccessType      = this.Type
            };

            policy.ValidateAsync().GetAwaiter().GetResult();
            bool hasAccess = policy.HasAccess;

            if (hasAccess)
            {
                return;
            }

            filterContext.Result = new HttpUnauthorizedResult(Resources.AccessIsDenied);
        }
Exemplo n.º 10
0
        public void When_IsValid_Returns_IsValid(string input)
        {
            var isValid = PolicyValidator.IsValid2(input);

            Assert.True(isValid);
        }
Exemplo n.º 11
0
        public void When_NotValid_Returns_NotValid(string input)
        {
            var isValid = PolicyValidator.IsValid2(input);

            Assert.False(isValid);
        }
Exemplo n.º 12
0
        public async Task <Result> MergePolicies(ScopeOptions scope, MergePolicies merge)
        {
            var clientValidator = new PolicyValidator(_context, scope, true);
            var result          = clientValidator.Validate(merge.TargetPolicy, ruleSet: "default").GetResult();

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

            var mergeValidator = new MergePoliciesValidator(_context, scope);

            result = mergeValidator.Validate(merge).GetResult();

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

            var strategy = _context.Database.CreateExecutionStrategy();

            result = await strategy.ExecuteAsync <Result>(async() =>
            {
                using (var transaction = _context.Database.BeginTransaction())
                {
                    try
                    {
                        //Insert the 'new' policy
                        var entity = MapModelToEntity(merge.TargetPolicy);
                        await _context.Policy.AddAsync(entity);
                        await _context.SaveChangesAsync();

                        merge.TargetPolicy.Id = entity.Id;

                        //Move dependancies to the new policy ----------------------------------------------------

                        //1. Commissions
                        var commmissions = await _context.Commission.Where(p => merge.SourcePolicyIds.Contains(p.PolicyId)).ToListAsync();
                        foreach (var commmission in commmissions)
                        {
                            commmission.PolicyId = merge.TargetPolicy.Id.Value;
                        }

                        //2. Commission Errors
                        var commissionErrors = await _context.CommissionError.Where(c => merge.SourcePolicyIds.Contains(c.PolicyId.Value)).ToListAsync();
                        foreach (var commissionError in commissionErrors)
                        {
                            commissionError.PolicyId = merge.TargetPolicy.Id.Value;
                        }

                        //3. Commission Split Rule Policies
                        var commissionSplitRulePolicies = await _context.CommissionSplitRulePolicy.Where(c => merge.SourcePolicyIds.Contains(c.PolicyId)).ToListAsync();
                        foreach (var commissionSplitRulePolicy in commissionSplitRulePolicies)
                        {
                            commissionSplitRulePolicy.PolicyId = merge.TargetPolicy.Id.Value;
                        }

                        //4. Commission Allocation Policies
                        var commissionAllocationPolicies = await _context.CommissionAllocationPolicy.Where(c => merge.SourcePolicyIds.Contains(c.PolicyId)).ToListAsync();
                        foreach (var commissionAllocationPolicy in commissionAllocationPolicies)
                        {
                            commissionAllocationPolicy.PolicyId = merge.TargetPolicy.Id.Value;
                        }

                        await _context.SaveChangesAsync();
                        //----------------------------------------------------------------------------------------

                        //Delete 'old' policies
                        var policiesToDelete = await _context.Policy.Where(m => merge.SourcePolicyIds.Contains(m.Id)).ToListAsync();
                        foreach (var policyToDelete in policiesToDelete)
                        {
                            _context.Remove(policyToDelete);
                        }
                        await _context.SaveChangesAsync();

                        //Commit
                        await transaction.CommitAsync();

                        return(new Result(true));
                    }
                    catch
                    {
                        transaction.Rollback();
                        return(new Result(false));
                    }
                }
            });

            result.Tag = merge.TargetPolicy;

            await _auditService.InsertAuditLog(scope, "Merge", "Policy", merge.TargetPolicy.Id, merge);

            return(result);
        }
Exemplo n.º 13
0
 public PoliciesController(PolicyService policyService)
 {
     _policyService = policyService;
     _validations   = new PolicyValidator();
 }