Exemple #1
0
        public async Task <IActionResult> Put([FromRoute] int id, [FromBody] UpdateToDoRequest toDoRequest)
        {
            if (id != toDoRequest.Id)
            {
                var error      = new ValidationError("To Do", "Id from route does not match Id from route");
                var validation = new ValidationResultModel(new[] { error });
                return(BadRequest(validation));
            }
            var isOwner = await repository.UserOwnsPostAsync(id, HttpContext.GetUserId());

            if (!isOwner)
            {
                var error      = new ValidationError("To Do", "You do not own the ToDo acticity you're trying to update");
                var validation = new ValidationResultModel(new[] { error });
                return(Unauthorized(validation));
            }

            if (toDoRequest.Status == Status.Done && toDoRequest.DateCompleted == null)
            {
                var error      = new ValidationError("To Do", "Set Date Completed when Task Status is Completed. Preferably Utc");
                var validation = new ValidationResultModel(new[] { error });
                return(BadRequest(validation));
            }
            var toDo = toDoRequest.GetToDo();

            toDo = await repository.UpdateToDoAsync(id, toDo);

            if (toDo != null)
            {
                return(Ok(toDo.GetToDoResponse()));
            }
            return(NotFound());
        }
        public async Task <ValidationResultModel <ProductResponse> > Save(CreateProductRequest model)
        {
            var result = new ValidationResultModel <ProductResponse>();

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

            Products product = null;

            if (!string.IsNullOrWhiteSpace(model.Id))
            {
                product = (await _productRepository.GetProducts(new GetProductRequest {
                    Id = model.Id
                })).Single();
            }

            var productDbModel = model.Map <CreateProductRequest, Products>(product);

            productDbModel = await _productRepository.Save(productDbModel);

            //Save Revision with RabbitMQ
            await _rabbitMqService.RabbitMqSender(product, RabbitMqConstants.ProductRevisionQueue);

            result.Model = productDbModel.Map <Products, ProductResponse>();

            return(result);
        }
Exemple #3
0
        /// <summary>
        /// The method would validate the resultant model
        /// </summary>
        /// <param name="modelState">The model state</param>
        /// <param name="errorMessage">The error message to be thrown if validation fails</param>
        public static ValidationResultModel ToValidationResultModel(this Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary modelState, string errorMessage = "Validation Failed")
        {
            if (modelState != null)
            {
                if (modelState.IsValid)
                {
                    return(new ValidationResultModel {
                        IsValid = true
                    });
                }

                var result = new ValidationResultModel
                {
                    Message = errorMessage,
                    Errors  = modelState.Keys
                              .Where(key => modelState[key].ValidationState == Microsoft.AspNetCore.Mvc.ModelBinding.ModelValidationState.Invalid)
                              .SelectMany(key => modelState[key].ToValidationResults(key))
                              .ToList()
                };

                if (!result.Errors.Any())
                {
                    result.IsValid = true;
                }

                return(result);
            }
            return(null);
        }
Exemple #4
0
        public async Task <ValidationResultModel> ValidateAdd(CityModel model)
        {
            var result = new ValidationResultModel();

            // Simple validation of string length and such like, assumes
            //  we are not using standard MVC model validation

            if (model.Name == null)
            {
                // Failed as it is required
                result.AddMessage("Name", $"Value is required");
            }

            if (model.Name?.Length > NameMaxLength)
            {
                // Failed as it is too long
                result.AddMessage("Name", $"Maximum length of {NameMaxLength}");
            }

            if (model.State == null)
            {
                // Failed as it is required
                result.AddMessage("State", $"Value is required");
            }

            if (model.State?.Length > StateMaxLength)
            {
                // Failed as it is too long
                result.AddMessage("State", $"Maximum length of {StateMaxLength}");
            }

            if (model.CountryCode == null)
            {
                // Failed as it is required
                result.AddMessage("CountryCode", $"Value is required");
            }

            if (model.CountryCode?.Length != 3)
            {
                // Failed as it is too long
                result.AddMessage("CountryCode", $"Invalid CountryCode, must be three characters");
            }
            else if (!await _countrySearch.IsCountryCodeValid(model.CountryCode))
            {
                // Failed as not found in datasource
                result.AddMessage("CountryCode", $"Invalid CountryCode, not found on database");
            }

            if (model.TouristRating.HasValue && (model.TouristRating.Value < 0 || model.TouristRating.Value > 5))
            {
                // Failed as it is required
                result.AddMessage("TouristRating", $"Value is invalid, must be a number between 1 and 5");
            }

            return(await Task.FromResult(result));
        }
 /// <summary>
 /// constructor to initialise properties
 /// </summary>
 public GetClinicalDocument_Step()
 {
     _server = new TestServer(
         WebHost.CreateDefaultBuilder()
         .UseStartup <Startup>()
         );
     _client = _server.CreateClient();
     _client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
     _validationResultModel = new ValidationResultModel();
 }
