public IActionResult OnGet(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var now = this.clockService.UtcNow;

            var spec = Specifications
                       .GetClosedBlinds(now)
                       .AndAlso(x => x.Id == id);

            spec.FetchStrategy = Strategies
                                 .IncludeItemsAndVotes()
                                 .Include(x => x.BlindItems.First().BlindVotes.First().CreatedByUser);
            var blind = blindRepository.Find(spec);

            if (blind == null)
            {
                // TODO better error??
                return(NotFound());
            }

            if (!blind.BlindItems.Any(x => x.BlindVotes.Any()))
            {
                // TODO better error??
                return(NotFound());
            }

            Blind          = mapper.Map <BlindDto>(blind);
            BlindItemScore = mapper.Map <List <BlindItemScoresDto> >(blind.BlindItems).OrderByDescending(x => x.TotalScore).ToList();

            return(Page());
        }
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var now = this.clockService.UtcNow;

            var blind = blindRepository.Get((int)id);

            if (blind == null)
            {
                return(NotFound());
            }

            // Kick if its not theirs
            var userId = this.userManager.GetUserId(User);

            if (blind.CreatedByUserId != userId)
            {
                return(Unauthorized());
            }

            Blind = mapper.Map <BlindDto>(blind);

            if (Blind != null)
            {
                blind.Closed = now.UtcDateTime;
                context.Attach(blind).State = EntityState.Modified;
                await context.SaveChangesAsync();
            }

            return(RedirectToPage("./Index"));
        }
        public IActionResult OnGet(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            // Kick if it has votes
            var spec = Specifications.GetBlindsWithNoVotes()
                       .AndAlso(x => x.Id == id);
            var blind = blindRepository.Find(spec);

            if (blind == null)
            {
                // TODO better error??
                return(NotFound());
            }

            // Kick if its not theirs
            var userId = this.userManager.GetUserId(User);

            if (blind.CreatedByUserId != userId)
            {
                return(Unauthorized());
            }

            Blind = mapper.Map <BlindDto>(blind);

            if (Blind == null)
            {
                return(NotFound());
            }
            return(Page());
        }
        public IActionResult OnGet(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var blind = blindRepository.Get((int)id);

            if (blind == null)
            {
                return(NotFound());
            }

            // Kick if its not theirs
            var userId = this.userManager.GetUserId(User);

            if (blind.CreatedByUserId != userId)
            {
                return(Unauthorized());
            }

            Blind = mapper.Map <BlindDto>(blind);

            if (Blind == null)
            {
                return(NotFound());
            }
            return(Page());
        }
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            // Kick if it has votes
            var spec = Specifications.GetBlindsWithNoVotes()
                       .AndAlso(x => x.Id == id);
            var blind = blindRepository.Find(spec);

            if (blind == null)
            {
                // TODO better error??
                return(NotFound());
            }

            // Kick if its not theirs
            var userId = this.userManager.GetUserId(User);

            if (blind.CreatedByUserId != userId)
            {
                return(Unauthorized());
            }

            Blind = mapper.Map <BlindDto>(blind);

            if (Blind != null)
            {
                context.Blind.Remove(blind);
                await context.SaveChangesAsync();
            }

            return(RedirectToPage("./Index"));
        }