// 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" }));
        }