Exemple #6
0
        public IError OnError(IError error)
        {
            if (!(error.Exception is ValidationException exception))
            {
                return(error);
            }

            var validationResult = new ValidationResultModel(exception.Errors.Select(x => x.ErrorMessage));

            return(error.AddExtension("ValidationError", validationResult));
        }
        public IActionResult Delete(long id)
        {
            _phonebookService.Delete(id);
            var phonebook = new Domain.Phonebook()
            {
                Id = id
            };
            var model = new ValidationResultModel();

            model.IsActionSuccessful = true;
            return(Json(model));
        }
Exemple #8
0
        public ValidationResultModel Validate(CityDomain cityDomain, PlayerTurnModel turnModel)
        {
            ValidationResultModel valid = new ValidationResultModel()
            {
                HasErrors = false
            };
            StringBuilder sb = new StringBuilder();

            if (turnModel.BushelsToFeed > cityDomain.BushelsCount)
            {
                sb.Append("You do not have as many bushels").Append(_separator);
                valid.HasErrors = true;
            }

            if (turnModel.AcrChange < 0 && -turnModel.AcrChange > cityDomain.AcresCount)
            {
                sb.Append("You do not have as many acres for sale!").Append(_separator);
                valid.HasErrors = true;
            }

            if (turnModel.AcrChange > 0 && cityDomain.BushelsCount / cityDomain.AcrCost < turnModel.AcrChange)
            {
                sb.Append("You do not have as many bushels to buy as many acres!").Append(_separator);
                valid.HasErrors = true;
            }

            if (turnModel.AcresToPlant > cityDomain.AlivePeople * 10)
            {
                sb.Append("You do not have so many people to sow such a count of acres!").Append(_separator);
                valid.HasErrors = true;
            }

            if (turnModel.BushelsToFeed < 0)
            {
                sb.Append("You can not enter a negative value in the field for food!").Append(_separator);
                valid.HasErrors = true;
            }

            if (turnModel.AcresToPlant < 0)
            {
                sb.Append("You can not enter a negative value in the field for sowing acres!").Append(_separator);
                valid.HasErrors = true;
            }


            if (valid.HasErrors)
            {
                valid.ErrorMessage = sb.ToString();
            }
            return(valid);
        }
        public async Task <ValidationResultModel <ProviderResponse> > Save(CreateProviderRequest model)
        {
            var result = new ValidationResultModel <ProviderResponse>();

            if (result.Succeeded)
            {
                var providerDbModel = model.Map <CreateProviderRequest, Providers>();
                providerDbModel = await _providerRepository.Save(providerDbModel);

                result.Model = providerDbModel.Map <Providers, ProviderResponse>();
            }

            return(result);
        }
        public async Task <ValidationResultModel <CategoryResponse> > Save(CreateCategoryRequest model)
        {
            var result = new ValidationResultModel <CategoryResponse>();

            if (result.Succeeded)
            {
                var categoryDbModel = model.Map <CreateCategoryRequest, Categories>();
                categoryDbModel = await _categoryRepository.Save(categoryDbModel);

                result.Model = categoryDbModel.Map <Categories, CategoryResponse>();
            }

            return(result);
        }
        public static bool IsModelValid <T>(T item, out ValidationResultModel <T> resultModel)
            where T : new()
        {
            resultModel = new ValidationResultModel <T> {
                Model = item
            };

            ICollection <ValidationResult> results;
            var isValid = IsModelValid(item, out results);

            resultModel.Results = results;

            return(isValid);
        }
        public async Task <ValidationResultModel <ReviewResponse> > Save(CreateReviewRequest model)
        {
            var result = new ValidationResultModel <ReviewResponse>();

            if (result.Succeeded)
            {
                var reviewDbModel = model.Map <CreateReviewRequest, Reviews>();
                reviewDbModel = await _reviewRepository.Save(reviewDbModel);

                result.Model = reviewDbModel.Map <Reviews, ReviewResponse>();
            }

            return(result);
        }
Exemple #13
0
        protected ActionResult CustomResponseModel(ValidationResultModel validationResult)
        {
            if (validationResult != null)
            {
                foreach (var error in validationResult.Errors)
                {
                    AddError(error.ErrorMessage);
                }

                return(Ok(validationResult));
            }
            else
            {
                return(CustomResponse());
            }
        }
