public async Task <IActionResult> AddCoursePhoto(int teacherId, int courseId) { string auth = Request.Headers["Authorization"]; // get bearer string if (AuthHelper.BasicAuth(auth, teacherId, "Teacher") == false) { return(Unauthorized()); } var files = Request.Form.Files; if (files == null) { return(BadRequest("Request must contain at least a file")); } // init ava and cover file object dynamic ava = null; int avaCount = 0; FormFileChecker fileTypeChecker = new FormFileChecker(); foreach (var file in files) { if (fileTypeChecker.CheckFileType(file, "image")) { if (avaCount < 1) { ava = file; } else { return(BadRequest("Too much Ava to upload")); } } } // create FileUploadHelper reference FileUploadHelper fileUpload = new FileUploadHelper(_config); // Modify image link if posted data != null var courseToUpdate = await _repo.GetCourse(courseId, teacherId); try { courseToUpdate.AvaUrl = await fileUpload.UploadImage(ava); } catch (ImgurException imgurEx) { return(BadRequest("Unable to upload image to Imgur: " + imgurEx.Message)); } await _repo.SaveAll(); var courseToReturn = _mapper.Map <CourseForDetailedDto>(courseToUpdate); return(Ok(courseToReturn)); }
public async Task <IActionResult> AddVideo(int courseId, int teacherId) { string auth = Request.Headers["Authorization"]; // get bearer string if (AuthHelper.BasicAuth(auth, teacherId, "Teacher") == false) { return(Unauthorized()); } var files = Request.Form.Files; if (files == null) { return(BadRequest("Request must contain video file")); } FormFileChecker fileChecker = new FormFileChecker(); foreach (var file in files) { if (!fileChecker.CheckFileType(file, "video")) { return(BadRequest("Course Video must be type of video")); } } // return Ok(files); var videoToReturn = new List <VideoForDetailedDto>(); FileUploadHelper fileUploadHelper = new FileUploadHelper(_cloudinary); foreach (var file in files) { var uploadResult = fileUploadHelper.UploadVideo(file); var videoToCreate = new VideoForCreateDto { CourseId = courseId, VideoUrl = uploadResult.Uri.ToString(), PublicId = uploadResult.PublicId }; var videoToAdd = _mapper.Map <Models.Video>(videoToCreate); var videoAdded = await _repo.AddVideo(videoToAdd, courseId); await _repo.SaveAll(); videoToReturn.Add(_mapper.Map <VideoForDetailedDto>(videoAdded)); } return(Ok(videoToReturn)); }