protected async Task ViewAuditLogs(FileEntryModel file) { var logs = await FileService.GetAuditLogs(file.Id); JSRuntime.Table(logs); AuditLogsDialog.Show(logs); }
protected async Task Download(FileEntryModel file) { var token = await FileService.GetAccessToken(); JSRuntime.Log(token); JSRuntime.Log(file); await JSRuntime.InvokeVoidAsync("interop.downloadFile", FileService.GetDownloadUrl(file.Id), token, file.FileName); }
public async Task AllInOne() { await GetTokenAsync(); // POST var file = new FileEntryModel { Name = "Test", Description = "Description", FileName = "IntegrationTest.txt", Encrypted = true, }; FileEntryModel createdFile = await UploadFileAsync(file); Assert.True(file.Id != createdFile.Id); Assert.Equal(file.Name, createdFile.Name); Assert.Equal(file.Description, createdFile.Description); var auditLogs = await GetAuditLogsAsync(createdFile.Id); Assert.Equal(2, auditLogs.Count); Assert.Contains(auditLogs, x => x.Action == "CREATED"); Assert.Contains(auditLogs, x => x.Action == "UPDATED"); // GET var files = await GetFilesAsync(); Assert.True(files.Count > 0); // GET ONE var refreshedFile = await GetFileByIdAsync(createdFile.Id); Assert.Equal(refreshedFile.Id, createdFile.Id); Assert.Equal(refreshedFile.Name, createdFile.Name); Assert.Equal(refreshedFile.Description, createdFile.Description); // PUT refreshedFile.Name = "Test 2"; var updatedProduct = await UpdateFileAsync(refreshedFile.Id, refreshedFile); Assert.Equal(refreshedFile.Id, updatedProduct.Id); Assert.Equal("Test 2", updatedProduct.Name); Assert.Equal(refreshedFile.Description, updatedProduct.Description); auditLogs = await GetAuditLogsAsync(createdFile.Id); Assert.Equal(3, auditLogs.Count); Assert.Single(auditLogs, x => x.Action == "CREATED"); Assert.Equal(2, auditLogs.Count(x => x.Action == "UPDATED")); // DELETE await DeleteFile(createdFile.Id); Assert.Null(await GetFileByIdAsync(createdFile.Id)); }
private async Task DownloadFileAsync(FileEntryModel file) { var path = Path.Combine(AppSettings.DownloadsFolder, "Practical.CleanArchitecture", file.Id.ToString()); Directory.CreateDirectory(path); using var response = await _httpClient.GetAsync($"api/files/{file.Id}/download"); using var fileStream = new FileStream(Path.Combine(path, file.FileName), FileMode.CreateNew); await response.Content.CopyToAsync(fileStream); }
public async Task <ActionResult> Put(Guid id, [FromBody] FileEntryModel model) { var fileEntry = await _dispatcher.DispatchAsync(new GetEntityByIdQuery <FileEntry> { Id = id, ThrowNotFoundIfNull = true }); fileEntry.Name = model.Name; fileEntry.Description = model.Description; await _dispatcher.DispatchAsync(new AddOrUpdateEntityCommand <FileEntry>(fileEntry)); return(Ok(model)); }
private async Task <FileEntryModel> UploadFileAsync(FileEntryModel file) { using var form = new MultipartFormDataContent(); using var fileContent = new ByteArrayContent(Encoding.UTF8.GetBytes("Test")); fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data"); form.Add(fileContent, "formFile", file.FileName); form.Add(new StringContent(file.Name), "name"); form.Add(new StringContent(file.Description), "description"); form.Add(new StringContent(file.Encrypted.ToString()), "encrypted"); var response = await _httpClient.PostAsync($"api/files", form); response.EnsureSuccessStatusCode(); var createdFile = await response.Content.ReadAs <FileEntryModel>(); return(createdFile); }
public async Task <FileEntryModel> UploadFile(FileEntryModel fileEntryModel, byte[] bytes) { using var form = new MultipartFormDataContent(); using var fileContent = new ByteArrayContent(bytes); fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data"); form.Add(fileContent, "formFile", fileEntryModel.FileName); form.Add(new StringContent(fileEntryModel.Name), "name"); form.Add(new StringContent(fileEntryModel.Description), "description"); await SetBearerToken(); var response = await _httpClient.PostAsync($"api/files", form); response.EnsureSuccessStatusCode(); var result = await response.Content.ReadAs <FileEntryModel>(); return(result); }
private string GetProjectIdentifier(PlantOrderModel plantOrder, FileEntryModel fileEntry) { if (fileEntry != null) { if (fileEntry.FileInfo != null) { return($"{fileEntry.FileInfo.ProjectIdentifier} {fileEntry.FileInfo.Section}"); } return(fileEntry.Name); } else if (plantOrder != null) { return($"{plantOrder.Number} {plantOrder.Section}"); } else { return(null); } }
private FileSystemModel BuildDirectoryModel(DirectoryInfo directory) { var infos = directory.GetFileSystemInfos(); var items = new FileSystemEntryModel[infos.Length]; for (int i = 0; i < infos.Length; i++) { var info = infos[i]; if (info is DirectoryInfo) { items[i] = new DirectoryEntryModel(info.Name); } else if (info is FileInfo fileInfo) { items[i] = new FileEntryModel(info.Name, fileInfo.Length); } } return(new FileSystemModel(items, isArchive: false)); }
private StackPanel CreateTreeViewNode(FileEntryModel fileEntry) { var panel = new StackPanel() { Orientation = Orientation.Horizontal }; var icon = new SymbolIcon() { Symbol = Symbol.OpenFile }; var text = new TextBlock() { Text = fileEntry.Name }; panel.Children.Add(icon); panel.Children.Add(text); panel.DataContext = fileEntry; return(panel); //return new TreeViewNode() { Content = fileEntry.Name }; }
public async Task <FileEntryModel> Upload(IFormFile file) { if (Directory.Exists(_fileSystemOptions.Content)) { Directory.CreateDirectory(_fileSystemOptions.Content); } var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"'); var extension = Path.GetExtension(fileName); var fileEntry = new FileEntryModel { ContentType = file.ContentType, FileName = file.FileName, Name = $"{Guid.NewGuid().ToString()}{extension}", Extension = extension, Length = file.Length }; var fullPath = Path.Combine(_fileSystemOptions.Content, fileEntry.Name); await file.SaveAsAsync(fullPath); return(_fileEntryService.Create(fileEntry)); }
public async Task <FileEntryModel> UpdateFile(Guid id, FileEntryModel file) { var updatedFile = await PutAsync <FileEntryModel>($"api/files/{id}", file); return(updatedFile); }
public async Task <FileEntryModel> CreateFile(FileEntryModel product) { var createdFile = await PostAsync <FileEntryModel>("api/files", product); return(createdFile); }
protected void DeleteFile(FileEntryModel file) { DeletingFile = file; DeleteDialog.Show(); }
private async Task <FileEntryModel> UpdateFileAsync(Guid id, FileEntryModel file) { var updatedProduct = await PutAsync <FileEntryModel>($"api/files/{id}", file); return(updatedProduct); }
public async Task AllInOne() { await GetTokenAsync(); // POST var file = new FileEntryModel { Name = "Test", Description = "Description", FileName = "IntegrationTest.txt", Encrypted = true, }; FileEntryModel createdFile = await UploadFileAsync(file); Assert.True(file.Id != createdFile.Id); Assert.Equal(file.Name, createdFile.Name); Assert.Equal(file.Description, createdFile.Description); var auditLogs = await GetAuditLogsAsync(createdFile.Id); Assert.Equal(3, auditLogs.Count); Assert.Contains(auditLogs, x => x.Action == "CREATED"); Assert.Contains(auditLogs, x => x.Action == "UPDATED"); // GET var files = await GetFilesAsync(); Assert.True(files.Count > 0); // GET ONE var refreshedFile = await GetFileByIdAsync(createdFile.Id); Assert.Equal(refreshedFile.Id, createdFile.Id); Assert.Equal(refreshedFile.Name, createdFile.Name); Assert.Equal(refreshedFile.Description, createdFile.Description); // PUT refreshedFile.Name = "Test 2"; var updatedProduct = await UpdateFileAsync(refreshedFile.Id, refreshedFile); Assert.Equal(refreshedFile.Id, updatedProduct.Id); Assert.Equal("Test 2", updatedProduct.Name); Assert.Equal(refreshedFile.Description, updatedProduct.Description); auditLogs = await GetAuditLogsAsync(createdFile.Id); Assert.Equal(4, auditLogs.Count); Assert.Single(auditLogs, x => x.Action == "CREATED"); Assert.Equal(3, auditLogs.Count(x => x.Action == "UPDATED")); // DOWNLOAD await DownloadFileAsync(createdFile); var path = Path.Combine(AppSettings.DownloadsFolder, "Practical.CleanArchitecture", createdFile.Id.ToString(), createdFile.FileName); Assert.True(File.Exists(path)); // DELETE await DeleteFile(createdFile.Id); Assert.Null(await GetFileByIdAsync(createdFile.Id)); }