Exemple #14
0
 /// <summary>
 /// Save Clinical Document Constructor
 /// </summary>
 public SaveClinicalDocument_Step()
 {
     _server = new TestServer(
         WebHost.CreateDefaultBuilder()
         .UseStartup <Startup>()
         );
     _client = _server.CreateClient();
     _client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
     _documentDetailRequest_Contract = new DocumentDetailRequest
     {
         AccountNumber = "1234567",
         DocumentName  = "OpsReport",
         DocumentType  = "JPEG",
         FacilityCode  = "SJPR",
         MimeType      = "image/jpeg",
         SourceSystem  = "GCR",
         Document      = Convert.FromBase64String("")
     };
     _validationResultModel = new ValidationResultModel();
 }
        public async Task <ValidationResultModel> ValidateAdd(DataModel model)
        {
            var result = new ValidationResultModel();

            // Simple validation of string length and such like, assumes
            //  we are not using standard MVC model validation

            if (model.Name == null)
            {
                // Failed as it is required
                result.AddMessage("EntityName", $"Value is required");
            }

            if (model.Name?.Length > EntityNameMaxLength)
            {
                // Failed as it is required
                result.AddMessage("EntityName", $"Maximum length of {EntityNameMaxLength}");
            }

            return(await Task.FromResult(result));
        }
Exemple #16
0
        public Task <ValidationResultModel <TResult> > BuildAsync <TResult>(TResult result)
        {
            if (_domainNotificationService.HasNotifications())
            {
                return(Task.FromResult(ValidationResultModel <TResult> .Instantiate(_domainNotificationService
                                                                                    .GetNotifications()
                                                                                    .Select(n =>
                {
                    var resource = _localization.GetResource(n.Key, n.Value);
                    if (!string.IsNullOrEmpty(resource))
                    {
                        return new NotificationModel(n.Key, resource, n.Type);
                    }
                    else
                    {
                        return new NotificationModel(n.Key, n.Value, n.Type);
                    }
                }).ToList(), result)));
            }


            return(Task.FromResult(ValidationResultModel <TResult> .Instantiate(result)));
        }
Exemple #17
0
 public ErrorResponse(ErrorCode code, string message, ValidationResultModel validationResult)
     : this(new ErrorData((int)code, message, validationResult))
 {
 }
Exemple #18
0
 public Task <ValidationResultModel <Exception> > BuildAsync(Exception ex)
 {
     return(Task.FromResult(ValidationResultModel <Exception> .Instantiate(ex)));
 }
Exemple #19
0
 public ValidationResultModel <Exception> Build(Exception ex)
 {
     return(ValidationResultModel <Exception> .Instantiate(ex));
 }
Exemple #20
0
 public ErrorData(int code, string message, ValidationResultModel validationResult)
 {
     Code             = code;
     Message          = message;
     ValidationResult = validationResult;
 }
        /// <summary>
        /// 导入模型验证数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="stream">文件流</param>
        /// <returns></returns>
        public Task <ImportModel <T> > Import <T>(Stream stream) where T : class, new()
        {
            IList <ValidationResultModel> validationResultModels = new List <ValidationResultModel>();

            using (var excelPackage = new ExcelPackage(stream))
            {
                bool      hasValidTemplate = ParseTemplate <T>(excelPackage, out var columnHeaders);
                IList <T> importDataModels = new List <T>();
                if (!hasValidTemplate)
                {
                    return(Task.FromResult(new ImportModel <T>
                    {
                        HasValidTemplate = hasValidTemplate,
                        Data = importDataModels,
                        ValidationResults = validationResultModels
                    }));
                }

                importDataModels = ParseData <T>(excelPackage, columnHeaders);
                string keyName = "Invalid";
                for (var i = 0; i < importDataModels.Count; i++)
                {
                    var validationResultModel = new ValidationResultModel
                    {
                        Index = i + 1
                    };

                    var isValid = ValidatorHelper.TryValidate(importDataModels[i], out var validationResults);
                    if (isValid)
                    {
                        continue;
                    }

                    if (!validationResultModel.Errors.ContainsKey(keyName))
                    {
                        validationResultModel.Errors.Add(keyName, "导入数据无效");
                    }

                    foreach (var validationResult in validationResults)
                    {
                        var key    = validationResult.MemberNames.First();
                        var column = columnHeaders.FirstOrDefault(a => a.PropertyName.Equals(key));
                        if (column != null)
                        {
                            key = column.ExporterHeader.Name;
                        }

                        var value = validationResult.ErrorMessage;
                        if (validationResultModel.FieldErrors.ContainsKey(key))
                        {
                            validationResultModel.FieldErrors[key] = validationResultModel.FieldErrors[key] + "," + value;
                        }
                        else
                        {
                            validationResultModel.FieldErrors.Add(key, value);
                        }
                    }

                    if (validationResultModel.Errors.Count > 0)
                    {
                        validationResultModels.Add(validationResultModel);
                    }
                }

                return(Task.FromResult(new ImportModel <T>
                {
                    HasValidTemplate = hasValidTemplate,
                    Data = importDataModels,
                    ValidationResults = validationResultModels
                }));
            }
        }
 public void ThenInResponseBodyOfGETAPICall(string errorMessage)
 {
     _validationResultModel = JsonConvert.DeserializeObject <ValidationResultModel>(_responseMessage.Content.ReadAsStringAsync().Result);
     Assert.Contains(errorMessage, _validationResultModel.Errors.FirstOrDefault().Message);
 }