コード例 #1
0
        public void WhenICreateANewReview(Table table)
        {
            var reviewCreateViewModel =
                new ReviewCreateEditModel
            {
                Name = table.Rows.First()["Name"],
                LengthOfReviewRoundInWeeks = Convert.ToInt32(table.Rows.First()["Length in weeks"]),
                AddedCategories            = new List <CategoryAddModel>
                {
                    new CategoryAddModel
                    {
                        Name        = table.Rows.First()["Category 1 Name"],
                        Description = table.Rows.First()["Category 1 description"]
                    },
                    new CategoryAddModel
                    {
                        Name        = table.Rows.First()["Category 2 Name"],
                        Description = table.Rows.First()["Category 2 description"]
                    }
                }
            };
            ActionResult result = _context.ReviewController.Value.Create(reviewCreateViewModel, "Save");

            ScenarioContext.Current.Set(table);
            ScenarioContext.Current.Set(result);
            ScenarioContext.Current.Set(_context.ReviewController.Value.TempData);
        }
コード例 #2
0
 private void ValidateModel(ReviewCreateEditModel reviewCreateModel)
 {
     // 1. Remove empty entries from categories and peers
     for (var index = 0; index < reviewCreateModel.AddedCategories.Count; index++)
     {
         var category = reviewCreateModel.AddedCategories[index];
         if (string.IsNullOrWhiteSpace(category.Name) && string.IsNullOrWhiteSpace(category.Description))
         {
             reviewCreateModel.AddedCategories.Remove(category);
         }
     }
     for (var index = 0; index < reviewCreateModel.AddedPeers.Count; index++)
     {
         var peer = reviewCreateModel.AddedPeers[index];
         if (string.IsNullOrWhiteSpace(peer.UserName) && string.IsNullOrWhiteSpace(peer.EmailAddress))
         {
             reviewCreateModel.AddedPeers.Remove(peer);
         }
     }
     // 2. Check for categories with only a description
     for (var i = 0; i < reviewCreateModel.AddedCategories.Count; i++)
     {
         var index    = i;
         var category = reviewCreateModel.AddedCategories[index];
         if (string.IsNullOrWhiteSpace(category.Name))
         {
             Expression <Func <ReviewCreateEditModel, string> > expression = x => x.AddedCategories[index].Name;
             var key = ExpressionHelper.GetExpressionText(expression);
             ModelState.AddModelError(key, "Please give your category a name.");
         }
     }
     // 3. Check for peers without one of the fields
     for (var i = 0; i < reviewCreateModel.AddedPeers.Count; i++)
     {
         var index = i;
         var peer  = reviewCreateModel.AddedPeers[index];
         if (string.IsNullOrWhiteSpace(peer.UserName))
         {
             Expression <Func <ReviewCreateEditModel, string> > expression = x => x.AddedPeers[index].UserName;
             var key = ExpressionHelper.GetExpressionText(expression);
             ModelState.AddModelError(key, "Please enter your peer's name.");
         }
         else if (string.IsNullOrWhiteSpace(peer.EmailAddress))
         {
             Expression <Func <ReviewCreateEditModel, string> > expression = x => x.AddedPeers[index].EmailAddress;
             var key = ExpressionHelper.GetExpressionText(expression);
             ModelState.AddModelError(key, "Please enter your peer's email address.");
         }
     }
 }
コード例 #3
0
        public ActionResult Create(ReviewCreateEditModel reviewCreateModel, string submit)
        {
            // manual model validation
            ValidateModel(reviewCreateModel);

            if (!ModelState.IsValid)
            {
                return(View(reviewCreateModel));
            }

            // TODO: raise model state errors for duplicate email addresses

            var newReview = Mapper.Map <ReviewConfiguration>(reviewCreateModel);

            newReview.EnsureName();

            _db.ReviewConfigurations.Add(newReview);

            foreach (var cat in reviewCreateModel.AddedCategories.Select(Mapper.Map <ReviewCategory>))
            {
                newReview.Categories.Add(cat);
            }

            foreach (var newPeer in reviewCreateModel.AddedPeers.Select(Mapper.Map <UserProfile>))
            {
                var fromDb = _db.UserProfiles.SingleOrDefault(userProfile => userProfile.EmailAddress == newPeer.EmailAddress);
                newReview.Peers.Add(fromDb ?? newPeer);
            }

            var loggedInUser = _db.UserProfiles.FirstOrDefault(userProfile => userProfile.EmailAddress == User.Identity.Name);

            if (loggedInUser != null)
            {
                newReview.Peers.Add(loggedInUser);
            }

            _db.SaveChanges();

            if (submit == "Save and Start the Review")
            {
                // there will be a redirect at the end of StartReview
                return(StartReview(newReview.Id));
            }

            TempData["Message"] = "Review has been created";

            return(RedirectToAction("Index"));
        }
コード例 #4
0
        public ActionResult CreateExtension(ReviewCreateEditModel reviewCreateModel)
        {
            var action = Request.Form["submit.add"];

            if (action != null)
            {
                if (action == "addCategory")
                {
                    reviewCreateModel.AddedCategories.Add(new CategoryAddModel());
                    return(View("Create", reviewCreateModel));
                }
                if (action == "addPeer")
                {
                    reviewCreateModel.AddedPeers.Add(new PeerAddModel());
                    return(View("Create", reviewCreateModel));
                }
            }
            // ReSharper disable once NotResolvedInText
            throw new ArgumentNullException("submit.add", "The given form field must not be empty!");
        }