public ActionResult Submit(Guid id, BadgeAssociatedWorkModel[] criterion, string reflections) { var badge = RepositoryFactory.BadgeRepository.GetNullableById(id); if (badge == null) return HttpNotFound(); var user = RepositoryFactory.UserRepository.Queryable.Single(x => x.Identifier == CurrentUser.Identity.Name); var submission = RepositoryFactory.BadgeSubmissionRepository.Queryable.SingleOrDefault( x => x.Badge.Id == badge.Id && x.Creator.Identifier == CurrentUser.Identity.Name); if (submission == null) { submission = new BadgeSubmission { Badge = badge, Creator = user, Approved = false }; } else { submission.BadgeFulfillments.Clear(); } AssociateWorkWithCriterion(submission, criterion); submission.Reflection = reflections; submission.Submitted = true; submission.SubmittedOn = DateTime.UtcNow; Message = "Your badge submission has been forwarded for review. You should recieve a response within 48 hours."; RepositoryFactory.BadgeSubmissionRepository.EnsurePersistent(submission); return RedirectToAction("MyBadges"); }
public ActionResult Earn(Guid id, BadgeAssociatedWorkModel[] criterion, string reflections) { var badge = RepositoryFactory.BadgeRepository.GetNullableById(id); if (badge == null) return HttpNotFound(); var user = RepositoryFactory.UserRepository.Queryable.Single(x => x.Identifier == CurrentUser.Identity.Name); var submission = RepositoryFactory.BadgeSubmissionRepository.Queryable.SingleOrDefault( x => x.Badge.Id == badge.Id && x.Creator.Identifier == CurrentUser.Identity.Name); if (submission == null) { submission = new BadgeSubmission { Badge = badge, Creator = user, Approved = false }; } else { submission.BadgeFulfillments.Clear(); } submission.Reflection = reflections; AssociateWorkWithCriterion(submission, criterion); Message = "Your badge progress has been saved"; RepositoryFactory.BadgeSubmissionRepository.EnsurePersistent(submission); return RedirectToAction("MyBadges"); }