Implemented selector properties for admin pages
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
using FrontendTest.Providers;
|
||||
using HopFrame.Web.Admin;
|
||||
using HopFrame.Web.Admin.Generators;
|
||||
using HopFrame.Web.Admin.Models;
|
||||
using RestApiTest.Models;
|
||||
|
||||
@@ -8,5 +10,29 @@ public class AdminContext : AdminPagesContext {
|
||||
|
||||
public AdminPage<Address> Addresses { get; set; }
|
||||
public AdminPage<Employee> Employees { get; set; }
|
||||
|
||||
|
||||
public override void OnModelCreating(IAdminContextGenerator generator) {
|
||||
base.OnModelCreating(generator);
|
||||
|
||||
generator.Page<Employee>()
|
||||
.Property(e => e.Address)
|
||||
.IsSelector();
|
||||
|
||||
generator.Page<Address>()
|
||||
.Property(a => a.Employee)
|
||||
.Ignore();
|
||||
|
||||
generator.Page<Address>()
|
||||
.Property(a => a.AddressId)
|
||||
.IsSelector<Employee>()
|
||||
.Parser<Address, Employee>((model, e) => model.AddressId = e.EmployeeId);
|
||||
|
||||
generator.Page<Employee>()
|
||||
.ConfigureRepository<EmployeeProvider>()
|
||||
.ListingProperty(e => e.Name);
|
||||
|
||||
generator.Page<Address>()
|
||||
.ConfigureRepository<AddressProvider>()
|
||||
.ListingProperty(a => a.City);
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,24 @@
|
||||
using HopFrame.Database;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using RestApiTest.Models;
|
||||
|
||||
namespace FrontendTest;
|
||||
|
||||
public class DatabaseContext : HopDbContextBase {
|
||||
public DbSet<Employee> Employees { get; set; }
|
||||
public DbSet<Address> Addresses { get; set; }
|
||||
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
|
||||
base.OnConfiguring(optionsBuilder);
|
||||
|
||||
|
||||
optionsBuilder.UseSqlite(@"Data Source=C:\Users\leon\Documents\Projekte\HopFrame\test\RestApiTest\bin\Debug\net8.0\test.db;Mode=ReadWrite;");
|
||||
}
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder) {
|
||||
base.OnModelCreating(modelBuilder);
|
||||
|
||||
modelBuilder.Entity<Employee>()
|
||||
.HasOne(e => e.Address)
|
||||
.WithOne(a => a.Employee);
|
||||
}
|
||||
}
|
||||
29
test/FrontendTest/Providers/AddressProvider.cs
Normal file
29
test/FrontendTest/Providers/AddressProvider.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
using HopFrame.Web.Admin;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using RestApiTest.Models;
|
||||
|
||||
namespace FrontendTest.Providers;
|
||||
|
||||
public class AddressProvider(DatabaseContext context) : ModelRepository<Address> {
|
||||
|
||||
public override async Task<IEnumerable<Address>> ReadAll() {
|
||||
return await context.Addresses.ToArrayAsync();
|
||||
}
|
||||
|
||||
public override async Task<Address> Create(Address model) {
|
||||
await context.Addresses.AddAsync(model);
|
||||
await context.SaveChangesAsync();
|
||||
return model;
|
||||
}
|
||||
|
||||
public override async Task<Address> Update(Address model) {
|
||||
context.Addresses.Update(model);
|
||||
await context.SaveChangesAsync();
|
||||
return model;
|
||||
}
|
||||
|
||||
public override async Task Delete(Address model) {
|
||||
context.Addresses.Remove(model);
|
||||
await context.SaveChangesAsync();
|
||||
}
|
||||
}
|
||||
31
test/FrontendTest/Providers/EmployeeProvider.cs
Normal file
31
test/FrontendTest/Providers/EmployeeProvider.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
using HopFrame.Web.Admin;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using RestApiTest.Models;
|
||||
|
||||
namespace FrontendTest.Providers;
|
||||
|
||||
public class EmployeeProvider(DatabaseContext context) : ModelRepository<Employee> {
|
||||
|
||||
public override async Task<IEnumerable<Employee>> ReadAll() {
|
||||
return await context.Employees
|
||||
.Include(e => e.Address)
|
||||
.ToArrayAsync();
|
||||
}
|
||||
|
||||
public override async Task<Employee> Create(Employee model) {
|
||||
await context.Employees.AddAsync(model);
|
||||
await context.SaveChangesAsync();
|
||||
return model;
|
||||
}
|
||||
|
||||
public override async Task<Employee> Update(Employee model) {
|
||||
context.Employees.Update(model);
|
||||
await context.SaveChangesAsync();
|
||||
return model;
|
||||
}
|
||||
|
||||
public override async Task Delete(Employee model) {
|
||||
context.Employees.Remove(model);
|
||||
await context.SaveChangesAsync();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user