// GET: Observation/Create public ActionResult SubmitObservation(int?id) { if (id == null) { return(new HttpNotFoundResult("Challenge ID must be specified")); } var maybeChallenge = uow.Challenges.GetMaybe(id.Value); if (maybeChallenge.None) { return(HttpNotFound()); } var challenge = maybeChallenge.Single(); var model = new SubmitObservationViewModel { ChallengeId = challenge.Id, ChallengeName = challenge.Name, ObservationDateTimeLocal = DateTime.UtcNow, Seeing = AntoniadiScale.Unknown, Transparency = TransparencyLevel.Unknown }; // Set validation images // ToDo - randomly choose 3 incorrect images and obtain the 1 correct image from the challenge data // For now, just use the NoImage.png placeholder var validationImages = GetValidationImages(challenge); model.ValidationImages = validationImages.ToList(); model.EquipmentPicker = PickListExtensions.FromEnum <ObservingEquipment>().ToSelectList(); model.SeeingPicker = PickListExtensions.FromEnum <AntoniadiScale>().ToSelectList(); model.TransparencyPicker = PickListExtensions.FromEnum <TransparencyLevel>().ToSelectList(); return(View(model)); }
public ActionResult SubmitObservation(SubmitObservationViewModel model) { var observation = mapper.Map <SubmitObservationViewModel, Observation>(model); observation.UserId = webUser.UniqueId; var maybeChallenge = uow.Challenges.GetMaybe(model.ChallengeId); if (maybeChallenge.None) { throw new ArgumentException("Invalid challenge ID specified"); } observation.ExpectedImage = maybeChallenge.Single().ValidationImage; observation.Status = ModerationState.AwaitingModeration; uow.Observations.Add(observation); uow.Commit(); // ToDo: should redirect to a confirmation screen rather than the home page return(RedirectToRoute(new { Controller = "Home", Action = "Index" })); }