using GreadyPoang.DataLayer.Database; using GreadyPoang.EntityLayer; namespace GreadyPoang.DataLayer; public class CombinedRepository : ICombinedRepository { private readonly DataContext _context; public CombinedRepository(DataContext context) { _context = context; } public IEnumerable roundBuilderElements() { var latestGamePoints = _context.GamePoints .AsEnumerable() .GroupBy(gp => new { gp.GameRoundId, gp.ParticipantId }) .Select(g => g.OrderByDescending(gp => gp.GamePointId).First()) .ToList(); var gamerounds = _context.GameRounds.AsEnumerable(); var participants = _context.Participants.AsEnumerable(); var result = (from gameRound in gamerounds join gamePoint in latestGamePoints on gameRound.GameRoundId equals gamePoint.GameRoundId join participant in participants on gamePoint.ParticipantId equals participant.ParticipantId orderby gameRound.GameRoundStartDate descending, participant.LastName, participant.FirstName, gamePoint.GameRoundRegNr select new RoundBuilderElement { ParticipantId = participant.ParticipantId, ParticipantName = participant.LastNameFirstName, GamePointId = gamePoint.GamePointId, GameRoundRegNr = gamePoint.GameRoundRegNr, GameRegPoints = gamePoint.GameRegPoints, GameRoundId = gameRound.GameRoundId, GameRoundStartDate = gameRound.GameRoundStartDate, Status = gameRound.GameStatus }).ToList(); return result; } public IEnumerable roundBuilderElementsTotal() { var result = (from gameRound in _context.GameRounds join gamePoint in _context.GamePoints on gameRound.GameRoundId equals gamePoint.GameRoundId join participant in _context.Participants on gamePoint.ParticipantId equals participant.ParticipantId orderby gameRound.GameRoundStartDate descending, participant.LastName, participant.FirstName, gamePoint.GameRoundRegNr select new RoundBuilderElement { ParticipantId = participant.ParticipantId, ParticipantName = participant.LastNameFirstName, GamePointId = gamePoint.GamePointId, GameRoundRegNr = gamePoint.GameRoundRegNr, GameRegPoints = gamePoint.GameRegPoints, GameRoundId = gameRound.GameRoundId, GameRoundStartDate = gameRound.GameRoundStartDate, Status = gameRound.GameStatus }).ToList(); return result; } }