public JumpDTO GetBestResultForAthlete(int idAthlete) { ICompetitionRepository competitionRepository = new CompetitionRepository(context: _context); IEliminationRepository eliminationRepository = new EliminationRepository(_context); IContestRepository contestRepository = new ContestRepository(_context); JumpDTO jump = new JumpDTO(); var jumps = GetAllForAthlete(idAthlete).OrderByDescending(x => x.Height); var onlyGoodJumps = jumps.Where(x => x.IdJumpStatus1 == 1 || x.IdJumpStatus2 == 1 || x.IdJumpStatus3 == 1).FirstOrDefault(); if (onlyGoodJumps == null) { return(null); } jump.Height = onlyGoodJumps.Height; if (onlyGoodJumps.IdContest != null) { jump.IsContest = true; jump.IsElimination = false; var contest = contestRepository.FindById(onlyGoodJumps.IdContest.Value); var competition = competitionRepository.GetAllForAthlete(idAthlete).Where(x => x.IdCompetition == contest.IdCompetition).FirstOrDefault(); jump.DateOfRecord = contest.ContestDate; jump.CompetitionName = competition.Name; } else if (onlyGoodJumps.IdElimination != null) { jump.IsContest = false; jump.IsElimination = true; var elimination = eliminationRepository.FindById(onlyGoodJumps.IdElimination.Value); var competition = competitionRepository.GetAllForAthlete(idAthlete).Where(x => x.IdCompetition == elimination.IdCompetition).FirstOrDefault(); jump.DateOfRecord = elimination.EliminationDate; jump.CompetitionName = competition.Name; } return(jump); }