public async Task <Result> Update(UpdateResultDto resultDto)
        {
            var result = await _context.Results.FirstOrDefaultAsync(r => r.Player.Name == resultDto.Name && r.Category.Type == resultDto.Category);

            if (result == null)
            {
                // Add function that creates instead of having it nested in an Update function - repository pattern
                var newResult = new Result
                {
                    Id       = Guid.NewGuid(),
                    Category = await _context.Categories.FirstOrDefaultAsync(c => c.Type == resultDto.Category),
                    Player   = await _context.Players.FirstOrDefaultAsync(p => p.Name == resultDto.Name),
                    Score    = resultDto.Score,
                    Updated  = DateTime.Now
                };

                result = newResult;
                await _context.Results.AddAsync(result);
            }
            else
            {
                if (resultDto.Score > result.Score)
                {
                    result.Score   = resultDto.Score;
                    result.Updated = DateTime.Now;
                }

                _context.Results.Update(result);
            }

            await _context.SaveChangesAsync();

            return(result);
        }
        public async Task <Player> Update(UpdatePlayerDto playerDto)
        {
            var player = await _context.Players.FirstOrDefaultAsync(p => p.Name == playerDto.Name);

            if (player == null)
            {
                // Add function that creates instead of having it nested in an Update function - repository pattern
                var newPlayer = new Player
                {
                    Id          = Guid.NewGuid(),
                    Name        = playerDto.Name,
                    TimesPlayed = 1
                };
                await _context.Players.AddAsync(newPlayer);
            }
            else
            {
                player.TimesPlayed += 1;
                _context.Players.Update(player);
            }

            await _context.SaveChangesAsync();

            return(player);
        }