@using System.Net; @using System.Diagnostics; @using Hangfire; @using LANCommander.Server.Jobs.Background; @using Microsoft.EntityFrameworkCore; @inject DatabaseServiceFactory DatabaseServiceFactory @inject HttpClient HttpClient @inject NavigationManager Navigator @inject ModalService ModalService @inject IMessageService MessageService @inject IJSRuntime JS @inject ILogger Logger @ByteSizeLib.ByteSize.FromBytes(context.CompressedSize) @ByteSizeLib.ByteSize.FromBytes(context.UncompressedSize) @context.CreatedBy?.UserName
@code { [Parameter] public Guid GameId { get; set; } [Parameter] public Guid RedistributableId { get; set; } ICollection Archives { get; set; } = new List(); ArchiveUploader Uploader; protected override void OnInitialized() { HttpClient.BaseAddress = new Uri(Navigator.BaseUri); } protected override async Task OnParametersSetAsync() { await LoadData(); } private async Task LoadData() { using (var archiveService = DatabaseServiceFactory.Create()) { if (GameId != Guid.Empty) Archives = await archiveService.Include(a => a.CreatedBy).GetAsync(a => a.GameId == GameId); else if (RedistributableId != Guid.Empty) Archives = await archiveService.Include(a => a.CreatedBy).GetAsync(a => a.RedistributableId == RedistributableId); } } private async Task Download(Archive archive) { string url = $"/Download/Game/{archive.Id}"; await JS.InvokeAsync("open", url, "_blank"); } private async Task UploadArchive() { await Uploader.Open(); } private async Task BrowseArchive(Archive archive) { var modalOptions = new ModalOptions() { Title = "Browse Archive", Maximizable = false, DefaultMaximized = true, Closable = true, WrapClassName = "file-picker-dialog", }; var modalRef = await ModalService.CreateModalAsync(modalOptions, archive.Id); } private async Task Update(Archive archive) { try { using (var archiveService = DatabaseServiceFactory.Create()) { await archiveService.UpdateAsync(archive); } MessageService.Success("Archive updated!"); } catch (Exception ex) { MessageService.Error("Archive could not be updated."); Logger.LogError(ex, "Archive could not be updated."); } } private async Task Delete(Archive archive) { try { using (var archiveService = DatabaseServiceFactory.Create()) { await archiveService.DeleteAsync(archive); } await LoadData(); MessageService.Success("Archive deleted!"); } catch (Exception ex) { MessageService.Error("Archive could not be deleted."); Logger.LogError(ex, "Archive could not be deleted."); } } }