Example #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
            }));
        }
Example #2
0
        public async Task <IActionResult> UpdateUserPicture([FromBody] UpdateUserPictureCommand command)
        {
            command.UserId = UserId;

            var result = await Mediator.Send(command);

            return(Ok(result));
        }
Example #3
0
        public async Task <IActionResult> AddPicture([FromBody] ImageUploadRequest request,
                                                     CancellationToken cancellationToken)
        {
            var command = new UpdateUserPictureCommand(_currentUserId, request.Data);
            var result  = await _mediator.Send(command, cancellationToken);

            return(result.IsSuccess
                ? Ok(result.Data)
                : result.ReturnErrorResponse());
        }