示例#1
0
        public async Task <Result <ImageUploadResponse> > Handle(UpdateUserPictureCommand command, CancellationToken cancellationToken)
        {
            var user = await _unitOfWork.Users.FindAsync(command.UserId, cancellationToken);

            if (user !.Id != _currentUserId)
            {
                return(Result <ImageUploadResponse> .Forbidden());
            }

            var blobName = string.Empty;

            if (string.IsNullOrEmpty(command.Data))
            {
                await RemoveOriginalPicture(user.Picture, cancellationToken);

                user.Picture = null;
            }
            else
            {
                blobName = $"{await _randomIdGenerator.GenerateAsync(size: 15)}.jpg";
                await _imageService.UploadImage(command.Data, AssetContainerConstants.USER_PICTURES, blobName, cancellationToken);
                await RemoveOriginalPicture(user.Picture, cancellationToken);

                user.Picture = blobName;
            }

            await _unitOfWork.SaveChangesAsync(cancellationToken);

            return(Result <ImageUploadResponse> .Success(new ImageUploadResponse
            {
                Url = MediaLinkConstants.USER_PICTURE + blobName
            }));
        }
        public async Task <Result <ImageUploadResponse> > Handle(UpdateAudioPictureCommand command,
                                                                 CancellationToken cancellationToken)
        {
            _currentUserService.User.TryGetUserId(out var currentUserId);

            var audio = await _unitOfWork.Audios.FindAsync(command.AudioId, cancellationToken);

            if (audio == null)
            {
                return(Result <ImageUploadResponse> .NotFound <Audio>());
            }

            if (audio.UserId != currentUserId)
            {
                return(Result <ImageUploadResponse> .Forbidden());
            }

            var blobName = string.Empty;

            if (string.IsNullOrEmpty(command.Data))
            {
                await RemoveOriginalPicture(audio.Picture, cancellationToken);

                audio.Picture = null;
            }
            else
            {
                blobName = $"{await _randomIdGenerator.GenerateAsync(size: 15)}.jpg";
                await _imageService.UploadImage(command.Data, AssetContainerConstants.AUDIO_PICTURES, blobName, cancellationToken);
                await RemoveOriginalPicture(audio.Picture, cancellationToken);

                audio.Picture = blobName;
            }

            await _unitOfWork.SaveChangesAsync(cancellationToken);

            await _cache.RemoveAsync(CacheKeys.Audio.GetAudio(command.AudioId), cancellationToken);

            return(Result <ImageUploadResponse> .Success(new ImageUploadResponse
            {
                Url = MediaLinkConstants.AUDIO_PICTURE + blobName
            }));
        }