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()); } }