示例#1
0
        public ActionResult Update(OrderViewModel model)
        {
            var result = new OrderViewModel();
            var validator = new OrderViewModelValidator();
            var validationResult = validator.Validate(new ValidationContext<OrderViewModel>(model, new PropertyChain(), new RulesetValidatorSelector("update")));
            if (validationResult.IsValid)
            {
                var request = model.ConvertToUpdateOrderRequest();
                request.IdentityToken = this.FormsAuthentication.GetAuthenticationToken();
                var response = this.orderService.UpdateOrder(request);
                result = response.ConvertToOrderViewModel();
            }
            else
            {
                result.MessageType = MessageType.Warning.ToString();
                result.BrokenRules = new List<BusinessRule>();
                foreach (var failure in validationResult.Errors)
                {
                    result.BrokenRules.Add(new BusinessRule(failure.PropertyName, failure.ErrorMessage));
                }
            }

            if (result.Id == 0)
            {
                result.Id = model.Id;
            }

            if (string.IsNullOrEmpty(result.OrderNumber))
            {
                result.OrderNumber = model.OrderNumber;
            }

            if (string.IsNullOrEmpty(result.TrackingNumber))
            {
                result.TrackingNumber = model.TrackingNumber;
            }

            if (string.IsNullOrEmpty(result.Status))
            {
                result.Status = model.Status;
            }

            var jsonNetResult = new JsonNetResult
            {
                Formatting = (Formatting)Newtonsoft.Json.Formatting.Indented,
                Data = result
            };
            return jsonNetResult;
        }