public async Task <IActionResult> EditServerSelectedMaps(int serverId) { if (!await RightsHandler.HasRightsToThisPavlovServer(HttpContext.User, await _userservice.getUserFromCp(HttpContext.User), serverId, _service, _pavlovServerService)) { return(Forbid()); } var serverSelectedMap = new List <ServerSelectedMap>(); var server = await _pavlovServerService.FindOne(serverId); serverSelectedMap = (await _serverSelectedMapService.FindAllFrom(server)).ToList(); var tmp = await _mapsService.FindAll(); if (server.Shack) { tmp = tmp.Where(x => x.Shack && x.ShackSshServerId == server.SshServer.Id).ToArray(); } else { tmp = tmp.Where(x => !x.Shack).ToArray(); } var viewModel = new SelectedServerMapsViewModel { AllMaps = tmp.ToList(), SelectedMaps = serverSelectedMap, ServerId = serverId }; return(View("ServerMaps", viewModel)); }
public async Task <bool> SaveServerSelectedMap(int serverId, string mapId, string gameMode, bool move = true, [CanBeNull] string oldMode = "") { if (!await RightsHandler.HasRightsToThisPavlovServer(HttpContext.User, await _userservice.getUserFromCp(HttpContext.User), serverId, _service, _pavlovServerService)) { return(false); } var realMap = await _mapsService.FindOne(mapId); var pavlovServer = await _pavlovServerService.FindOne(serverId); var mapsSelected = await _serverSelectedMapService.FindAllFrom(pavlovServer); if (mapsSelected != null) { var toUpdate = mapsSelected.FirstOrDefault(x => x.Map?.Id == realMap.Id && x.GameMode == gameMode); if (toUpdate == null) { var newMap = new ServerSelectedMap { Map = realMap, PavlovServer = pavlovServer, GameMode = gameMode }; await _serverSelectedMapService.Insert(newMap); if (!move) // means that it just changed GameMode { //i need to know to old Game Mode var oldMap = mapsSelected.FirstOrDefault(x => x.Map?.Id == realMap.Id && x.GameMode == oldMode); if (oldMap != null) { await _serverSelectedMapService.Delete(oldMap.Id); } } } else { //Can never go here? toUpdate.GameMode = gameMode; await _serverSelectedMapService.Update(toUpdate); } } else { var newMap = new ServerSelectedMap { GameMode = gameMode, Map = realMap, PavlovServer = pavlovServer }; await _serverSelectedMapService.Insert(newMap); } return(true); }