protected override async Task OnParametersSetAsync() { guests = await GuestRepo.GetAll().ToListAsync(); Action <IGridColumnCollection <GuestEntity> > columns = c => { c.Add(g => g.Username).Titled(Loc["Username"]); c.Add(g => g.AccessExpiration).Titled(Loc["AccessExpiration"]).SetFilterWidgetType("DateTimeLocal").Format("{0:dd/MM/yyyy HH:mm}"); c.Add(g => g.AllowedAddresses).Titled(Loc["AllowedAddresses"]); }; var query = new QueryDictionary <StringValues>(); query.Add("grid-page", "1"); var client = new GridClient <GuestEntity>(q => GetGridRows(columns, q), query, false, "guestsGrid", columns, CultureInfo.CurrentCulture) .Sortable() .Filterable() .WithMultipleFilters() .SetKeyboard(true) .Selectable(true, false, false); grid = client.Grid; // Try to set a previous filter if (VolatileSettings.GridQueries.ContainsKey((0, "guestsGrid"))) { grid.Query = VolatileSettings.GridQueries[(0, "guestsGrid")];
private async Task Clone() { var wrapper = new JobOptionsWrapper { Options = jobOptions }; var entity = new JobEntity { Owner = await GuestRepo.Get(uid), CreationDate = DateTime.Now, JobType = jobType, JobOptions = JsonConvert.SerializeObject(wrapper, settings) }; await JobRepo.Add(entity); // Get the entity that was just added in order to get its ID // entity = await JobRepo.GetAll().Include(j => j.Owner).OrderByDescending(e => e.Id).FirstAsync(); try { var job = JobFactory.FromOptions(entity.Id, entity.Owner == null ? 0 : entity.Owner.Id, jobOptions); Manager.AddJob(job); Nav.NavigateTo($"job/{job.Id}"); } catch (Exception ex) { await js.AlertException(ex); } }
private async Task RefreshList() { guests = await GuestRepo.GetAll().ToListAsync(); await gridComponent.UpdateGrid(); StateHasChanged(); }
private async Task DeleteGuest() { if (selectedGuest == null) { await ShowNoGuestSelectedWarning(); return; } if (await js.Confirm(Loc["AreYouSure"], $"{Loc["ReallyDelete"]} {selectedGuest.Username}?", Loc["Cancel"])) { // We have to delete all the guest's jobs, proxies and wordlists first // otherwise we get a FOREIGN KEY CONSTRAINT FAILED exception. if (await js.Confirm(Loc["DeleteEverything"], Loc["DeleteEverythingMessage"], Loc["Cancel"])) { // Delete jobs var jobsToDelete = await JobRepo.GetAll().Include(j => j.Owner) .Where(j => j.Owner.Id == selectedGuest.Id).ToListAsync(); await JobRepo.Delete(jobsToDelete); // Delete jobs from the service JobManager.Jobs.RemoveAll(j => j.OwnerId == selectedGuest.Id); // Delete proxy groups and their proxies var proxyGroupsToDelete = await ProxyGroupRepo.GetAll().Include(g => g.Owner) .Where(g => g.Owner.Id == selectedGuest.Id).ToListAsync(); foreach (var group in proxyGroupsToDelete) { var toDelete = await ProxyRepo.GetAll() .Where(p => p.Group.Id == group.Id) .ToListAsync(); await ProxyRepo.Delete(toDelete); } await ProxyGroupRepo.Delete(proxyGroupsToDelete); // Delete wordlists var wordlistsToDelete = await WordlistRepo.GetAll().Include(w => w.Owner) .Where(w => w.Owner.Id == selectedGuest.Id).ToListAsync(); foreach (var w in wordlistsToDelete) { await WordlistRepo.Delete(w, false); } // Delete the guest from the db await GuestRepo.Delete(selectedGuest); // Delete the guest from the local list guests.Remove(selectedGuest); } } await RefreshList(); }
public void GetController(Controller newController) { controller = newController; guestRepo = controller.guestRepo; appointmentRepo = controller.appointmentRepo; DataContext = guestRepo; listView.ItemsSource = guestRepo.guests; CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(listView.ItemsSource); view.Filter = UserFilter; }
private async Task AddGuest() { var modal = Modal.Show <GuestAdd>(Loc["AddGuest"]); var result = await modal.Result; if (!result.Cancelled) { var entity = (GuestEntity)result.Data; await GuestRepo.Add(entity); await RefreshList(); } }
private async Task EditGuestPassword() { if (selectedGuest == null) { await ShowNoGuestSelectedWarning(); return; } var modal = Modal.Show <NewPasswordForm>($"{Loc["NewPasswordForGuest"]}: {selectedGuest.Username}"); var result = await modal.Result; if (!result.Cancelled) { selectedGuest.PasswordHash = BCrypt.Net.BCrypt.HashPassword(result.Data as string); await GuestRepo.Update(selectedGuest); await RefreshList(); } }
private async Task EditGuestInfo() { if (selectedGuest == null) { await ShowNoGuestSelectedWarning(); return; } var parameters = new ModalParameters(); parameters.Add(nameof(GuestEdit.Guest), selectedGuest); var modal = Modal.Show <GuestEdit>(Loc["EditGuest"], parameters); var result = await modal.Result; if (!result.Cancelled) { await GuestRepo.Update(selectedGuest); await RefreshList(); } }