public AVCConfigurationDTOValidator(IFraudRepository fraudRepository, AvcConfigurationDtoQueriesEnum queryType)
        {
            switch (queryType)
            {
            case AvcConfigurationDtoQueriesEnum.Create:
                Custom(config =>
                {
                    return(fraudRepository.AutoVerificationCheckConfigurations.Any(
                               record =>
                               record.BrandId == config.Brand &&
                               record.Currency == config.Currency &&
                               record.VipLevels.Select(o => o.Id).Intersect(config.VipLevels).Any())
                                    ? new ValidationFailure("", AVCConfigurationValidationMessagesEnum.RecordWithTheSameCompositeKeyAlreadyExists.ToString())
                                    : null);
                }); break;

            case AvcConfigurationDtoQueriesEnum.Update:
                Custom(config =>
                {
                    return(fraudRepository.AutoVerificationCheckConfigurations
                           .Where(record => record.Id != config.Id)
                           .Any(
                               record =>
                               record.BrandId == config.Brand &&
                               record.Currency == config.Currency &&
                               record.VipLevels.Select(o => o.Id).Intersect(config.VipLevels).Any()) ? new ValidationFailure("", AVCConfigurationValidationMessagesEnum.RecordWithTheSameCompositeKeyAlreadyExists.ToString()) : null);
                });
                break;
            }
        }
        /// <summary>
        /// The method is used to validate AVC entity depending on the query type
        /// </summary>
        /// <param name="data">The entity populated in the form</param>
        /// <param name="queryType">Type of the query: Create, Update etc.</param>
        private void ValidateAvcEntity(AVCConfigurationDTO data, AvcConfigurationDtoQueriesEnum queryType)
        {
            var validationResult = new AVCConfigurationDTOValidator(_fraudRepository, queryType).Validate(data);

            if (validationResult.IsValid)
            {
                return;
            }

            var validationError = validationResult.Errors.FirstOrDefault();

            if (validationError != null)
            {
                throw new RegoException(validationError.ToString());
            }
        }