/// <summary> /// If there is no real life data between seasons, /// change some match dates to around now for testing purposes /// </summary> private static void RandomizeMatchDatesForTestingPurposes(TtcDbContext context) { bool endOfSeason = !context.Matches.Any(match => match.Date > DateTime.Now); if (true || endOfSeason) { int currentFrenoySeason = context.CurrentFrenoySeason; var passedMatches = context.Matches .Where(x => x.FrenoySeason == currentFrenoySeason) //.Where(x => x.Date < DateTime.Today) .OrderByDescending(x => x.Date) .Take(42); var timeToAdd = DateTime.Today - passedMatches.First().Date; foreach (var match in passedMatches.Take(20)) { match.Date = match.Date.Add(timeToAdd); } var rnd = new Random(); foreach (var match in passedMatches.Take(20)) { match.Date = DateTime.Today.Add(TimeSpan.FromDays(rnd.Next(1, 20))).AddHours(rnd.Next(10, 20)); match.Description = ""; match.AwayScore = null; match.HomeScore = null; //match.IsSyncedWithFrenoy = true; match.WalkOver = false; context.MatchComments.RemoveRange(match.Comments.ToArray()); context.MatchGames.RemoveRange(match.Games.ToArray()); context.MatchPlayers.RemoveRange(match.Players.ToArray()); } } }
public async Task <Player> UpdatePlayer(Player player) { using (var dbContext = new TtcDbContext()) { var existingSpeler = await dbContext.Players.FirstOrDefaultAsync(x => x.Id == player.Id); if (existingSpeler == null) { existingSpeler = new PlayerEntity(); MapPlayer(player, existingSpeler); dbContext.Players.Add(existingSpeler); } else { MapPlayer(player, existingSpeler); } await dbContext.SaveChangesAsync(); player.Id = existingSpeler.Id; } var newPlayer = await GetPlayer(player.Id); return(newPlayer); }
static void Main(string[] args) { using (var context = new TtcDbContext()) { try { // This code can be triggered from the UI! // Admin > Spelers > Frenoy Sync button (float: right) //var vttlPlayers = new FrenoyPlayersApi(context, Competition.Vttl); //vttlPlayers.StopAllPlayers(true); //vttlPlayers.SyncPlayers(); //var sportaPlayers = new FrenoyPlayersApi(context, Competition.Sporta); //sportaPlayers.SyncPlayers(); // This code can be triggered by deploying a new migration // --> No more at the moment with asyncy stuff see README. var vttl = new FrenoyMatchesApi(context, Competition.Vttl); vttl.SyncTeamsAndMatches(); var sporta = new FrenoyMatchesApi(context, Competition.Sporta); sporta.SyncTeamsAndMatches(); //RandomizeMatchDatesForTestingPurposes(context); context.SaveChanges(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); Console.ReadKey(); } } }
public async Task <string> SetNewPassword(PasswordCredentials request) { using (var dbContext = new TtcDbContext()) { PlayerEntity player; if (request.PlayerId == SystemPlayerIdFromFrontend) { player = await dbContext.Players.SingleAsync(ply => ply.NaamKort == "SYSTEM"); } else { player = await dbContext.Players.SingleOrDefaultAsync(x => x.Id == request.PlayerId); } if (player != null) { await dbContext.Database.ExecuteSqlCommandAsync( $"UPDATE {PlayerEntity.TableName} SET paswoord=MD5({{1}}) WHERE id={{0}}", player.Id, request.NewPassword); return(player.Email); } return(null); } }
public ICollection<Match> GetMatches() { if (MatchesPlaying) { return _matches; } using (var dbContext = new TtcDbContext()) { var matchEntities = dbContext.Matches .WithIncludes() //.Where(x => x.Id == 802) .Where(x => x.HomeClubId == Constants.OwnClubId || x.AwayClubId == Constants.OwnClubId) .Where(x => x.FrenoySeason == Constants.FrenoySeason) .ToList(); var matchIds = matchEntities.Select(x => x.Id).ToArray(); var comments = dbContext.MatchComments.Where(x => matchIds.Contains(x.MatchId)).ToArray(); foreach (var match in matchEntities) { match.Comments = comments.Where(x => x.MatchId == match.Id).ToArray(); } var result = Mapper.Map<IList<MatchEntity>, IList<Match>>(matchEntities); if (result.Any(m => m.ScoreType == MatchOutcome.BeingPlayed)) { _matches = result; MatchesPlaying = true; } return result; } }
public async Task <User> GetUser(int playerId) { using (var dbContext = new TtcDbContext()) { return(await GetUser(dbContext, playerId)); } }
public async Task <IEnumerable <Team> > GetForCurrentYear() { using (var dbContext = new TtcDbContext()) { int currentSeason = dbContext.CurrentSeason; var teams = await dbContext.Teams .Include(x => x.Players) .Include(x => x.Opponents) .Where(x => x.Year == currentSeason) .ToArrayAsync(); var result = Mapper.Map <IList <TeamEntity>, IList <Team> >(teams); foreach (var team in result) { var key = new TeamRankingKey(team.Competition, team.Frenoy.DivisionId); if (RankingCache.ContainsKey(key)) { team.Ranking = RankingCache[key]; } } InvalidateCache(); return(result); } }
public async Task <byte[]> GetExcelExport() { using (var dbContext = new TtcDbContext()) { int currentSeason = dbContext.CurrentSeason; var teams = await dbContext.Teams .Include(x => x.Players) //.Include(x => x.Opponents) .Where(x => x.Year == currentSeason) .ToArrayAsync(); int currentFrenoySeason = dbContext.CurrentFrenoySeason; var matches = await dbContext.Matches //.Include(x => x.HomeTeam) //.Include(x => x.AwayTeam) .Include(x => x.Players) .Where(x => x.HomeClubId == Constants.OwnClubId || x.AwayClubId == Constants.OwnClubId) .Where(x => x.FrenoySeason == currentFrenoySeason) .ToListAsync(); var players = await dbContext.Players.Where(x => x.Gestopt == null).ToArrayAsync(); var clubs = await dbContext.Clubs.ToArrayAsync(); var exceller = TeamsExcelCreator.CreateFormation(teams, matches, players, clubs); return(exceller.Create()); } }
public void FindInvalidPlayerRecords() { using (var dbContext = new TtcDbContext()) { foreach (PlayerEntity speler in dbContext.Players) { if (speler.ClubIdVttl.HasValue) { Assert.That(speler.ClubIdVttl, Is.Not.Null); Assert.That(speler.IndexVttl, Is.Not.Null); Assert.That(speler.LinkKaartVttl, Is.Not.Null); Assert.That(speler.KlassementVttl, Is.Not.Null); Assert.That(speler.ComputerNummerVttl, Is.Not.Null); Assert.That(speler.VolgnummerVttl, Is.Not.Null); } if (speler.ClubIdSporta.HasValue) { Assert.That(speler.ClubIdSporta, Is.Not.Null); Assert.That(speler.IndexSporta, Is.Not.Null); Assert.That(speler.LinkKaartSporta, Is.Not.Null); Assert.That(speler.KlassementSporta, Is.Not.Null); Assert.That(speler.LidNummerSporta, Is.Not.Null); Assert.That(speler.VolgnummerSporta, Is.Not.Null); } } } }
public async Task <Match> SetMyFormation(MatchPlayer matchPlayer) { using (var dbContext = new TtcDbContext()) { var existingPlayer = await dbContext.MatchPlayers .Include(x => x.Match) .Where(x => x.MatchId == matchPlayer.MatchId && x.PlayerId == matchPlayer.PlayerId) .FirstOrDefaultAsync(x => x.Status != PlayerMatchStatus.Captain && x.Status != PlayerMatchStatus.Major); if (existingPlayer != null) { existingPlayer.Status = matchPlayer.Status; existingPlayer.StatusNote = matchPlayer.StatusNote; } else { var verslagSpeler = Mapper.Map <MatchPlayer, MatchPlayerEntity>(matchPlayer); dbContext.MatchPlayers.Add(verslagSpeler); } await dbContext.SaveChangesAsync(); } var newMatch = await GetMatch(matchPlayer.MatchId); return(newMatch); }
/// <summary> /// Toggle Captain/Major player by any player of the team on the day of the match /// </summary> public async Task <Match> ToggleMatchPlayer(MatchPlayer matchPlayer) { Debug.Assert(matchPlayer.Status == PlayerMatchStatus.Captain || matchPlayer.Status == PlayerMatchStatus.Major); using (var dbContext = new TtcDbContext()) { var match = await dbContext.Matches.FindAsync(matchPlayer.MatchId); if (match == null || match.IsSyncedWithFrenoy) { return(await GetMatch(matchPlayer.MatchId)); } var existingPlayer = await dbContext.MatchPlayers .Where(x => x.MatchId == matchPlayer.MatchId && x.PlayerId == matchPlayer.PlayerId) .FirstOrDefaultAsync(x => x.Status == matchPlayer.Status); match.Block = matchPlayer.Status; if (existingPlayer != null) { dbContext.MatchPlayers.Remove(existingPlayer); } else { dbContext.MatchPlayers.Add(Mapper.Map <MatchPlayer, MatchPlayerEntity>(matchPlayer)); } await dbContext.SaveChangesAsync(); } var newMatch = await GetMatch(matchPlayer.MatchId); return(newMatch); }
private async Task <Match> GetMatch(TtcDbContext dbContext, int matchId) { var match = await dbContext.Matches .WithIncludes() .SingleOrDefaultAsync(x => x.Id == matchId); if (match == null) { return(null); } var comments = await dbContext.MatchComments.Where(x => x.MatchId == matchId).ToArrayAsync(); match.Comments = comments; var matchModel = Map(match); if (MatchesPlaying) { var cachedMatch = _matches.Single(x => x.Id == matchModel.Id); int matchIndex = _matches.IndexOf(cachedMatch); _matches[matchIndex] = matchModel; } return(matchModel); }
public IEnumerable<Team> GetForCurrentYear() { using (var dbContext = new TtcDbContext()) { var teams = dbContext.Teams .Include(x => x.Players) .Include(x => x.Opponents) .Where(x => x.Year == Constants.CurrentSeason) .ToArray(); var result = Mapper.Map<IList<TeamEntity>, IList<Team>>(teams); foreach (var team in result) { var key = new TeamRankingKey(team.Competition, team.Frenoy.DivisionId); if (RankingCache.ContainsKey(key)) { team.Ranking = RankingCache[key]; } } InvalidateCache(); return result; } }
public async Task <EmailConfig> GetEmailConfig() { using (var context = new TtcDbContext()) { var sendGridApiKey = (await context.Parameters.SingleAsync(x => x.Sleutel == "SendGridApiKey")).Value; var fromEmail = (await context.Parameters.SingleAsync(x => x.Sleutel == "FromEmail")).Value; return(new EmailConfig(fromEmail, sendGridApiKey)); } }
public async Task <(byte[] file, SportaMatchFileInfo fileInfo)> GetExcelExport(int matchId, bool fillInOurTeam = true) { using (var dbContext = new TtcDbContext()) { var exceller = await CreateExcelCreator(matchId, dbContext); return(exceller.Create(fillInOurTeam), exceller.FileInfo); } }
public async Task <Match> FrenoyMatchSync(int matchId, bool forceSync) { using (var dbContext = new TtcDbContext()) { await FrenoyMatchSyncCore(dbContext, matchId, forceSync); return(await GetMatch(dbContext, matchId)); } }
public EmailConfig GetEmailConfig() { using (var context = new TtcDbContext()) { var sendGridApiKey = context.Parameters.Single(x => x.Sleutel == "SendGridApiKey").Value; var fromEmail = context.Parameters.Single(x => x.Sleutel == "FromEmail").Value; return new EmailConfig(fromEmail, sendGridApiKey); } }
public async Task <byte[]> GetExcelExport() { using (var dbContext = new TtcDbContext()) { var activePlayers = await dbContext.Players.Where(x => x.Gestopt == null).ToArrayAsync(); var exceller = new PlayersExcelCreator(activePlayers); return(exceller.Create()); } }
public async Task FrenoyTeamSync(int teamId) { using (var db = new TtcDbContext()) { var team = await db.Teams.SingleAsync(x => x.Id == teamId); var frenoySync = new FrenoyMatchesApi(db, Constants.NormalizeCompetition(team.Competition)); await frenoySync.SyncTeamMatches(team); } }
public async Task DeleteBoardMember(int playerId) { using (var context = new TtcDbContext()) { var board = await context.ClubContacten.SingleAsync(x => x.SpelerId == playerId); context.ClubContacten.Remove(board); await context.SaveChangesAsync(); } }
public async Task <Match> DeleteComment(int commentId) { using (var dbContext = new TtcDbContext()) { var comment = await dbContext.MatchComments.SingleAsync(x => x.Id == commentId); dbContext.MatchComments.Remove(comment); await dbContext.SaveChangesAsync(); return(await GetMatch(dbContext, comment.MatchId)); } }
public async Task <OtherMatch> FrenoyOtherMatchSync(int matchId) { using (var dbContext = new TtcDbContext()) { await FrenoyMatchSyncCore(dbContext, matchId, false); var match = dbContext.Matches .WithIncludes() .Single(x => x.Id == matchId); return(Mapper.Map <MatchEntity, OtherMatch>(match)); } }
public async Task <Match> GetMatch(int matchId, bool allowCache = false) { if (allowCache && _matches != null) { var ply = _matches.SingleOrDefault(x => x.Id == matchId); return(ply ?? await GetMatch(matchId)); } using (var dbContext = new TtcDbContext()) { return(await GetMatch(dbContext, matchId)); } }
public async Task FrenoySync() { using (var context = new TtcDbContext()) { var vttlPlayers = new FrenoyPlayersApi(context, Competition.Vttl); await vttlPlayers.StopAllPlayers(false); await vttlPlayers.SyncPlayers(); var sportaPlayers = new FrenoyPlayersApi(context, Competition.Sporta); await sportaPlayers.SyncPlayers(); } }
public Match GetMatch(int matchId, bool allowCache = false) { if (allowCache && _matches != null) { var ply = _matches.SingleOrDefault(x => x.Id == matchId); return ply ?? GetMatch(matchId); } using (var dbContext = new TtcDbContext()) { return GetMatch(dbContext, matchId); } }
public async Task <Match> AddComment(MatchComment comment) { using (var dbContext = new TtcDbContext()) { var entity = Mapper.Map <MatchCommentEntity>(comment); entity.PostedOn = TtcDbContext.GetCurrentBelgianDateTime(); dbContext.MatchComments.Add(entity); await dbContext.SaveChangesAsync(); } var newMatch = await GetMatch(comment.MatchId); return(newMatch); }
public async Task <Match> UpdateReport(MatchReport report) { using (var dbContext = new TtcDbContext()) { var existingMatch = await dbContext.Matches.FirstAsync(x => x.Id == report.MatchId); existingMatch.ReportPlayerId = report.PlayerId; existingMatch.Description = report.Text; await dbContext.SaveChangesAsync(); } var newMatch = await GetMatch(report.MatchId); return(newMatch); }
private static async Task FrenoyMatchSyncCore(TtcDbContext dbContext, int matchId, bool forceSync) { var match = await dbContext.Matches .WithIncludes() .Include(x => x.HomeTeam) .Include(x => x.AwayTeam) .SingleAsync(x => x.Id == matchId); if (forceSync || (match.Date < DateTime.Now && !match.IsSyncedWithFrenoy)) { var frenoySync = new FrenoyMatchesApi(dbContext, match.Competition, forceSync); await frenoySync.SyncMatchDetails(match); } }
public async Task DeletePlayer(int playerId) { using (var dbContext = new TtcDbContext()) { var player = await dbContext.Players.FindAsync(playerId); if (player == null) { return; } dbContext.Players.Remove(player); await dbContext.SaveChangesAsync(); } }
public ICollection<OtherMatch> GetLastOpponentMatches(int teamId, OpposingTeam opponent) { using (var dbContext = new TtcDbContext()) { var team = dbContext.Teams.Single(x => x.Id == teamId); var frenoy = new FrenoyMatchesApi(dbContext, Constants.NormalizeCompetition(team.Competition)); var firstMatch = dbContext.Matches.Where(x => x.FrenoySeason == Constants.FrenoySeason).Min(x => x.Date); if (DateTime.Now > firstMatch) { frenoy.SyncLastOpponentMatches(team, opponent); var matchEntities = dbContext.Matches .WithIncludes() .Where(match => (match.AwayClubId == opponent.ClubId && match.AwayTeamCode == opponent.TeamCode) || (match.HomeClubId == opponent.ClubId && match.HomeTeamCode == opponent.TeamCode)) .Where(match => match.FrenoyDivisionId == team.FrenoyDivisionId) .ToList(); // No comments for OpponentMatches var result = Mapper.Map<IList<MatchEntity>, IList<OtherMatch>>(matchEntities); return result; } else { // Pre season: Fetch last year matches instead int? divisionId = frenoy.SyncLastYearOpponentMatches(team, opponent); if (divisionId.HasValue) { var matchEntities = dbContext.Matches .WithIncludes() .Where(match => (match.AwayClubId == opponent.ClubId && match.AwayTeamCode == opponent.TeamCode) || (match.HomeClubId == opponent.ClubId && match.HomeTeamCode == opponent.TeamCode)) .Where(match => match.FrenoyDivisionId == divisionId.Value) .ToList(); // No comments for OpponentMatches // HACK: hack om vorig jaar matchen te tonen in de frontend zonder te moeten berekenen wat hun "last year division id" is foreach (var match in matchEntities) { match.FrenoyDivisionId = team.FrenoyDivisionId; } var result = Mapper.Map<IList<MatchEntity>, IList<OtherMatch>>(matchEntities); return result; } } } return null; }
public SportaMatchExcelCreator( TtcDbContext context, MatchEntity match, ICollection <PlayerEntity> players, ICollection <TeamEntity> teams, ICollection <PlayerEntity> opponentPlayers ) { _context = context; _match = match; _players = players; _teams = teams; _opponentPlayers = opponentPlayers; }
public async Task <Club> UpdateClub(Club club) { using (var dbContext = new TtcDbContext()) { var existingClub = await dbContext.Clubs.FirstOrDefaultAsync(x => x.Id == club.Id); if (existingClub == null) { throw new Exception("Club not found"); } MapClub(club, existingClub); await dbContext.SaveChangesAsync(); } return(club); }
public void MigrateToLatestVersion() { using (var dbContext = new TtcDbContext()) { var config = new DbMigrationsConfiguration() { MigrationsAssembly = typeof(TtcDbContext).Assembly, ContextType = typeof(TtcDbContext), MigrationsNamespace = "Ttc.DataAccess.Migrations" }; var migrator = new DbMigrator(config); migrator.Update(); //migrator.Update("0"); } }
public async Task <IEnumerable <Club> > GetActiveClubs() { if (MatchService.MatchesPlaying && _clubs != null) { return(_clubs); } using (var dbContext = new TtcDbContext()) { var activeClubs = await dbContext.Clubs .Include(x => x.Lokalen) .Include(x => x.Contacten) .Where(x => x.Actief.HasValue && x.Actief == 1) .ToListAsync(); var result = Mapper.Map <IList <ClubEntity>, IList <Club> >(activeClubs); var managers = activeClubs.Single(x => x.Id == Constants.OwnClubId).Contacten; var managerIds = managers.Select(x => x.SpelerId).ToArray(); var ourClub = result.Single(x => x.Id == Constants.OwnClubId); ourClub.Managers = new List <ClubManager>(); var managerPlayers = await dbContext.Players.Where(x => managerIds.Contains(x.Id)).ToArrayAsync(); foreach (var managerPlayer in managerPlayers) { var managerInfo = managers.Single(x => x.SpelerId == managerPlayer.Id); ourClub.Managers.Add(new ClubManager { Description = managerInfo.Omschrijving, PlayerId = managerInfo.SpelerId, Name = managerPlayer.Name, Contact = new PlayerContact(managerPlayer.Id, managerPlayer.Email, managerPlayer.Gsm, managerPlayer.Adres, managerPlayer.Gemeente), SortOrder = managerInfo.Sortering }); } if (MatchService.MatchesPlaying) { _clubs = result; } return(result); } }
public async Task <Team> GetTeam(int teamId, bool syncFrenoy) { using (var dbContext = new TtcDbContext()) { var teamEntity = await dbContext.Teams .Include(x => x.Players) .Include(x => x.Opponents) .SingleAsync(x => x.Id == teamId); var team = Mapper.Map <TeamEntity, Team>(teamEntity); if (syncFrenoy) { team.Ranking = await GetFrenoyRanking(dbContext, team.Competition, team.Frenoy.DivisionId); } return(team); } }
public IEnumerable<Club> GetActiveClubs() { if (MatchService.MatchesPlaying && _clubs != null) { return _clubs; } using (var dbContext = new TtcDbContext()) { var activeClubs = dbContext.Clubs .Include(x => x.Lokalen) .Include(x => x.Contacten) .Where(x => x.Actief.HasValue && x.Actief == 1) .ToList(); var result = Mapper.Map<IList<ClubEntity>, IList<Club>>(activeClubs); var managers = activeClubs.Single(x => x.Id == Constants.OwnClubId).Contacten; var managerIds = managers.Select(x => x.SpelerId).ToArray(); var ourClub = result.Single(x => x.Id == Constants.OwnClubId); ourClub.Managers = new List<ClubManager>(); var managerPlayers = dbContext.Players.Where(x => managerIds.Contains(x.Id)); foreach (var managerPlayer in managerPlayers) { var managerInfo = managers.Single(x => x.SpelerId == managerPlayer.Id); ourClub.Managers.Add(new ClubManager { Description = string.IsNullOrWhiteSpace(managerInfo.Omschrijving) ? ClubManagerType.Default : (ClubManagerType)Enum.Parse(typeof(ClubManagerType), managerInfo.Omschrijving, true), PlayerId = managerInfo.SpelerId, Name = managerPlayer.Naam, Contact = new PlayerContact(managerPlayer.Id, managerPlayer.Email, managerPlayer.Gsm, managerPlayer.Adres, managerPlayer.Gemeente), SortOrder = managerInfo.Sortering }); } if (MatchService.MatchesPlaying) { _clubs = result; } return result; } }
public Team GetTeam(int teamId, bool syncFrenoy) { using (var dbContext = new TtcDbContext()) { var teamEntity = dbContext.Teams .Include(x => x.Players) .Include(x => x.Opponents) .Single(x => x.Id == teamId); var team = Mapper.Map<TeamEntity, Team>(teamEntity); if (syncFrenoy) { team.Ranking = GetFrenoyRanking(dbContext, team.Competition, team.Frenoy.DivisionId); } return team; } }
public Player UpdateStyle(PlayerStyle playerStyle) { using (var dbContext = new TtcDbContext()) { var existingSpeler = dbContext.Players.FirstOrDefault(x => x.Id == playerStyle.PlayerId); if (existingSpeler == null) { return null; } existingSpeler.Stijl = playerStyle.Name; existingSpeler.BesteSlag = playerStyle.BestStroke; dbContext.SaveChanges(); } var newMatch = GetPlayer(playerStyle.PlayerId); return newMatch; }
public ICollection<Player> GetOwnClub() { if (MatchService.MatchesPlaying && _players != null) { return _players; } using (var dbContext = new TtcDbContext()) { var players = dbContext.Players.ToArray(); var result = Mapper.Map<IList<PlayerEntity>, IList<Player>>(players); if (MatchService.MatchesPlaying) { _players = result; } return result; } }
public Player GetPlayer(int playerId, bool allowCache = false) { if (allowCache && _players != null) { var ply = _players.SingleOrDefault(x => x.Id == playerId); return ply ?? GetPlayer(playerId); } using (var dbContext = new TtcDbContext()) { var newPlayer = Mapper.Map<PlayerEntity, Player>(dbContext.Players.SingleOrDefault(x => x.Id == playerId)); if (_players != null) { int cacheIndex = _players.IndexOf(_players.Single(x => x.Id == newPlayer.Id)); _players[cacheIndex] = newPlayer; } return newPlayer; } }
private ICollection<DivisionRanking> GetFrenoyRanking(TtcDbContext dbContext, Competition competition, int divisionId) { var key = new TeamRankingKey(competition, divisionId); if (RankingCache.ContainsKey(key)) { return RankingCache[key]; } var frenoy = new FrenoyTeamsApi(dbContext, competition); var ranking = frenoy.GetTeamRankings(divisionId); if (!RankingCache.ContainsKey(key)) { lock (CacheLock) { if (!RankingCache.ContainsKey(key)) { RankingCache.Add(key, ranking); } } } return ranking; }
public Guid EmailMatchesPlayer(string email, int playerId) { using (var dbContext = new TtcDbContext()) { var player = dbContext.Players.SingleOrDefault(x => x.Id == playerId && x.Email.ToLower() == email.ToLower()); if (player == null) { throw new Exception("Email komt niet overeen voor " + playerId); } var passwordReset = new PlayerPasswordResetEntity(playerId); dbContext.PlayerPasswordResets.Add(passwordReset); dbContext.SaveChanges(); return passwordReset.Guid; } }
public Team ToggleTeamPlayer(TeamToggleRequest req) { using (var db = new TtcDbContext()) { var team = db.Teams.Include(x => x.Players).Single(x => x.Id == req.TeamId); var exPlayer = team.Players.SingleOrDefault(x => x.PlayerId == req.PlayerId); if (exPlayer == null) { team.Players.Add(new TeamPlayerEntity { PlayerId = req.PlayerId, TeamId = req.TeamId, PlayerType = (TeamPlayerType)Enum.Parse(typeof(TeamPlayerType), req.Role) }); } else { db.Entry(exPlayer).State = EntityState.Deleted; } db.SaveChanges(); return GetTeam(req.TeamId, false); } }
public Player UpdatePlayer(Player player) { using (var dbContext = new TtcDbContext()) { var existingSpeler = dbContext.Players.FirstOrDefault(x => x.Id == player.Id); if (existingSpeler == null) { existingSpeler = new PlayerEntity(); MapPlayer(player, existingSpeler); dbContext.Players.Add(existingSpeler); } else { MapPlayer(player, existingSpeler); } dbContext.SaveChanges(); player.Id = existingSpeler.Id; } var newPlayer = GetPlayer(player.Id); return newPlayer; }
public void SetNewPasswordFromGuid(Guid guid, int playerId, string password) { using (var dbContext = new TtcDbContext()) { var now = DateTime.UtcNow; var resetInfo = dbContext.PlayerPasswordResets.FirstOrDefault(x => x.Guid == guid && x.PlayerId == playerId && x.ExpiresOn > now); if (resetInfo != null) { dbContext.Database.ExecuteSqlCommand( $"UPDATE {PlayerEntity.TableName} SET paswoord=MD5({{1}}) WHERE id={{0}}", playerId, password); } else { throw new Exception($"Geen reset link gevonden {guid} voor speler {playerId}"); } } }
public void FrenoyTeamSync(int teamId) { using (var db = new TtcDbContext()) { var team = db.Teams.Single(x => x.Id == teamId); var frenoySync = new FrenoyMatchesApi(db, Constants.NormalizeCompetition(team.Competition)); frenoySync.SyncTeamMatches(team); } }
private Match GetMatch(TtcDbContext dbContext, int matchId) { var match = dbContext.Matches .WithIncludes() .SingleOrDefault(x => x.Id == matchId); if (match == null) return null; var comments = dbContext.MatchComments.Where(x => x.MatchId == matchId).ToArray(); match.Comments = comments; var matchModel = Map(match); if (MatchesPlaying) { var cachedMatch = _matches.Single(x => x.Id == matchModel.Id); int matchIndex = _matches.IndexOf(cachedMatch); _matches[matchIndex] = matchModel; } return matchModel; }
/// <summary> /// Toggle Captain/Major player by any player of the team on the day of the match /// </summary> public Match ToggleMatchPlayer(MatchPlayer matchPlayer) { Debug.Assert(matchPlayer.Status == PlayerMatchStatus.Captain || matchPlayer.Status == PlayerMatchStatus.Major); using (var dbContext = new TtcDbContext()) { var match = dbContext.Matches.Find(matchPlayer.MatchId); var existingPlayer = dbContext.MatchPlayers .Where(x => x.MatchId == matchPlayer.MatchId && x.PlayerId == matchPlayer.PlayerId) .FirstOrDefault(x => x.Status == matchPlayer.Status); match.Block = matchPlayer.Status; if (existingPlayer != null) { dbContext.MatchPlayers.Remove(existingPlayer); } else { dbContext.MatchPlayers.Add(Mapper.Map<MatchPlayer, MatchPlayerEntity>(matchPlayer)); } dbContext.SaveChanges(); } var newMatch = GetMatch(matchPlayer.MatchId); return newMatch; }
public User ChangePassword(PasswordCredentials userNewCredentials) { using (var dbContext = new TtcDbContext()) { var pwdCheck = dbContext.Database.SqlQuery<int>( $"SELECT COUNT(0) FROM {PlayerEntity.TableName} WHERE id={{0}} AND paswoord=MD5({{1}})", userNewCredentials.PlayerId, userNewCredentials.OldPassword).FirstOrDefault(); if (pwdCheck != 1) { return null; } else { dbContext.Database.ExecuteSqlCommand( $"UPDATE {PlayerEntity.TableName} SET paswoord=MD5({{1}}) WHERE id={{0}}", userNewCredentials.PlayerId, userNewCredentials.NewPassword); return GetUser(userNewCredentials.PlayerId); } } }
public Match UpdateReport(MatchReport report) { using (var dbContext = new TtcDbContext()) { var existingMatch = dbContext.Matches.First(x => x.Id == report.MatchId); existingMatch.ReportPlayerId = report.PlayerId; existingMatch.Description = report.Text; dbContext.SaveChanges(); } var newMatch = GetMatch(report.MatchId); return newMatch; }
/// <summary> /// Set all players for the match to Captain/Major /// </summary> /// <param name="blockAlso">Also block the match to the newStatus level</param> public Match EditMatchPlayers(int matchId, int[] playerIds, string newStatus, bool blockAlso) { Debug.Assert(newStatus == PlayerMatchStatus.Captain || newStatus == PlayerMatchStatus.Major); using (var db = new TtcDbContext()) { var match = db.Matches.Single(x => x.Id == matchId); match.Block = blockAlso ? newStatus : null; var existingPlayers = db.MatchPlayers .Where(x => x.MatchId == matchId) .Where(x => x.Status == newStatus) .ToArray(); db.MatchPlayers.RemoveRange(existingPlayers); for (int i = 0; i < playerIds.Length; i++) { var player = db.Players.Find(playerIds[i]); var newMatchPlayer = new MatchPlayerEntity { Id = i * -1, MatchId = matchId, PlayerId = player.Id, Name = player.NaamKort, Status = newStatus, Ranking = match.Competition == Competition.Vttl ? player.KlassementVttl : player.KlassementSporta, Home = match.IsHomeMatch.Value, Position = i }; db.MatchPlayers.Add(newMatchPlayer); } db.SaveChanges(); } var newMatch = GetMatch(matchId); return newMatch; }
public Match AddComment(MatchComment comment) { using (var dbContext = new TtcDbContext()) { var entity = Mapper.Map<MatchCommentEntity>(comment); entity.PostedOn = TtcDbContext.GetCurrentBelgianDateTime(); dbContext.MatchComments.Add(entity); dbContext.SaveChanges(); } var newMatch = GetMatch(comment.MatchId); return newMatch; }
public Match DeleteComment(int commentId) { using (var dbContext = new TtcDbContext()) { var comment = dbContext.MatchComments.Single(x => x.Id == commentId); dbContext.MatchComments.Remove(comment); dbContext.SaveChanges(); return GetMatch(dbContext, comment.MatchId); } }
public OtherMatch FrenoyOtherMatchSync(int matchId) { using (var dbContext = new TtcDbContext()) { FrenoyMatchSyncCore(dbContext, matchId); var match = dbContext.Matches .WithIncludes() .Single(x => x.Id == matchId); return Mapper.Map<MatchEntity, OtherMatch>(match); } }
public byte[] GetExcelExport() { using (var dbContext = new TtcDbContext()) { var teams = dbContext.Teams .Include(x => x.Players) //.Include(x => x.Opponents) .Where(x => x.Year == Constants.CurrentSeason) .ToArray(); var matches = dbContext.Matches .Include(x => x.HomeTeam) .Include(x => x.AwayTeam) .Include(x => x.Players) .Where(x => x.HomeClubId == Constants.OwnClubId || x.AwayClubId == Constants.OwnClubId) .Where(x => x.FrenoySeason == Constants.FrenoySeason) .ToList(); var players = dbContext.Players.Where(x => x.Gestopt == null).ToArray(); var clubs = dbContext.Clubs.ToArray(); var exceller = TeamsExcelCreator.CreateFormation(teams, matches, players, clubs); return exceller.Create(); } }
public Match SetMyFormation(MatchPlayer matchPlayer) { using (var dbContext = new TtcDbContext()) { var existingPlayer = dbContext.MatchPlayers .Include(x => x.Match) .Where(x => x.MatchId == matchPlayer.MatchId && x.PlayerId == matchPlayer.PlayerId) .FirstOrDefault(x => x.Status != PlayerMatchStatus.Captain && x.Status != PlayerMatchStatus.Major); if (existingPlayer != null) { existingPlayer.Status = matchPlayer.Status; existingPlayer.StatusNote = matchPlayer.StatusNote; } else { var verslagSpeler = Mapper.Map<MatchPlayer, MatchPlayerEntity>(matchPlayer); dbContext.MatchPlayers.Add(verslagSpeler); } dbContext.SaveChanges(); } var newMatch = GetMatch(matchPlayer.MatchId); return newMatch; }
public string SetNewPassword(PasswordCredentials request) { using (var dbContext = new TtcDbContext()) { var player = dbContext.Players.SingleOrDefault(x => x.Id == request.PlayerId); if (player != null) { dbContext.Database.ExecuteSqlCommand( $"UPDATE {PlayerEntity.TableName} SET paswoord=MD5({{1}}) WHERE id={{0}}", request.PlayerId, request.NewPassword); return player.Email; } return null; } }
public Match UpdateScore(int matchId, MatchScore score) { using (var dbContext = new TtcDbContext()) { var match = dbContext.Matches .WithIncludes() .Single(x => x.Id == matchId); match.AwayScore = score.Out; match.HomeScore = score.Home; dbContext.SaveChanges(); return GetMatch(dbContext, match.Id); } }
public Match FrenoyMatchSync(int matchId) { using (var dbContext = new TtcDbContext()) { FrenoyMatchSyncCore(dbContext, matchId); return GetMatch(dbContext, matchId); } }
private static void FrenoyMatchSyncCore(TtcDbContext dbContext, int matchId) { var match = dbContext.Matches .WithIncludes() .Single(x => x.Id == matchId); if (match.Date < DateTime.Now && !match.IsSyncedWithFrenoy) { var frenoySync = new FrenoyMatchesApi(dbContext, match.Competition); frenoySync.SyncMatchDetails(match); } }