public async Task CheckReservedServedToGiveToAUser() { var reserved = await FindAll(); if (reserved.Any()) { foreach (var reservedServer in reserved) { var user = await _userService.GetUserByEmail(reservedServer.Email); if (user == null) { continue; } if (reservedServer.ServerId != null) { var server = await _pavlovServerService.FindOne((int)reservedServer.ServerId); if (server == null) { continue; } server.Owner = user; server.LiteDbUserId = user.Id.ToString(); await _pavlovServerService.Upsert(server); if (!await _userManager.IsInRoleAsync(user, "ServerRent")) { await _userManager.AddToRoleAsync(user, "ServerRent"); } } else if (reservedServer.SshServerId != null) { var server = await _sshServerService.FindOne((int)reservedServer.SshServerId); if (server == null) { continue; } server.Owner = user; server.LiteDbUserId = user.Id.ToString(); await _sshServerService.Update(server); if (!await _userManager.IsInRoleAsync(user, "OnPremise")) { await _userManager.AddToRoleAsync(user, "OnPremise"); } } await Remove(reservedServer.Id); } } BackgroundJob.Schedule( () => CheckReservedServedToGiveToAUser(), new TimeSpan(0, 5, 0)); }
public async Task <PavlovServerPublicMapListViewModel> GetPavlovServerPublicMapListViewModel(int serverId) { var tmp = new PavlovServerPublicMapListViewModel(); var server = await _pavlovServerService.FindOne(serverId); var serverInfo = await _pavlovServerInfoService.FindServer(serverId); var maps = await _serverSelectedMapService.FindAllFrom(server); tmp.MapList = maps; tmp.ServerInfo = serverInfo; return(tmp); }
public async Task <bool> SaveMatchToService(MatchViewModel match, Match realmatch) { realmatch.Name = match.Name; realmatch.MapId = match.MapId; realmatch.GameMode = match.GameMode; realmatch.TimeLimit = match.TimeLimit; realmatch.PlayerSlots = match.PlayerSlots; realmatch.ScoreToEnd = match.ScoreToEnd; var gotAnswer = GameModes.HasTeams.TryGetValue(realmatch.GameMode, out var hasTeams); if (gotAnswer) { if (hasTeams) { realmatch.Team0 = await _teamService.FindOne((int)match.Team0Id); realmatch.Team0.TeamSelectedSteamIdentities = (await _teamSelectedSteamIdentityService.FindAllFrom(realmatch.Team0.Id)).ToList(); realmatch.Team1 = await _teamService.FindOne((int)match.Team1Id); realmatch.Team1.TeamSelectedSteamIdentities = (await _teamSelectedSteamIdentityService.FindAllFrom(realmatch.Team1.Id)).ToList(); // Check all steam identities foreach (var team0SelectedSteamIdentity in match.MatchTeam0SelectedSteamIdentitiesStrings) { var tmp = realmatch.Team0.TeamSelectedSteamIdentities.FirstOrDefault(x => x.SteamIdentity.Id.ToString() == team0SelectedSteamIdentity); if (tmp != null) { realmatch.MatchTeam0SelectedSteamIdentities.Add(new MatchTeamSelectedSteamIdentity { matchId = realmatch.Id, SteamIdentityId = team0SelectedSteamIdentity, TeamId = 0, OverWriteRole = tmp.RoleOverwrite }); } else { return(true); } } foreach (var team1SelectedSteamIdentity in match.MatchTeam1SelectedSteamIdentitiesStrings) { var tmp = realmatch.Team1.TeamSelectedSteamIdentities.FirstOrDefault(x => x.SteamIdentity.Id.ToString() == team1SelectedSteamIdentity); if (tmp != null) { realmatch.MatchTeam1SelectedSteamIdentities.Add(new MatchTeamSelectedSteamIdentity { matchId = realmatch.Id, SteamIdentityId = team1SelectedSteamIdentity, TeamId = 1, OverWriteRole = tmp.RoleOverwrite }); } else { return(true); } } } else { foreach (var SelectedSteamIdentity in match.MatchSelectedSteamIdentitiesStrings) { var tmp = await _steamIdentityService.FindOne(SelectedSteamIdentity); if (tmp != null) { realmatch.MatchSelectedSteamIdentities.Add(new MatchSelectedSteamIdentity { matchId = realmatch.Id, SteamIdentityId = SelectedSteamIdentity }); } else { return(true); } } } //When not a server is set!!!! or server already is running a match if (match.PavlovServerId <= 0) { return(true); } realmatch.PavlovServer = await _pavlovServerService.FindOne(match.PavlovServerId); if (realmatch.PavlovServer == null) { return(true); } realmatch.Status = match.Status; } else { return(true); } //Problem if i save here the MatchID upper is not set until its an update:( var bla = await Upsert(realmatch); if (bla) { if (realmatch.MatchSelectedSteamIdentities.Count > 0) { foreach (var matchSelectedSteamIdentity in realmatch.MatchSelectedSteamIdentities) { matchSelectedSteamIdentity.matchId = realmatch.Id; } // First remove Old TeamSelected and Match selected stuff // Then write the new ones await _matchSelectedSteamIdentitiesService.RemoveFromMatch(realmatch.Id); await _matchSelectedSteamIdentitiesService.Upsert(realmatch.MatchSelectedSteamIdentities, match.Id); } if (realmatch.MatchTeam0SelectedSteamIdentities.Count > 0 || realmatch.MatchTeam1SelectedSteamIdentities.Count > 0) { await _matchSelectedTeamSteamIdentitiesService.RemoveFromMatch(realmatch.Id); foreach (var matchTeam0SelectedSteamIdentity in realmatch.MatchTeam0SelectedSteamIdentities) { matchTeam0SelectedSteamIdentity.matchId = realmatch.Id; } foreach (var matchTeam1SelectedSteamIdentity in realmatch.MatchTeam1SelectedSteamIdentities) { matchTeam1SelectedSteamIdentity.matchId = realmatch.Id; } if (realmatch.MatchTeam0SelectedSteamIdentities.Any()) { await _matchSelectedTeamSteamIdentitiesService.Upsert(realmatch.MatchTeam0SelectedSteamIdentities, match.Id, 0); } if (realmatch.MatchTeam1SelectedSteamIdentities.Any()) { await _matchSelectedTeamSteamIdentitiesService.Upsert(realmatch.MatchTeam1SelectedSteamIdentities, match.Id, 1); } } return(true); } return(false); }