Пример #1
0
        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());
        }
Пример #2
0
        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());
        }