public ActionResult Edit(int id, CreatePlayerViewModel vm) { Player player = CompositionRoot.DocumentSession.Load <Player>(id); if (player == null) { throw new HttpException(404, "Player not found"); } // prevent duplicates Player[] duplicates = CompositionRoot.DocumentSession.Query <Player, PlayerSearch>().Where(x => x.Name == vm.Name).ToArray(); if (duplicates.Any(x => x.Id != player.Id)) { ModelState.AddModelError("namn", "Namnet är redan registrerat"); } if (!ModelState.IsValid) { return(View(vm)); } player.SetName(vm.Name); player.SetEmail(vm.Email); player.SetStatus(vm.Status); player.SetPersonalNumber(vm.PersonalNumber.GetValueOrDefault()); player.SetNickname(vm.Nickname); HashSet <string> allowedRoles = new( WebsiteRoles.UserGroup().Except(WebsiteRoles.PlayerGroup()).Select(x => x.Name)); player.SetRoles(vm.Roles.Where(x => allowedRoles.Contains(x)).ToArray()); return(RedirectToAction("Index")); }
public ActionResult Delete(int id) { Player player = CompositionRoot.DocumentSession.Load <Player>(id); if (player == null) { throw new HttpException(404, "Player not found"); } return(View(new PlayerViewModel(player, WebsiteRoles.UserGroup().ToDictionary(x => x.Name)))); }
public ActionResult Index() { List <Player> players = CompositionRoot.DocumentSession.Query <Player, PlayerSearch>() .OrderBy(p => p.PlayerStatus) .ThenBy(p => p.Name) .ToList(); List <PlayerViewModel> vm = players.Where(x => x.Hidden == false) .Select(x => new PlayerViewModel(x, WebsiteRoles.UserGroup().ToDict())) .ToList(); return(View(vm)); }
public ActionResult EditPlayers(string rosterId) { Roster roster = CompositionRoot.DocumentSession .Include <Roster>(r => r.Players) .Load <Roster>(rosterId); if (roster == null) { throw new HttpException(404, "Roster not found"); } List <Player> availablePlayers = CompositionRoot.DocumentSession.Query <Player, PlayerSearch>() .OrderBy(x => x.Name) .Where(p => p.PlayerStatus == Player.Status.Active) .ToList(); EditRosterPlayersViewModel vm = new() { RosterViewModel = CompositionRoot.DocumentSession.LoadRosterViewModel(roster), AvailablePlayers = availablePlayers.Select(x => new PlayerViewModel(x, WebsiteRoles.UserGroup().ToDict())).ToArray() }; return(View(vm)); }