public async Task <Dto.Game?> UpdateAsync(int id, Dto.GameInput input)
        {
            Game entity = _mapper.Map <Dto.GameInput, Game>(input);
            Game?result = await _gameRepository.UpdateAsync(id, entity);

            return(result is null
            ? null
            :_mapper.Map <Game, Dto.Game>(result));
        }
        public async Task <Dto.Game?> CreateAsync(Dto.GameInput input)
        {
            Game entity = _mapper.Map <Dto.GameInput, Game>(input);
            int  userId = _sessionService.GetCurrentUserId();
            User user   = await _userService.GetUserById(userId) ?? throw new IllegalStateException(nameof(User));

            entity.GameMaster = user.Id;
            entity.GameUsers.Add(new GameUser(user.Id, user, entity.Id, entity));
            await _gameRepository.InsertAsync(entity);

            Calendar calendar = _mapper.Map <Calendar>(input.Calendar);

            calendar.Game   = entity;
            calendar.GameId = entity.Id;
            await _calendarRepository.InsertAsync(calendar);

            entity.Calendar   = calendar;
            entity.CalendarId = calendar.Id;
            await _gameRepository.UpdateAsync(entity.Id, entity);

            _sessionService.SetCurrentGameId(entity.Id);
            return(_mapper.Map <Game, Dto.Game>(entity));
        }