/// <summary>
        /// Add coach
        /// </summary>
        /// <param name="coachContract"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentException"></exception>
        public async Task <bool> AddCoach(CoachContract coachContract, CancellationToken cancellationToken)
        {
            var checkCoach = await _dbContext.Coaches.FirstOrDefaultAsync(x => x.Id == coachContract.Id, cancellationToken);

            if (checkCoach != null)
            {
                _logger.LogInformation($"Coach with id {coachContract.Id} is not found");
                return(false);
            }

            var coach = CoachMapping.CoachMapFromContractToModel(coachContract);

            var age = (int)(DateTime.Now.Subtract(coach.BirthDate).TotalDays / 365.2425);

            if (age < 18 || age > 90)
            {
                _logger.LogInformation($"Coach with id {coachContract.Id} is not suitable for age : {age}");
                return(false);
            }

            try
            {
                await _dbContext.Coaches.AddAsync(coach, cancellationToken);

                await _dbContext.SaveChangesAsync(cancellationToken);
            }
            catch
            {
                _logger.LogInformation($"Coach with id {coachContract.Id} is not added");
                return(false);
            }

            return(true);
        }
        /// <summary>
        /// Take Coach
        /// </summary>s
        /// <param name="coachId"></param>
        /// <param name="cancellationToken"></param>
        public async Task <CoachContract> TakeCoach(int coachId, CancellationToken cancellationToken)
        {
            var coach = await _dbContext.Coaches.FirstOrDefaultAsync(x => x.Id == coachId, cancellationToken);

            return(CoachMapping.CoachMapFromModelToContract(coach));
        }