public async Task <Guid> Handle(CreatePhotoCommand request, CancellationToken cancellationToken)
        {
            var user = await _userRepository.GetAsync(request.UserId);

            if (user == null)
            {
                throw new ResourceNotFoundException("User", request.UserId);
            }

            using var fileStream = request.File.OpenReadStream();
            var cloudinaryUploadOptions = new CloudinaryUploadOptions
            {
                FileName   = request.File.FileName,
                FileStream = fileStream
            };
            var uploadResult = await _cloudinary.Upload(cloudinaryUploadOptions, cancellationToken);

            var newPhoto = new Photo(
                uploadResult.Url,
                uploadResult.PublicId,
                request.Description
                );

            user.AddPhoto(newPhoto);

            await _userRepository.UpdateAsync(user);

            return(newPhoto.Id);
        }
        public async Task <CloudinaryUploadResult> Upload(CloudinaryUploadOptions options, CancellationToken cancellationToken = default)
        {
            var uploadParams = new ImageUploadParams
            {
                File           = new FileDescription(options.FileName, options.FileStream),
                Transformation = new Transformation().Width(500).Height(500).Crop("fill").Gravity("face")
            };
            var result = await _cloudinary.UploadAsync(uploadParams);

            return(new CloudinaryUploadResult
            {
                Url = result.Uri.ToString(),
                PublicId = result.PublicId
            });
        }