public async Task <IActionResult> UpdateProfilePhoto([FromForm] PhotoCreateRequest request) { if (request.UserId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized()); } var userProfile = await _userRepo.GetUser(request.UserId); if (userProfile == null) { return(Unauthorized()); } if (userProfile.PhotoUrl != null) { var deletionParams = new DeletionParams(userProfile.PhotoUrl) { PublicId = userProfile.PhotoUrl.ToString() }; if (deletionParams.PublicId != "" && deletionParams.PublicId != null) { var deletionResult = _cloudinary.DestroyAsync(deletionParams); } } var uploadResult = new ImageUploadResult(); if (request.File.Length > 0) { using (var stream = request.File.OpenReadStream()) { var uploadParams = new ImageUploadParams() { File = new FileDescription(request.File.Name, stream), Folder = "Writers/" + request.UserId }; uploadResult = await _cloudinary.UploadAsync(uploadParams); } } if (uploadResult != null) { request.UserId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); request.PhotoUrl = uploadResult.Url.ToString(); request.PublicId = uploadResult.PublicId; userProfile.PhotoUrl = uploadResult.PublicId; await _userRepo.UpdateUser(userProfile); request.PublicId = _cloudinary.Api.UrlImgUp.Secure().Transform(new Transformation().Height(500).Crop("scale")).BuildUrl(uploadResult.PublicId + ".webp"); return(Ok(Newtonsoft.Json.JsonConvert.SerializeObject(request.PublicId))); } return(BadRequest()); }
public async Task <IActionResult> PostPhoto([FromForm] PhotoCreateRequest request) { if (request.UserId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value) || User.FindFirst(ClaimTypes.Role).Value != "1") { return(Unauthorized()); } User user = await _userRepo.GetUser(request.UserId); if (user == null) { return(Unauthorized()); } var uploadResult = new ImageUploadResult(); if (request.File.Length > 0) { using (var stream = request.File.OpenReadStream()) { var uploadParams = new ImageUploadParams() { File = new FileDescription(request.File.Name, stream), Folder = "Writers/" + request.UserId }; uploadResult = await _cloudinary.UploadAsync(uploadParams); } } try { if (uploadResult != null) { var photo = new Photo() { PhotoUrl = uploadResult.Url.ToString(), PublicId = uploadResult.PublicId, User = user }; await _repo.AddPhoto(photo); return(Ok(Newtonsoft.Json.JsonConvert.SerializeObject(photo.PublicId))); } } catch (System.Exception ex) { Extensions.ReportError(ex); throw; } return(BadRequest()); }