Exemplo n.º 1
0
        public async Task <IActionResult> Create(int id, RankingViewModel vm)
        {
            //removing userid from state to make modelstate valid
            ModelState.Remove("Rank.UserId");
            if (ModelState.IsValid)
            {
                //setting user and user id to current user
                var user = await GetCurrentUserAsync();

                vm.rank.UserId = user.Id;
                // a new ranking level instance in view model
                vm.rankingLevel = new RankingLevel();
                _context.Add(vm.rank);

                await _context.SaveChangesAsync();

                //if the user selected one or more levels for learning materials add one or more ranking levels to database join table
                if (vm.SelectedLevelId != null)
                {
                    foreach (var rl in vm.SelectedLevelId)
                    {
                        var newRankingLevel = new RankingLevel();
                        newRankingLevel.RankingId = vm.rank.Id;
                        newRankingLevel.LevelId   = rl;
                        _context.Add(newRankingLevel);
                    }
                }

                await _context.SaveChangesAsync();

                return(RedirectToAction("Index", "LearningMaterials"));
            }

            return(View(vm));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Edit(int id, RankingViewModel vm)
        {
//makes sure that the rank exists
            if (id != vm.rank.Id)
            {
                return(NotFound());
            }

            ModelState.Remove("UserId");
            if (ModelState.IsValid)
            {
                try
                {
                    var user = await GetCurrentUserAsync();

                    vm.rank.UserId = user.Id;
                    _context.Update(vm.rank);
                    await _context.SaveChangesAsync();

                    if (vm.SelectedLevelId != null)
                    {
                        foreach (var rl in vm.SelectedLevelId)
                        {
                            var newRankingLevel = new RankingLevel();
                            newRankingLevel.RankingId = vm.rank.Id;
                            newRankingLevel.LevelId   = rl;
                            _context.Update(newRankingLevel);
                        }
                    }

                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!RankingExists(vm.rank.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction("Index", "LearningMaterials"));
            }
            return(View(vm));
        }