public async Task <ActionResult <ImageUploadResponse> > AddPicture(long audioId, [FromBody] ImageUploadRequest request, CancellationToken cancellationToken) { var command = new UpdateAudioPictureCommand(audioId, request.Data); var result = await _mediator.Send(command, cancellationToken); return(result.IsSuccess ? Ok(result.Data) : result.ReturnErrorResponse()); }
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 })); }