// GET: Rankings/Create
        public async Task <IActionResult> Create(int id)
        {
            CreateRankingViewModel vm = new CreateRankingViewModel();

            // Add the student's id to the view model
            vm.Student = await _context.Student.Where(s => s.Id == id).FirstOrDefaultAsync();

            vm.Companies = await _context.Company.Select(c => new SelectListItem()
            {
                Value = c.Id.ToString(),
                Text  = c.Name
            }).ToListAsync();

            return(View(vm));
        }
        public async Task <IActionResult> Create(CreateRankingViewModel vm)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    // Wipe out previous rankings and start fresh so that each student has only one set of rankings
                    var previousRankings = _context.Ranking.Where(r => r.StudentId == vm.Student.Id);
                    await previousRankings.ForEachAsync(pr => _context.Remove(pr));

                    await _context.SaveChangesAsync();

                    List <Ranking> Rankings = new List <Ranking>()
                    {
                        vm.Place1, vm.Place2, vm.Place3, vm.Place4, vm.Place5
                    };

                    for (var i = 0; i < Rankings.Count; i++)
                    {
                        // TODO: Refactor, this is fragile
                        var r = Rankings[i];
                        r.Rank      = i + 1;
                        r.StudentId = vm.Student.Id;
                        _context.Ranking.Add(r);
                    }

                    await _context.SaveChangesAsync();

                    return(RedirectToAction("Index", "Students"));
                }
                catch (Exception e)
                {
                    return(View(vm));
                };
            }
            else
            {
                return(View(vm));
            }
        }