public IEnumerable <TrainingProfessionsDTO> GetTrainingAndCourseNotByProfessionId(int ProfessionId)
        {
            var listTrainingType = _context.TrainingTypes.ToList().Select(c => c.ID).ToList();

            var listTrainingProfession = _context.TrainingProfessions.Where(c => c.ProfessionID == ProfessionId)
                                         .ToList().Select(c => c.CourseID).ToList();

            var remainId = listTrainingType.Except(listTrainingProfession);

            var TrainingAndTypeByProfession = _context.courses.Where(c => remainId.Contains(c.TrainingTypeID))

                                              .Select(
                c => new TrainingProfessionsDTO
            {
                CourseID         = c.ID,
                CourseName       = c.CourseName,
                TrainingTypeID   = c.TrainingType.ID,
                TrainingTypeName = c.TrainingType.TrainingTypeName
            }).ToList().GroupBy(c => c.TrainingTypeID);
            List <TrainingProfessionsDTO> list = new List <TrainingProfessionsDTO>();

            foreach (var item in TrainingAndTypeByProfession)
            {
                TrainingProfessionsDTO trainingObj = new TrainingProfessionsDTO();
                trainingObj.TrainingTypeID   = item.FirstOrDefault().TrainingTypeID;
                trainingObj.CourseID         = item.FirstOrDefault().CourseID;
                trainingObj.TrainingTypeName = item.FirstOrDefault().TrainingTypeName;
                trainingObj.CourseName       = item.FirstOrDefault().CourseName;

                list.Add(trainingObj);
            }
            return(list);
        }
        public async Task <ActionResult <TrainingProfessionsDTO> > GetTrainingProfessionsDTO(int id)
        {
            var trainingProfession = await _context.TrainingProfessions.Include(c => c.Profession).Include(t => t.Courses.TrainingType).FirstOrDefaultAsync(t => t.ID == id);

            var trainingProfessionsDTO = new TrainingProfessionsDTO
            {
                ID               = trainingProfession.ID,
                CourseID         = trainingProfession.CourseID,
                CourseName       = trainingProfession.Courses.CourseName,
                ProfessionID     = trainingProfession.ProfessionID,
                ProfessionName   = trainingProfession.Profession.Name,
                TrainingTypeName = _context.TrainingProfessions.Where(e => e.Courses.TrainingTypeID == trainingProfession.Courses.TrainingTypeID).FirstOrDefault().Courses.TrainingType.TrainingTypeName,
                TrainingTypeID   = _context.TrainingProfessions.Where(e => e.Courses.TrainingTypeID == trainingProfession.Courses.TrainingTypeID).FirstOrDefault().Courses.TrainingTypeID,
            };

            if (trainingProfessionsDTO == null)
            {
                return(NotFound());
            }

            return(trainingProfessionsDTO);
        }
        public async Task <ActionResult <TrainingProfessionsDTO> > PostTrainingProfessionsDTO(TrainingProfessionsDTO trainingProfessionsDTO)
        {
            var trainingProfession = new TrainingProfessions
            {
                ID           = trainingProfessionsDTO.ID,
                CourseID     = trainingProfessionsDTO.CourseID,
                ProfessionID = trainingProfessionsDTO.ProfessionID
            };

            _context.TrainingProfessions.Add(trainingProfession);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetTrainingProfessionsDTO", new { id = trainingProfessionsDTO.ID }, trainingProfessionsDTO));
        }