public async Task Upload_Appeal_File_Adds_Uploaded_File_To_Application()
        {
            var request = new UploadAppealFileRequest
            {
                ApplicationId = AutoFixture.Create <Guid>(),
                File          = GenerateFile(),
                UserId        = AutoFixture.Create <string>(),
                UserName      = AutoFixture.Create <string>()
            };

            _mediator.Setup(x => x.Send(It.IsAny <UploadAppealFileCommand>(), It.IsAny <CancellationToken>())).ReturnsAsync(Unit.Value);

            var result = await _controller.UploadAppealFile(request);

            result.Should().BeOfType <OkResult>();

            string expectedFileData;

            using (var reader = new StreamReader(request.File.OpenReadStream()))
            {
                expectedFileData = await reader.ReadToEndAsync();
            }

            _mediator.Verify(x => x.Send(It.Is <UploadAppealFileCommand>(c =>
                                                                         c.ApplicationId == request.ApplicationId &&
                                                                         c.UserId == request.UserId &&
                                                                         c.UserName == request.UserName &&
                                                                         c.File.Filename == request.File.FileName &&
                                                                         Encoding.UTF8.GetString(c.File.Data) == expectedFileData),
                                         It.IsAny <CancellationToken>()), Times.Once);
        }
        public async Task <IActionResult> UploadAppealFile([FromForm] UploadAppealFileRequest request)
        {
            if (request.AppealFile is null)
            {
                return(BadRequest());
            }

            var fileCollection = new FormFileCollection {
                request.AppealFile
            };
            var uploadedSuccessfully = await _fileStorageService.UploadApplicationFiles(request.ApplicationId, fileCollection, ContainerType.Appeals, new CancellationToken());

            if (!uploadedSuccessfully)
            {
                _logger.LogError($"Unable to upload appeal file for application: {request.ApplicationId}");
                return(BadRequest());
            }

            var command = new UploadAppealFileCommand
            {
                ApplicationId = request.ApplicationId,
                AppealFile    = await request.AppealFile.ToFileUpload(),
                UserId        = request.UserId,
                UserName      = request.UserName
            };

            await _mediator.Send(command);

            return(new OkResult());
        }
        public async Task UploadAppealFile(Guid applicationId, IFormFile file, string userId, string userName)
        {
            var request = new UploadAppealFileRequest
            {
                ApplicationId = applicationId,
                UserId        = userId,
                UserName      = userName,
                File          = file
            };

            await _applyApiClient.UploadAppealFile(applicationId, request);
        }
        public async Task <IActionResult> UploadAppealFile([FromForm] UploadAppealFileRequest request)
        {
            var command = new UploadAppealFileCommand
            {
                ApplicationId = request.ApplicationId,
                File          = await request.File.ToFileUpload(),
                UserId        = request.UserId,
                UserName      = request.UserName
            };

            await _mediator.Send(command);

            return(new OkResult());
        }
 public async Task UploadAppealFile(Guid applicationId, UploadAppealFileRequest request)
 {
     await PostMultipartAsync($"/Oversight/{applicationId}/uploads", request);
 }