refactor: ClientUser-Repository-Abhängigkeit hinzugefügt und DeleteAsync in UserRepository verbessert

This commit is contained in:
Developer 02 2024-10-30 21:02:59 +01:00
parent 2a4358a7c7
commit 80a3f96404
7 changed files with 36 additions and 8 deletions

View File

@ -35,6 +35,7 @@ namespace DigitalData.UserManager.Application
.AddScoped<IModuleRepository, ModuleRepository<TDbContext>>() .AddScoped<IModuleRepository, ModuleRepository<TDbContext>>()
.AddScoped<IModuleOfUserRepository, ModuleOfUserRepository<TDbContext>>() .AddScoped<IModuleOfUserRepository, ModuleOfUserRepository<TDbContext>>()
.AddScoped<IUserRepRepository, UserRepRepository<TDbContext>>() .AddScoped<IUserRepRepository, UserRepRepository<TDbContext>>()
.AddScoped<IClientUserRepository, ClientUserRepository<TDbContext>>()
.AddScoped<IUserService, UserService>() .AddScoped<IUserService, UserService>()
.AddScoped<IGroupService, GroupService>() .AddScoped<IGroupService, GroupService>()

View File

@ -1,11 +1,18 @@
using System.ComponentModel.DataAnnotations; using DigitalData.Core.Abstractions;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
namespace DigitalData.UserManager.Domain.Entities namespace DigitalData.UserManager.Domain.Entities
{ {
[Table("TBDD_CLIENT_USER", Schema = "dbo")] [Table("TBDD_CLIENT_USER", Schema = "dbo")]
public class ClientUser : BaseEntity public class ClientUser : IUnique<int>
{ {
[Column("GUID")]
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required] [Required]
[Column("USER_ID")] [Column("USER_ID")]
public int UserId { get; init; } public int UserId { get; init; }
@ -16,5 +23,13 @@ namespace DigitalData.UserManager.Domain.Entities
[Column("COMMENT")] [Column("COMMENT")]
public string? Comment { get; init; } public string? Comment { get; init; }
[StringLength(50)]
[Column("ADDED_WHO")]
public string? AddedWho { get; set; }
[Column("ADDED_WHEN", TypeName = "datetime")]
[DefaultValue("GETDATE()")]
public DateTime AddedWhen { get; set; } = DateTime.Now;
} }
} }

View File

@ -16,5 +16,7 @@ namespace DigitalData.UserManager.Infrastructure.Contracts
public DbSet<User> Users { get; } public DbSet<User> Users { get; }
public DbSet<UserRep> UserReps { get; } public DbSet<UserRep> UserReps { get; }
public DbSet<ClientUser> ClientUsers { get; }
} }
} }

View File

