public async Task <ActionResult <HeroDto> > AddHero(AddHeroDto addHeroDto)
        {
            var hero = await unitOfWork.HeroRepository.AddHero(addHeroDto, User.GetUserId());

            return(await unitOfWork.ApplyChanges() ? Ok(hero)
            : throw new HttpRequestException(" an unknown error has accorded while adding a new hero "));
        }
        /// <summary>
        /// Add a new hero to the SQL
        /// </summary>
        public async Task <HeroDto> AddHero(AddHeroDto addHeroDto, string trainerId)
        {
            if (addHeroDto is null)
            {
                throw new ArgumentNullException(nameof(addHeroDto));
            }

            if (string.IsNullOrEmpty(trainerId))
            {
                throw new ArgumentException($"'{nameof(trainerId)}' cannot be null or empty.", nameof(trainerId));
            }

            var hero = mapper.Map <Hero>(addHeroDto);

            hero.TrainerId = trainerId;
            await context.UserHeros.AddAsync(hero);

            return(mapper.Map <HeroDto>(hero));
        }