diff --git a/DigitalData.UserManager.Application/DIExtensions.cs b/DigitalData.UserManager.Application/DIExtensions.cs index 14b23d8..fcbedbd 100644 --- a/DigitalData.UserManager.Application/DIExtensions.cs +++ b/DigitalData.UserManager.Application/DIExtensions.cs @@ -35,6 +35,7 @@ namespace DigitalData.UserManager.Application .AddScoped>() .AddScoped>() .AddScoped>() + .AddScoped>() .AddScoped() .AddScoped() diff --git a/DigitalData.UserManager.Domain/Entities/ClientUser.cs b/DigitalData.UserManager.Domain/Entities/ClientUser.cs index 21dbf8c..f538501 100644 --- a/DigitalData.UserManager.Domain/Entities/ClientUser.cs +++ b/DigitalData.UserManager.Domain/Entities/ClientUser.cs @@ -1,11 +1,18 @@ -using System.ComponentModel.DataAnnotations; +using DigitalData.Core.Abstractions; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace DigitalData.UserManager.Domain.Entities { [Table("TBDD_CLIENT_USER", Schema = "dbo")] - public class ClientUser : BaseEntity + public class ClientUser : IUnique { + [Column("GUID")] + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + [Required] [Column("USER_ID")] public int UserId { get; init; } @@ -16,5 +23,13 @@ namespace DigitalData.UserManager.Domain.Entities [Column("COMMENT")] 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; } } \ No newline at end of file diff --git a/DigitalData.UserManager.Infrastructure/Contracts/IUserManagerDbContext.cs b/DigitalData.UserManager.Infrastructure/Contracts/IUserManagerDbContext.cs index b260359..ef8ee62 100644 --- a/DigitalData.UserManager.Infrastructure/Contracts/IUserManagerDbContext.cs +++ b/DigitalData.UserManager.Infrastructure/Contracts/IUserManagerDbContext.cs @@ -16,5 +16,7 @@ namespace DigitalData.UserManager.Infrastructure.Contracts public DbSet Users { get; } public DbSet UserReps { get; } + + public DbSet ClientUsers { get; } } } \ No newline at end of file diff --git a/DigitalData.UserManager.Infrastructure/Repositories/ClientUserRepository.cs b/DigitalData.UserManager.Infrastructure/Repositories/ClientUserRepository.cs index 404976d..fbc4523 100644 --- a/DigitalData.UserManager.Infrastructure/Repositories/ClientUserRepository.cs +++ b/DigitalData.UserManager.Infrastructure/Repositories/ClientUserRepository.cs @@ -8,7 +8,7 @@ namespace DigitalData.UserManager.Infrastructure.Repositories public class ClientUserRepository : CRUDRepository, IClientUserRepository where TDbContext : DbContext, IUserManagerDbContext { - public ClientUserRepository(TDbContext dbContext) : base(dbContext, dbContext.Set()) + public ClientUserRepository(TDbContext dbContext) : base(dbContext, dbContext.ClientUsers) { } diff --git a/DigitalData.UserManager.Infrastructure/Repositories/GroupRepository.cs b/DigitalData.UserManager.Infrastructure/Repositories/GroupRepository.cs index a9e3e1f..4952d66 100644 --- a/DigitalData.UserManager.Infrastructure/Repositories/GroupRepository.cs +++ b/DigitalData.UserManager.Infrastructure/Repositories/GroupRepository.cs @@ -25,11 +25,11 @@ namespace DigitalData.UserManager.Infrastructure.Repositories if (gou_list.Any()) _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()) _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()) _dbContext.RemoveRange(uRep_list); diff --git a/DigitalData.UserManager.Infrastructure/Repositories/UserRepository.cs b/DigitalData.UserManager.Infrastructure/Repositories/UserRepository.cs index 3f343c0..09a7302 100644 --- a/DigitalData.UserManager.Infrastructure/Repositories/UserRepository.cs +++ b/DigitalData.UserManager.Infrastructure/Repositories/UserRepository.cs @@ -14,11 +14,14 @@ namespace DigitalData.UserManager.Infrastructure.Repositories 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; _groupOfUserRepo = groupOfUserRepo; _uRepRepo = userRepRepository; + _cUserRepo = clientUserRepository; } public async Task> ReadByModuleIdAsync(int moduleId) @@ -61,14 +64,18 @@ namespace DigitalData.UserManager.Infrastructure.Repositories if (gou.Any()) _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()) _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()) _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); } } diff --git a/DigitalData.UserManager.Infrastructure/UserManagerDbContext.cs b/DigitalData.UserManager.Infrastructure/UserManagerDbContext.cs index b7c4ec2..ad7635d 100644 --- a/DigitalData.UserManager.Infrastructure/UserManagerDbContext.cs +++ b/DigitalData.UserManager.Infrastructure/UserManagerDbContext.cs @@ -18,6 +18,8 @@ namespace DigitalData.UserManager.Infrastructure.Repositories public DbSet UserReps { get; set; } + public DbSet ClientUsers { get; set; } + public UserManagerDbContext(DbContextOptions options) : base(options) { GroupOfUsers = Set(); @@ -26,6 +28,7 @@ namespace DigitalData.UserManager.Infrastructure.Repositories Modules = Set(); Users = Set(); UserReps = Set(); + ClientUsers = Set(); } protected override void OnModelCreating(ModelBuilder modelBuilder)