@ -8,7 +8,7 @@ namespace DigitalData.UserManager.Infrastructure.Repositories
public class ClientUserRepository<TDbContext> : CRUDRepository<ClientUser, int, TDbContext>, IClientUserRepository public class ClientUserRepository<TDbContext> : CRUDRepository<ClientUser, int, TDbContext>, IClientUserRepository
where TDbContext : DbContext, IUserManagerDbContext where TDbContext : DbContext, IUserManagerDbContext
{ {
public ClientUserRepository(TDbContext dbContext) : base(dbContext, dbContext.Set<ClientUser>()) public ClientUserRepository(TDbContext dbContext) : base(dbContext, dbContext.ClientUsers)
{ {
} }

View File

@ -25,11 +25,11 @@ namespace DigitalData.UserManager.Infrastructure.Repositories
if (gou_list.Any()) if (gou_list.Any())
_dbContext.RemoveRange(gou_list); _dbContext.RemoveRange(gou_list);
var uRep_list = await _uRepRepo.ReadAllAsync(groupId: group.Id); var uRep_list = await _uRepRepo.ReadAllAsync(readOnly: false, groupId: group.Id);
if (uRep_list.Any()) if (uRep_list.Any())
_dbContext.RemoveRange(uRep_list); _dbContext.RemoveRange(uRep_list);
uRep_list = await _uRepRepo.ReadAllAsync(repGroupId: group.Id); uRep_list = await _uRepRepo.ReadAllAsync(readOnly: false, repGroupId: group.Id);
if (uRep_list.Any()) if (uRep_list.Any())
_dbContext.RemoveRange(uRep_list); _dbContext.RemoveRange(uRep_list);

View File

@ -14,11 +14,14 @@ namespace DigitalData.UserManager.Infrastructure.Repositories
private readonly IUserRepRepository _uRepRepo; private readonly IUserRepRepository _uRepRepo;
public UserRepository(TDbContext dbContext, IModuleOfUserRepository moduleOfUserRepo, IGroupOfUserRepository groupOfUserRepo, IUserRepRepository userRepRepository) : base(dbContext, dbContext.Users) private readonly IClientUserRepository _cUserRepo;
public UserRepository(TDbContext dbContext, IModuleOfUserRepository moduleOfUserRepo, IGroupOfUserRepository groupOfUserRepo, IUserRepRepository userRepRepository, IClientUserRepository clientUserRepository) : base(dbContext, dbContext.Users)
{ {
_moduleOfUserRepo = moduleOfUserRepo; _moduleOfUserRepo = moduleOfUserRepo;
_groupOfUserRepo = groupOfUserRepo; _groupOfUserRepo = groupOfUserRepo;
_uRepRepo = userRepRepository; _uRepRepo = userRepRepository;
_cUserRepo = clientUserRepository;
} }
public async Task<IEnumerable<User>> ReadByModuleIdAsync(int moduleId) public async Task<IEnumerable<User>> ReadByModuleIdAsync(int moduleId)
@ -61,14 +64,18 @@ namespace DigitalData.UserManager.Infrastructure.Repositories
if (gou.Any()) if (gou.Any())
_dbContext.RemoveRange(gou); _dbContext.RemoveRange(gou);
var uRep_list = await _uRepRepo.ReadAllAsync(userId: user.Id); var uRep_list = await _uRepRepo.ReadAllAsync(readOnly: false, userId: user.Id);
if (uRep_list.Any()) if (uRep_list.Any())
_dbContext.RemoveRange(uRep_list); _dbContext.RemoveRange(uRep_list);
uRep_list = await _uRepRepo.ReadAllAsync(repUserId: user.Id); uRep_list = await _uRepRepo.ReadAllAsync(readOnly: false, repUserId: user.Id);
if (uRep_list.Any()) if (uRep_list.Any())
_dbContext.RemoveRange(uRep_list); _dbContext.RemoveRange(uRep_list);
var cu_list = await _cUserRepo.ReadAsync(readOnly: false, userId: user.Id);
if (cu_list.Any())
_dbContext.RemoveRange(cu_list);
return await base.DeleteAsync(user); return await base.DeleteAsync(user);
} }
} }

View File

@ -18,6 +18,8 @@ namespace DigitalData.UserManager.Infrastructure.Repositories
public DbSet<UserRep> UserReps { get; set; } public DbSet<UserRep> UserReps { get; set; }
public DbSet<ClientUser> ClientUsers { get; set; }
public UserManagerDbContext(DbContextOptions<UserManagerDbContext> options) : base(options) public UserManagerDbContext(DbContextOptions<UserManagerDbContext> options) : base(options)
{ {
GroupOfUsers = Set<GroupOfUser>(); GroupOfUsers = Set<GroupOfUser>();
@ -26,6 +28,7 @@ namespace DigitalData.UserManager.Infrastructure.Repositories
Modules = Set<Module>(); Modules = Set<Module>();
Users = Set<User>(); Users = Set<User>();
UserReps = Set<UserRep>(); UserReps = Set<UserRep>();
ClientUsers = Set<ClientUser>();
} }
protected override void OnModelCreating(ModelBuilder modelBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder)