Bring the autocomplete bo to live

This commit is contained in:
Holger Börchers 2020-08-25 22:55:58 +02:00
parent 86acf9947c
commit d2b4b1a0a0
10 changed files with 21 additions and 12 deletions

View File

@ -9,7 +9,7 @@ using Microsoft.EntityFrameworkCore;
using UserService.DatabaseLayer.DataModels; using UserService.DatabaseLayer.DataModels;
using UserService.Infrastructure.DataModels; using UserService.Infrastructure.DataModels;
namespace UserService.DatabaseLayer.Repository namespace UserService.DatabaseLayer.Repositories
{ {
public class BaseRepository<T> where T : Node public class BaseRepository<T> where T : Node
{ {

View File

@ -6,7 +6,7 @@ using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using UserService.Infrastructure.DataModels; using UserService.Infrastructure.DataModels;
namespace UserService.DatabaseLayer.Repository namespace UserService.DatabaseLayer.Repositories
{ {
public interface IRepository<T> where T : Node public interface IRepository<T> where T : Node
{ {
@ -32,7 +32,7 @@ namespace UserService.DatabaseLayer.Repository
} }
public interface INodesRepository : IRepository<Node> public interface IMembersRepository : IRepository<Member>
{ {
} }

View File

@ -8,7 +8,7 @@ using Microsoft.EntityFrameworkCore;
using UserService.DatabaseLayer.DataModels; using UserService.DatabaseLayer.DataModels;
using UserService.Infrastructure.DataModels; using UserService.Infrastructure.DataModels;
namespace UserService.DatabaseLayer.Repository namespace UserService.DatabaseLayer.Repositories
{ {
public class OrganizationUnitsRepository : BaseRepository<OrganizationUnit>, IOrganizationUnitsRepository public class OrganizationUnitsRepository : BaseRepository<OrganizationUnit>, IOrganizationUnitsRepository
{ {
@ -21,7 +21,6 @@ namespace UserService.DatabaseLayer.Repository
Expression<Func<OrganizationUnit, bool>>? predicate = null, CancellationToken token = default) Expression<Func<OrganizationUnit, bool>>? predicate = null, CancellationToken token = default)
{ {
await using var db = new UserServiceDbContext(); await using var db = new UserServiceDbContext();
var result = new List<OrganizationUnit>();
var rootOus = await Context(db) var rootOus = await Context(db)
.Include(x => x.Parent) .Include(x => x.Parent)
.WhereOrDefault(predicate) .WhereOrDefault(predicate)
@ -40,6 +39,7 @@ namespace UserService.DatabaseLayer.Repository
} }
} }
var result = new List<OrganizationUnit>();
foreach (var ou in rootOus.Where(x => x.ParentId is null)) foreach (var ou in rootOus.Where(x => x.ParentId is null))
{ {
result.AddRange(Rec(ou)); result.AddRange(Rec(ou));

View File

@ -1,6 +1,6 @@
using UserService.Infrastructure.DataModels; using UserService.Infrastructure.DataModels;
namespace UserService.DatabaseLayer.Repository namespace UserService.DatabaseLayer.Repositories
{ {
public class SecurityGroupsRepository : BaseRepository<SecurityGroup>, ISecurityGroupsRepository public class SecurityGroupsRepository : BaseRepository<SecurityGroup>, ISecurityGroupsRepository
{ {

View File

@ -1,6 +1,6 @@
using UserService.Infrastructure.DataModels; using UserService.Infrastructure.DataModels;
namespace UserService.DatabaseLayer.Repository namespace UserService.DatabaseLayer.Repositories
{ {
public class UsersRepository : BaseRepository<User>, IUsersRepository public class UsersRepository : BaseRepository<User>, IUsersRepository
{ {

Binary file not shown.

View File

@ -2,7 +2,7 @@
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
using UserService.DatabaseLayer.Repository; using UserService.DatabaseLayer.Repositories;
using UserService.Infrastructure.DataModels; using UserService.Infrastructure.DataModels;
namespace UserService.Pages namespace UserService.Pages

View File

@ -6,7 +6,7 @@ using Blazorise;
using Blazorise.DataGrid; using Blazorise.DataGrid;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
using Microsoft.JSInterop; using Microsoft.JSInterop;
using UserService.DatabaseLayer.Repository; using UserService.DatabaseLayer.Repositories;
using UserService.Infrastructure.DataModels; using UserService.Infrastructure.DataModels;
namespace UserService.Pages namespace UserService.Pages
@ -14,6 +14,9 @@ namespace UserService.Pages
public class SecurityGroupsBase : MembersBase<SecurityGroup> public class SecurityGroupsBase : MembersBase<SecurityGroup>
{ {
[Inject] private ISecurityGroupsRepository SecurityGroupsRepository { get; set; } = null!; [Inject] private ISecurityGroupsRepository SecurityGroupsRepository { get; set; } = null!;
[Inject] private IUsersRepository UsersRepository { get; set; } = null!;
[Inject] private IOrganizationUnitsRepository OrganizationUnitsRepository { get; set; } = null!; [Inject] private IOrganizationUnitsRepository OrganizationUnitsRepository { get; set; } = null!;
// reference to the modal component // reference to the modal component
@ -64,13 +67,19 @@ namespace UserService.Pages
protected async Task MySearchHandler(object arg) protected async Task MySearchHandler(object arg)
{ {
var addedMember = arg as Member; var addedMember = arg as Member;
if(addedMember is null) return;
var confirmed = await JsRuntime.InvokeAsync<bool>("confirm", addedMember?.CommonName ?? "Fuck") var confirmed = await JsRuntime.InvokeAsync<bool>("confirm", addedMember?.CommonName ?? "Fuck")
.ConfigureAwait(false); .ConfigureAwait(false);
} }
protected async Task OnSearchChanged(string arg) protected async Task OnSearchChanged(string arg)
{ {
//TODO var result = new List<Member>();
var users = await UsersRepository.GetAllAsync().ConfigureAwait(false);
var securityGroups = await SecurityGroupsRepository.GetAllAsync().ConfigureAwait(false);
result.AddRange(users.Where(x=> x.CommonName.StartsWith(arg, StringComparison.InvariantCultureIgnoreCase) || x.FullName.StartsWith(arg, StringComparison.InvariantCultureIgnoreCase)));
result.AddRange(securityGroups.Where(x=> x.CommonName.StartsWith(arg, StringComparison.InvariantCultureIgnoreCase)).Where(x=> x.Id != SelectedSecurityGroup?.Id));
AvailableMembers = result;
} }
protected void OnButtonClicked(SecurityGroup securityGroup) protected void OnButtonClicked(SecurityGroup securityGroup)

View File

@ -6,7 +6,7 @@ using System.Threading.Tasks;
using Blazorise; using Blazorise;
using Blazorise.DataGrid; using Blazorise.DataGrid;
using Microsoft.JSInterop; using Microsoft.JSInterop;
using UserService.DatabaseLayer.Repository; using UserService.DatabaseLayer.Repositories;
using UserService.Infrastructure.DataModels; using UserService.Infrastructure.DataModels;
using UserService.Infrastructure; using UserService.Infrastructure;

View File

@ -7,7 +7,7 @@ using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using UserService.DatabaseLayer.Repository; using UserService.DatabaseLayer.Repositories;
namespace UserService namespace UserService
{ {