public async Task <Response <CourseItemViewModel> > Handle(AddCourseItemByTeacherCommand request,
                                                                   CancellationToken cancellationToken)
        {
            var course = _courseRepository.GetQueryable().Include(x => x.Teacher).First(x => x.Id == request.CourseId);

            course.HasPendingItemToApprove = true;
            var item = new CourseItem
            {
                Order    = request.Order,
                CourseId = request.CourseId,
                TeacherMessageForAdmin = request.TeacherMessageForAdmin,
                State     = CourseItemApprovalState.PendingToApproveByAdmin,
                Title     = request.Title,
                IsPreview = request.IsPreview,
            };

            if (request.File != null)
            {
                await _coursesFileManager.SaveFile(request.File, course.Teacher.UserName, item.CourseId);

                item.FilePath =
                    _coursesFileManager.GetFilePathForDownload(request.File, course.Teacher.UserName, item.CourseId);
                item.ContentType = GetContentType(request.File.ContentType);
            }

            await _courseItemRepository.AddAsync(item);

            await _courseRepository.EditAsync(course);

            return(Response <CourseItemViewModel> .Success(_mapper.Map <CourseItemViewModel>(item)));
        }
        public async Task <CourseItemViewModel> Handle(AddCourseItemCommand request, CancellationToken cancellationToken)
        {
            var course = _courseRepo.GetQueryable().Include(x => x.Teacher).First(x => x.Id == request.CourseId);
            var item   = new CourseItem
            {
                CourseId = request.CourseId,
                State    = request.State,
                AdminMessageForTeacher = request.AdminMessageForTeacher,
                Order       = request.Order != 0?request.Order:_courseItemRepo.GetQueryable().Count(x => x.CourseId == request.CourseId) + 1,
                Title       = request.Title,
                ContentType = request.File != null?GetContentType(request.File.ContentType) : ContentType.File,
                                  FilePath  = _coursesFileManager.GetFilePathForDownload(request.File, course.Teacher.UserName, request.CourseId),
                                  IsPreview = request.IsPreview
            };
            await _coursesFileManager.SaveFile(request.File, course.Teacher.UserName, request.CourseId);

            await _courseItemRepo.AddAsync(item);

            return(_mapper.Map <CourseItemViewModel>(item));
        }