Exemple #1
0
        protected async Task ViewAuditLogs(FileEntryModel file)
        {
            var logs = await FileService.GetAuditLogs(file.Id);

            JSRuntime.Table(logs);
            AuditLogsDialog.Show(logs);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        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));
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        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));
        }
Exemple #10
0
        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 };
        }
Exemple #11
0
        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));
        }
Exemple #12
0
        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);
        }
Exemple #14
0
 protected void DeleteFile(FileEntryModel file)
 {
     DeletingFile = file;
     DeleteDialog.Show();
 }
Exemple #15
0
        private async Task <FileEntryModel> UpdateFileAsync(Guid id, FileEntryModel file)
        {
            var updatedProduct = await PutAsync <FileEntryModel>($"api/files/{id}", file);

            return(updatedProduct);
        }
Exemple #16
0
        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));
        }