Compare commits

...

8 Commits

Author SHA1 Message Date
b1075c8b82 Add .NET Framework 4.6.2 support and improve nullability
Updated `DigitalData.UserManager.Domain.csproj` to target .NET Framework 4.6.2 alongside .NET 7.0, 8.0, and 9.0. Corrected `PackageTags` from "user maanger" to "user manager" and added property groups for implicit usings and language versions.

Introduced nullable reference types in entity classes (`BaseEntity`, `ClientUser`, `Group`, `User`, etc.) for enhanced type safety. Updated properties in the `User` and `UserRep` classes to use the new nullable syntax, ensuring consistency across the codebase.

These changes improve compatibility with newer C# features and maintain support for multiple frameworks.
2025-06-26 12:27:24 +02:00
40deb9968f Update namespaces and package references
Refactor namespaces from `DigitalData.Core.DTO` to `DigitalData.Core.Abstraction.Application.DTO` in multiple controllers to adopt a new abstraction layer. Update `DigitalData.Core.API` package from version `2.2.0` to `2.2.1` and add `DigitalData.Core.Abstraction.Application` package with version `1.0.0`. Add `[Obsolete("Use MediatR")]` attribute to several controllers to encourage transitioning to MediatR for request handling.
2025-06-26 11:47:43 +02:00
182771afd2 Refactor AuthController to use MediatR
- Added using directive for DigitalData.Core.Abstraction.Application.DTO.
- Marked IUserService and GetUserWithClaims as obsolete.
- Transitioning towards MediatR for handling requests and responses.
2025-06-26 10:15:58 +02:00
668eef2a4d Update BaseReadDto namespace and mark as obsolete
Replaced the namespace import from `DigitalData.Core.DTO` to `DigitalData.Core.Abstraction.Application.DTO` in `BaseReadDto.cs`. Added an `Obsolete` attribute to indicate deprecation and recommend using `DigitalData.Core.Exceptions and .Middleware` instead. This change enhances code organization and clarity.
2025-06-26 10:00:01 +02:00
e9527ca61e Refactor namespaces and update DTO structures
Updated namespaces for DTOs and services to improve project organization. Marked several interfaces as obsolete in favor of MediatR for better request handling. Simplified `BaseUpdateDto` and other DTOs by removing `IUnique<int>` implementation. Changed return types of `CreateAsync` methods to return corresponding read DTOs. Removed reference to `DigitalData.Core.DTO` in the project file, reflecting a shift in architecture for maintainability.
2025-06-25 17:14:24 +02:00
8f2ec82d4f Mark IBaseService as obsolete for MediatR usage
Added an `Obsolete` attribute to the `IBaseService` interface, recommending the use of MediatR instead. This change serves as a warning to developers about potential deprecation, encouraging a transition to the suggested alternative.
2025-06-25 16:04:27 +02:00
cc708cae0c Refactor namespace and update project dependencies
Updated the import statement for `DigitalData.Core.Abstractions.Application` to `DigitalData.Core.Abstraction.Application` in `IBaseService.cs`. Removed the `PackageReference` for `DigitalData.Core.Abstractions` version `4.0.0` from the project file, indicating a shift in library usage.
2025-06-25 16:03:14 +02:00
b936677c16 Update packages and simplify entity definitions
- Updated package references to newer versions for `DigitalData.Auth.Client`, `DigitalData.Core.API`, `DigitalData.Core.Abstractions`, `DigitalData.Core.Application`, and `DigitalData.EmailProfilerDispatcher.Abstraction`.
- Changed `UserManager.Domain` package version from `3.0.2` to `3.1.0` and updated assembly and file versions.
- Removed `IUnique<int>` interface implementation from `BaseEntity`, `ClientUser`, `Module`, and `ModuleOfUser`.
- Added data annotations to the `User` class for various properties that were previously commented out.
- Updated `Microsoft.EntityFrameworkCore` package references in the `Infrastructure` project for `net7.0` and `net9.0`.
- Modified solution configuration to change a project's build configuration from Debug to Release.
2025-06-25 14:46:39 +02:00
47 changed files with 283 additions and 116 deletions

View File

@@ -2,10 +2,10 @@
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using DigitalData.UserManager.Application.DTOs.Auth; using DigitalData.UserManager.Application.DTOs.Auth;
using DigitalData.UserManager.Application.Contracts; using DigitalData.UserManager.Application.Contracts;
using DigitalData.Core.DTO;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using DigitalData.UserManager.Application; using DigitalData.UserManager.Application;
using System.Security.Claims; using System.Security.Claims;
using DigitalData.Core.Abstraction.Application.DTO;
namespace DigitalData.UserManager.API.Controllers; namespace DigitalData.UserManager.API.Controllers;
@@ -14,9 +14,11 @@ namespace DigitalData.UserManager.API.Controllers;
public class AuthController : ControllerBase public class AuthController : ControllerBase
{ {
private readonly ILogger<UserController> _logger; private readonly ILogger<UserController> _logger;
[Obsolete("Use MediatR")]
private readonly IUserService _userService; private readonly IUserService _userService;
private readonly IStringLocalizer<Resource> _localizer; private readonly IStringLocalizer<Resource> _localizer;
[Obsolete("Use MediatR")]
public AuthController(ILogger<UserController> logger, IUserService userService, IStringLocalizer<Resource> localizer) public AuthController(ILogger<UserController> logger, IUserService userService, IStringLocalizer<Resource> localizer)
{ {
_logger = logger; _logger = logger;
@@ -34,6 +36,7 @@ public class AuthController : ControllerBase
[Authorize] [Authorize]
[HttpGet("user")] [HttpGet("user")]
[Obsolete("Use MediatR")]
public async Task<IActionResult> GetUserWithClaims() public async Task<IActionResult> GetUserWithClaims()
{ {
try try

View File

@@ -1,5 +1,5 @@
using DigitalData.Core.API; using DigitalData.Core.Abstraction.Application.DTO;
using DigitalData.Core.DTO; using DigitalData.Core.API;
using DigitalData.UserManager.Application.Contracts; using DigitalData.UserManager.Application.Contracts;
using DigitalData.UserManager.Application.DTOs.Base; using DigitalData.UserManager.Application.DTOs.Base;
using DigitalData.UserManager.Application.DTOs.User; using DigitalData.UserManager.Application.DTOs.User;
@@ -10,6 +10,7 @@ using System.Security.Claims;
namespace DigitalData.UserManager.API.Controllers; namespace DigitalData.UserManager.API.Controllers;
[Authorize] [Authorize]
[Obsolete("Use MediatR")]
public class BaseAuthController<TCRUDService, TCreateDto, TReadDto, TUpdateDto, TBaseEntity> : CRUDControllerBaseWithErrorHandling<TCRUDService, TCreateDto, TReadDto, TUpdateDto, TBaseEntity, int> public class BaseAuthController<TCRUDService, TCreateDto, TReadDto, TUpdateDto, TBaseEntity> : CRUDControllerBaseWithErrorHandling<TCRUDService, TCreateDto, TReadDto, TUpdateDto, TBaseEntity, int>
where TCRUDService : IBaseService<TCreateDto, TReadDto, TBaseEntity> where TCRUDService : IBaseService<TCreateDto, TReadDto, TBaseEntity>
where TCreateDto : BaseCreateDto where TCreateDto : BaseCreateDto

View File

@@ -1,5 +1,4 @@
using DigitalData.Core.Abstractions.Application; using DigitalData.UserManager.Application.Contracts;
using DigitalData.UserManager.Application.Contracts;
using DigitalData.UserManager.Application.DTOs; using DigitalData.UserManager.Application.DTOs;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Caching.Memory;
@@ -7,14 +6,16 @@ using System.Diagnostics.CodeAnalysis;
using System.Security.Claims; using System.Security.Claims;
using DigitalData.UserManager.Application; using DigitalData.UserManager.Application;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using DigitalData.Core.DTO;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using DigitalData.Core.Abstraction.Application;
using DigitalData.Core.Abstraction.Application.DTO;
namespace DigitalData.UserManager.API.Controllers; namespace DigitalData.UserManager.API.Controllers;
[Route("api/[controller]")] [Route("api/[controller]")]
[SuppressMessage("Interoperability", "CA1416:Validate platform compatibility", Justification = "<Pending>")] [SuppressMessage("Interoperability", "CA1416:Validate platform compatibility", Justification = "<Pending>")]
[Authorize] [Authorize]
[Obsolete("Use MediatR")]
public class DirectoryController : ControllerBase public class DirectoryController : ControllerBase
{ {
private readonly IUserService _userService; private readonly IUserService _userService;

View File

@@ -1,4 +1,4 @@
using DigitalData.Core.DTO; using DigitalData.Core.Abstraction.Application.DTO;
using DigitalData.UserManager.Application.Contracts; using DigitalData.UserManager.Application.Contracts;
using DigitalData.UserManager.Application.DTOs.Group; using DigitalData.UserManager.Application.DTOs.Group;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
@@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Mvc;
namespace DigitalData.UserManager.API.Controllers; namespace DigitalData.UserManager.API.Controllers;
[Authorize] [Authorize]
[Obsolete("Use MediatR")]
public class GroupController : BaseAuthController<IGroupService, GroupCreateDto, GroupReadDto, GroupUpdateDto, Group> public class GroupController : BaseAuthController<IGroupService, GroupCreateDto, GroupReadDto, GroupUpdateDto, Group>
{ {
public GroupController(ILogger<GroupController> logger, IGroupService service, IUserService userService) : base(logger, service, userService) public GroupController(ILogger<GroupController> logger, IGroupService service, IUserService userService) : base(logger, service, userService)

View File

@@ -1,4 +1,4 @@
using DigitalData.Core.DTO; using DigitalData.Core.Abstraction.Application.DTO;
using DigitalData.UserManager.Application.Contracts; using DigitalData.UserManager.Application.Contracts;
using DigitalData.UserManager.Application.DTOs.GroupOfUser; using DigitalData.UserManager.Application.DTOs.GroupOfUser;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
@@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Mvc;
namespace DigitalData.UserManager.API.Controllers; namespace DigitalData.UserManager.API.Controllers;
[Authorize] [Authorize]
[Obsolete("Use MediatR")]
public class GroupOfUserController : BaseAuthController<IGroupOfUserService, GroupOfUserCreateDto, GroupOfUserReadDto, GroupOfUserUpdateDto, GroupOfUser> public class GroupOfUserController : BaseAuthController<IGroupOfUserService, GroupOfUserCreateDto, GroupOfUserReadDto, GroupOfUserUpdateDto, GroupOfUser>
{ {
public GroupOfUserController(ILogger<GroupOfUserController> logger, IGroupOfUserService service, IUserService userService) : base(logger, service, userService) public GroupOfUserController(ILogger<GroupOfUserController> logger, IGroupOfUserService service, IUserService userService) : base(logger, service, userService)

View File

@@ -1,5 +1,5 @@
using DigitalData.Core.Abstraction.Application.DTO;
using DigitalData.Core.API; using DigitalData.Core.API;
using DigitalData.Core.DTO;
using DigitalData.UserManager.Application.Contracts; using DigitalData.UserManager.Application.Contracts;
using DigitalData.UserManager.Application.DTOs.ModuleOfUser; using DigitalData.UserManager.Application.DTOs.ModuleOfUser;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
@@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Mvc;
namespace DigitalData.UserManager.API.Controllers; namespace DigitalData.UserManager.API.Controllers;
[Authorize] [Authorize]
[Obsolete("Use MediatR")]
public class ModuleOfUserController : CRUDControllerBaseWithErrorHandling<IModuleOfUserService, ModuleOfUserCreateDto, ModuleOfUserReadDto, ModuleOfUserUpdateDto, ModuleOfUser, int> public class ModuleOfUserController : CRUDControllerBaseWithErrorHandling<IModuleOfUserService, ModuleOfUserCreateDto, ModuleOfUserReadDto, ModuleOfUserUpdateDto, ModuleOfUser, int>
{ {
public ModuleOfUserController(ILogger<ModuleOfUserController> logger, IModuleOfUserService service) : base(logger, service) public ModuleOfUserController(ILogger<ModuleOfUserController> logger, IModuleOfUserService service) : base(logger, service)

View File

@@ -1,4 +1,4 @@
using DigitalData.Core.DTO; using DigitalData.Core.Abstraction.Application.DTO;
using DigitalData.UserManager.Application.Contracts; using DigitalData.UserManager.Application.Contracts;
using DigitalData.UserManager.Application.DTOs.User; using DigitalData.UserManager.Application.DTOs.User;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
@@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Mvc;
namespace DigitalData.UserManager.API.Controllers; namespace DigitalData.UserManager.API.Controllers;
[Authorize] [Authorize]
[Obsolete("Use MediatR")]
public class UserController : BaseAuthController<IUserService, UserCreateDto, UserReadDto, UserUpdateDto, User> public class UserController : BaseAuthController<IUserService, UserCreateDto, UserReadDto, UserUpdateDto, User>
{ {
public UserController(ILogger<UserController> logger, IUserService service) : base(logger, service, service) public UserController(ILogger<UserController> logger, IUserService service) : base(logger, service, service)

View File

@@ -1,4 +1,4 @@
using DigitalData.Core.DTO; using DigitalData.Core.Abstraction.Application.DTO;
using DigitalData.UserManager.Application.Contracts; using DigitalData.UserManager.Application.Contracts;
using DigitalData.UserManager.Application.DTOs.UserRep; using DigitalData.UserManager.Application.DTOs.UserRep;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
@@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Mvc;
namespace DigitalData.UserManager.API.Controllers; namespace DigitalData.UserManager.API.Controllers;
[Authorize] [Authorize]
[Obsolete("Use MediatR")]
public class UserRepController : BaseAuthController<IUserRepService, UserRepCreateDto, UserRepReadDto, UserRepUpdateDto, UserRep> public class UserRepController : BaseAuthController<IUserRepService, UserRepCreateDto, UserRepReadDto, UserRepUpdateDto, UserRep>
{ {
public UserRepController(ILogger<UserRepController> logger, IUserRepService service, IUserService userService) : base(logger, service, userService) public UserRepController(ILogger<UserRepController> logger, IUserRepService service, IUserService userService) : base(logger, service, userService)

View File

@@ -21,8 +21,9 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="DigitalData.Auth.Client" Version="1.3.5" /> <PackageReference Include="DigitalData.Auth.Client" Version="1.3.7" />
<PackageReference Include="DigitalData.Core.API" Version="2.1.1" /> <PackageReference Include="DigitalData.Core.Abstraction.Application" Version="1.0.0" />
<PackageReference Include="DigitalData.Core.API" Version="2.2.1" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="7.0.14" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="7.0.14" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="7.0.20" /> <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="7.0.20" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.4" /> <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.4" />

View File

@@ -1,10 +1,11 @@
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
using DigitalData.Core.Abstractions.Application;
using DigitalData.UserManager.Application.DTOs.User; using DigitalData.UserManager.Application.DTOs.User;
using DigitalData.UserManager.Application.DTOs.Base; using DigitalData.UserManager.Application.DTOs.Base;
using DigitalData.Core.Abstraction.Application;
namespace DigitalData.UserManager.Application.Contracts namespace DigitalData.UserManager.Application.Contracts
{ {
[Obsolete("Use MediatR")]
public interface IBaseService<TCreateDto, TReadDto, TBaseEntity> : ICRUDService<TCreateDto, TReadDto, TBaseEntity, int> public interface IBaseService<TCreateDto, TReadDto, TBaseEntity> : ICRUDService<TCreateDto, TReadDto, TBaseEntity, int>
where TCreateDto : BaseCreateDto where TCreateDto : BaseCreateDto
where TReadDto : class where TReadDto : class
@@ -14,5 +15,5 @@ namespace DigitalData.UserManager.Application.Contracts
public Func<Task<UserReadDto?>> UserFactoryAsync { set; } public Func<Task<UserReadDto?>> UserFactoryAsync { set; }
public Task<UserReadDto?> GetUserAsync(); public Task<UserReadDto?> GetUserAsync();
} }
} }

View File

@@ -1,9 +1,10 @@
using DigitalData.UserManager.Application.DTOs.GroupOfUser; using DigitalData.UserManager.Application.DTOs.GroupOfUser;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
using DigitalData.Core.DTO; using DigitalData.Core.Abstraction.Application.DTO;
namespace DigitalData.UserManager.Application.Contracts namespace DigitalData.UserManager.Application.Contracts
{ {
[Obsolete("Use MediatR")]
public interface IGroupOfUserService : IBaseService<GroupOfUserCreateDto, GroupOfUserReadDto, GroupOfUser> public interface IGroupOfUserService : IBaseService<GroupOfUserCreateDto, GroupOfUserReadDto, GroupOfUser>
{ {
Task<Result> DeleteAsyncByGroupUserId(int groupId, int userId); Task<Result> DeleteAsyncByGroupUserId(int groupId, int userId);

View File

@@ -1,9 +1,10 @@
using DigitalData.UserManager.Application.DTOs.Group; using DigitalData.UserManager.Application.DTOs.Group;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
using DigitalData.Core.DTO; using DigitalData.Core.Abstraction.Application.DTO;
namespace DigitalData.UserManager.Application.Contracts namespace DigitalData.UserManager.Application.Contracts
{ {
[Obsolete("Use MediatR")]
public interface IGroupService : IBaseService<GroupCreateDto, GroupReadDto, Group> public interface IGroupService : IBaseService<GroupCreateDto, GroupReadDto, Group>
{ {
Task<DataResult<int>> CreateAsync(DirectoryGroupDto dirGroup); Task<DataResult<int>> CreateAsync(DirectoryGroupDto dirGroup);

View File

@@ -1,10 +1,11 @@
using DigitalData.Core.Abstractions.Application; using DigitalData.Core.Abstraction.Application;
using DigitalData.Core.DTO; using DigitalData.Core.Abstraction.Application.DTO;
using DigitalData.UserManager.Application.DTOs.ModuleOfUser; using DigitalData.UserManager.Application.DTOs.ModuleOfUser;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
namespace DigitalData.UserManager.Application.Contracts namespace DigitalData.UserManager.Application.Contracts
{ {
[Obsolete("Use MediatR")]
public interface IModuleOfUserService : ICRUDService<ModuleOfUserCreateDto, ModuleOfUserReadDto, ModuleOfUser, int> public interface IModuleOfUserService : ICRUDService<ModuleOfUserCreateDto, ModuleOfUserReadDto, ModuleOfUser, int>
{ {
Task<Result> DeleteAsyncByModuleUserId(int moduleId, int userId); Task<Result> DeleteAsyncByModuleUserId(int moduleId, int userId);

View File

@@ -1,9 +1,10 @@
using DigitalData.Core.Abstractions.Application; using DigitalData.Core.Abstraction.Application;
using DigitalData.UserManager.Application.DTOs.Module; using DigitalData.UserManager.Application.DTOs.Module;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
namespace DigitalData.UserManager.Application.Contracts namespace DigitalData.UserManager.Application.Contracts
{ {
[Obsolete("Use MediatR")]
public interface IModuleService : IBasicCRUDService<ModuleDto, Module, int> public interface IModuleService : IBasicCRUDService<ModuleDto, Module, int>
{ {
} }

View File

@@ -1,9 +1,10 @@
using DigitalData.UserManager.Application.DTOs.UserRep; using DigitalData.UserManager.Application.DTOs.UserRep;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
using DigitalData.Core.DTO; using DigitalData.Core.Abstraction.Application.DTO;
namespace DigitalData.UserManager.Application.Contracts namespace DigitalData.UserManager.Application.Contracts
{ {
[Obsolete("Use MediatR")]
public interface IUserRepService : IBaseService<UserRepCreateDto, UserRepReadDto, UserRep> public interface IUserRepService : IBaseService<UserRepCreateDto, UserRepReadDto, UserRep>
{ {
Task<DataResult<IEnumerable<UserRepReadDto>>> ReadAllAsync(bool withUser = false, bool withRepGroup = false, bool withGroup = false, bool withRepUser = false, int? userId = null, int? groupId = null); Task<DataResult<IEnumerable<UserRepReadDto>>> ReadAllAsync(bool withUser = false, bool withRepGroup = false, bool withGroup = false, bool withRepUser = false, int? userId = null, int? groupId = null);

View File

@@ -1,9 +1,10 @@
using DigitalData.UserManager.Application.DTOs.User; using DigitalData.UserManager.Application.DTOs.User;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
using DigitalData.Core.DTO; using DigitalData.Core.Abstraction.Application.DTO;
namespace DigitalData.UserManager.Application.Contracts namespace DigitalData.UserManager.Application.Contracts
{ {
[Obsolete("Use MediatR")]
public interface IUserService : IBaseService<UserCreateDto, UserReadDto, User> public interface IUserService : IBaseService<UserCreateDto, UserReadDto, User>
{ {
Task<DataResult<IEnumerable<UserReadDto>>> ReadByModuleIdAsync(int moduleId); Task<DataResult<IEnumerable<UserReadDto>>> ReadByModuleIdAsync(int moduleId);

View File

@@ -1,8 +1,9 @@
using DigitalData.Core.Abstractions.Infrastructure; using DigitalData.Core.Abstraction.Application.Repository;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
namespace DigitalData.UserManager.Application.Contracts.Repositories; namespace DigitalData.UserManager.Application.Contracts.Repositories;
[Obsolete("Use IRepository")]
public interface IClientUserRepository : ICRUDRepository<ClientUser, int> public interface IClientUserRepository : ICRUDRepository<ClientUser, int>
{ {
Task<IEnumerable<ClientUser>> ReadAsync(bool readOnly = true, int? userId = null); Task<IEnumerable<ClientUser>> ReadAsync(bool readOnly = true, int? userId = null);

View File

@@ -1,8 +1,9 @@
using DigitalData.Core.Abstractions.Infrastructure; using DigitalData.Core.Abstraction.Application.Repository;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
namespace DigitalData.UserManager.Application.Contracts.Repositories; namespace DigitalData.UserManager.Application.Contracts.Repositories;
[Obsolete("Use IRepository")]
public interface IGroupOfUserRepository : ICRUDRepository<GroupOfUser, int> public interface IGroupOfUserRepository : ICRUDRepository<GroupOfUser, int>
{ {
IQueryable<GroupOfUser> ReadByGroupId(int groupId); IQueryable<GroupOfUser> ReadByGroupId(int groupId);

View File

@@ -1,8 +1,9 @@
using DigitalData.Core.Abstractions.Infrastructure; using DigitalData.Core.Abstraction.Application.Repository;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
namespace DigitalData.UserManager.Application.Contracts.Repositories; namespace DigitalData.UserManager.Application.Contracts.Repositories;
[Obsolete("Use IRepository")]
public interface IGroupRepository : ICRUDRepository<Group, int> public interface IGroupRepository : ICRUDRepository<Group, int>
{ {
} }

View File

@@ -1,8 +1,9 @@
using DigitalData.Core.Abstractions.Infrastructure; using DigitalData.Core.Abstraction.Application.Repository;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
namespace DigitalData.UserManager.Application.Contracts.Repositories; namespace DigitalData.UserManager.Application.Contracts.Repositories;
[Obsolete("Use IRepository")]
public interface IModuleOfUserRepository : ICRUDRepository<ModuleOfUser, int> public interface IModuleOfUserRepository : ICRUDRepository<ModuleOfUser, int>
{ {
IQueryable<ModuleOfUser> ReadByModuleId(int moduleId); IQueryable<ModuleOfUser> ReadByModuleId(int moduleId);

View File

@@ -1,8 +1,9 @@
using DigitalData.Core.Abstractions.Infrastructure; using DigitalData.Core.Abstraction.Application.Repository;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
namespace DigitalData.UserManager.Application.Contracts.Repositories; namespace DigitalData.UserManager.Application.Contracts.Repositories;
[Obsolete("Use IRepository")]
public interface IModuleRepository : ICRUDRepository<Module, int> public interface IModuleRepository : ICRUDRepository<Module, int>
{ {
} }

View File

@@ -1,8 +1,9 @@
using DigitalData.Core.Abstractions.Infrastructure; using DigitalData.Core.Abstraction.Application.Repository;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
namespace DigitalData.UserManager.Application.Contracts.Repositories; namespace DigitalData.UserManager.Application.Contracts.Repositories;
[Obsolete("Use IRepository")]
public interface IUserRepRepository : ICRUDRepository<UserRep, int> public interface IUserRepRepository : ICRUDRepository<UserRep, int>
{ {
Task<IEnumerable<UserRep>> ReadAllAsync( Task<IEnumerable<UserRep>> ReadAllAsync(

View File

@@ -1,8 +1,9 @@
using DigitalData.Core.Abstractions.Infrastructure; using DigitalData.Core.Abstraction.Application.Repository;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
namespace DigitalData.UserManager.Application.Contracts.Repositories; namespace DigitalData.UserManager.Application.Contracts.Repositories;
[Obsolete("Use IRepository")]
public interface IUserRepository : ICRUDRepository<User, int> public interface IUserRepository : ICRUDRepository<User, int>
{ {
Task<IEnumerable<User>> ReadByModuleIdAsync(int moduleId); Task<IEnumerable<User>> ReadByModuleIdAsync(int moduleId);

View File

@@ -1,7 +1,8 @@
using DigitalData.Core.DTO; using DigitalData.Core.Abstraction.Application.DTO;
namespace DigitalData.UserManager.Application.DTOs.Base namespace DigitalData.UserManager.Application.DTOs.Base
{ {
// TODO: use getter - setter methods for a simple inheritance. // TODO: use getter - setter methods for a simple inheritance.
[Obsolete("Use DigitalData.Core.Exceptions and .Middleware")]
public record BaseReadDto(int Id, string? AddedWho, DateTime? AddedWhen, string? ChangedWho, DateTime? ChangedWhen) : BaseDTO<int>(Id); public record BaseReadDto(int Id, string? AddedWho, DateTime? AddedWhen, string? ChangedWho, DateTime? ChangedWhen) : BaseDTO<int>(Id);
} }

View File

@@ -1,8 +1,6 @@
using DigitalData.Core.Abstractions; namespace DigitalData.UserManager.Application.DTOs.Base
namespace DigitalData.UserManager.Application.DTOs.Base
{ {
public record BaseUpdateDto() : IUnique<int> public record BaseUpdateDto
{ {
public string ChangedWho { get; set; } = "UNAUTHORIZED"; public string ChangedWho { get; set; } = "UNAUTHORIZED";

View File

@@ -1,10 +1,8 @@
using DigitalData.Core.Abstractions; namespace DigitalData.UserManager.Application.DTOs.Module
namespace DigitalData.UserManager.Application.DTOs.Module
{ {
public record ModuleDto( public record ModuleDto(
int Id, int Id,
string? Name, string? Name,
string? ShortName string? ShortName
) : IUnique<int>; );
} }

View File

@@ -1,6 +1,4 @@
using DigitalData.Core.Abstractions; namespace DigitalData.UserManager.Application.DTOs.ModuleOfUser
namespace DigitalData.UserManager.Application.DTOs.ModuleOfUser
{ {
public record ModuleOfUserUpdateDto( public record ModuleOfUserUpdateDto(
int Id, int Id,
@@ -9,5 +7,5 @@ namespace DigitalData.UserManager.Application.DTOs.ModuleOfUser
bool? IsAdmin, bool? IsAdmin,
string? Comment, string? Comment,
string? ChangedWho string? ChangedWho
) : IUnique<int>; );
} }

View File

@@ -26,10 +26,9 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="DigitalData.Core.Abstractions" Version="3.4.1" /> <PackageReference Include="DigitalData.Core.Abstraction.Application" Version="1.0.0" />
<PackageReference Include="DigitalData.Core.Application" Version="3.2.1" /> <PackageReference Include="DigitalData.Core.Application" Version="3.3.4" />
<PackageReference Include="DigitalData.Core.DTO" Version="2.0.1" /> <PackageReference Include="DigitalData.EmailProfilerDispatcher.Abstraction" Version="3.1.1" />
<PackageReference Include="DigitalData.EmailProfilerDispatcher.Abstraction" Version="3.0.0" />
</ItemGroup> </ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net7.0'"> <ItemGroup Condition="'$(TargetFramework)' == 'net7.0'">

View File

@@ -1,7 +1,7 @@
using AutoMapper; using AutoMapper;
using DigitalData.Core.Abstractions.Infrastructure; using DigitalData.Core.Abstraction.Application.DTO;
using DigitalData.Core.Abstraction.Application.Repository;
using DigitalData.Core.Application; using DigitalData.Core.Application;
using DigitalData.Core.DTO;
using DigitalData.UserManager.Application.Contracts; using DigitalData.UserManager.Application.Contracts;
using DigitalData.UserManager.Application.DTOs.Base; using DigitalData.UserManager.Application.DTOs.Base;
using DigitalData.UserManager.Application.DTOs.User; using DigitalData.UserManager.Application.DTOs.User;
@@ -9,6 +9,7 @@ using DigitalData.UserManager.Domain.Entities;
namespace DigitalData.UserManager.Application.Services namespace DigitalData.UserManager.Application.Services
{ {
[Obsolete("Use MediatR")]
public class BaseService<TCRUDRepository, TCreateDto, TReadDto, TBaseEntity> : CRUDService<TCRUDRepository, TCreateDto, TReadDto, TBaseEntity, int>, IBaseService<TCreateDto, TReadDto, TBaseEntity> public class BaseService<TCRUDRepository, TCreateDto, TReadDto, TBaseEntity> : CRUDService<TCRUDRepository, TCreateDto, TReadDto, TBaseEntity, int>, IBaseService<TCreateDto, TReadDto, TBaseEntity>
where TCRUDRepository : ICRUDRepository<TBaseEntity, int> where TCRUDRepository : ICRUDRepository<TBaseEntity, int>
where TCreateDto : BaseCreateDto where TCreateDto : BaseCreateDto
@@ -25,7 +26,7 @@ namespace DigitalData.UserManager.Application.Services
public async Task<UserReadDto?> GetUserAsync() => _lazyUserAsync is null ? null : await _lazyUserAsync.Value; public async Task<UserReadDto?> GetUserAsync() => _lazyUserAsync is null ? null : await _lazyUserAsync.Value;
public override async Task<DataResult<int>> CreateAsync(TCreateDto createDto) public override async Task<DataResult<TReadDto>> CreateAsync(TCreateDto createDto)
{ {
var user = await GetUserAsync(); var user = await GetUserAsync();
if(user is not null) if(user is not null)

View File

@@ -1,12 +1,13 @@
using AutoMapper; using AutoMapper;
using DigitalData.Core.DTO;
using DigitalData.UserManager.Application.Contracts; using DigitalData.UserManager.Application.Contracts;
using DigitalData.UserManager.Application.DTOs.GroupOfUser; using DigitalData.UserManager.Application.DTOs.GroupOfUser;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
using DigitalData.UserManager.Application.Contracts.Repositories; using DigitalData.UserManager.Application.Contracts.Repositories;
using DigitalData.Core.Abstraction.Application.DTO;
namespace DigitalData.UserManager.Application.Services namespace DigitalData.UserManager.Application.Services
{ {
[Obsolete("Use MediatR")]
public class GroupOfUserService : BaseService<IGroupOfUserRepository, GroupOfUserCreateDto, GroupOfUserReadDto, GroupOfUser>, IGroupOfUserService public class GroupOfUserService : BaseService<IGroupOfUserRepository, GroupOfUserCreateDto, GroupOfUserReadDto, GroupOfUser>, IGroupOfUserService
{ {
public GroupOfUserService(IGroupOfUserRepository repository, IMapper mapper) : base(repository, mapper) public GroupOfUserService(IGroupOfUserRepository repository, IMapper mapper) : base(repository, mapper)

View File

@@ -1,13 +1,14 @@
using AutoMapper; using AutoMapper;
using DigitalData.Core.DTO;
using DigitalData.UserManager.Application.Contracts; using DigitalData.UserManager.Application.Contracts;
using DigitalData.UserManager.Application.DTOs.Group; using DigitalData.UserManager.Application.DTOs.Group;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
using DigitalData.UserManager.Application.Contracts.Repositories; using DigitalData.UserManager.Application.Contracts.Repositories;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using DigitalData.Core.Abstraction.Application.DTO;
namespace DigitalData.UserManager.Application.Services namespace DigitalData.UserManager.Application.Services
{ {
[Obsolete("Use MediatR")]
public class GroupService : BaseService<IGroupRepository, GroupCreateDto, GroupReadDto, Group>, IGroupService public class GroupService : BaseService<IGroupRepository, GroupCreateDto, GroupReadDto, Group>, IGroupService
{ {
private readonly IStringLocalizer<Resource>? _localizer; private readonly IStringLocalizer<Resource>? _localizer;

View File

@@ -1,13 +1,14 @@
using AutoMapper; using AutoMapper;
using DigitalData.Core.Application; using DigitalData.Core.Application;
using DigitalData.Core.DTO;
using DigitalData.UserManager.Application.Contracts; using DigitalData.UserManager.Application.Contracts;
using DigitalData.UserManager.Application.DTOs.ModuleOfUser; using DigitalData.UserManager.Application.DTOs.ModuleOfUser;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
using DigitalData.UserManager.Application.Contracts.Repositories; using DigitalData.UserManager.Application.Contracts.Repositories;
using DigitalData.Core.Abstraction.Application.DTO;
namespace DigitalData.UserManager.Application.Services namespace DigitalData.UserManager.Application.Services
{ {
[Obsolete("Use MediatR")]
public class ModuleOfUserService : CRUDService<IModuleOfUserRepository, ModuleOfUserCreateDto, ModuleOfUserReadDto, ModuleOfUser, int>, IModuleOfUserService public class ModuleOfUserService : CRUDService<IModuleOfUserRepository, ModuleOfUserCreateDto, ModuleOfUserReadDto, ModuleOfUser, int>, IModuleOfUserService
{ {
public ModuleOfUserService(IModuleOfUserRepository repository, IMapper mapper) : base(repository, mapper) public ModuleOfUserService(IModuleOfUserRepository repository, IMapper mapper) : base(repository, mapper)

View File

@@ -7,6 +7,7 @@ using DigitalData.UserManager.Application.Contracts.Repositories;
namespace DigitalData.UserManager.Application.Services namespace DigitalData.UserManager.Application.Services
{ {
[Obsolete("Use MediatR")]
public class ModuleService : BasicCRUDService<IModuleRepository, ModuleDto, Module, int>, IModuleService public class ModuleService : BasicCRUDService<IModuleRepository, ModuleDto, Module, int>, IModuleService
{ {
public ModuleService(IModuleRepository repository, IMapper mapper) : base(repository, mapper) public ModuleService(IModuleRepository repository, IMapper mapper) : base(repository, mapper)

View File

@@ -1,14 +1,15 @@
using AutoMapper; using AutoMapper;
using DigitalData.Core.DTO;
using DigitalData.UserManager.Application.Contracts; using DigitalData.UserManager.Application.Contracts;
using DigitalData.UserManager.Application.DTOs.UserRep; using DigitalData.UserManager.Application.DTOs.UserRep;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
using DigitalData.UserManager.Application.Contracts.Repositories; using DigitalData.UserManager.Application.Contracts.Repositories;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using DigitalData.Core.Abstraction.Application.DTO;
namespace DigitalData.UserManager.Application.Services namespace DigitalData.UserManager.Application.Services
{ {
[Obsolete("Use MediatR")]
public class UserRepService : BaseService<IUserRepRepository, UserRepCreateDto, UserRepReadDto, UserRep>, IUserRepService public class UserRepService : BaseService<IUserRepRepository, UserRepCreateDto, UserRepReadDto, UserRep>, IUserRepService
{ {
private readonly IStringLocalizer<Resource>? _localizer; private readonly IStringLocalizer<Resource>? _localizer;
@@ -24,13 +25,13 @@ namespace DigitalData.UserManager.Application.Services
return Result.Success(urReadDTOs); return Result.Success(urReadDTOs);
} }
public override async Task<DataResult<int>> CreateAsync(UserRepCreateDto createDto) public override async Task<DataResult<UserRepReadDto>> CreateAsync(UserRepCreateDto createDto)
// XOR control // XOR control
=> (createDto.ValidFrom is null && createDto.ValidTo is not null) || (createDto.ValidFrom is not null && createDto.ValidTo is null) => (createDto.ValidFrom is null && createDto.ValidTo is not null) || (createDto.ValidFrom is not null && createDto.ValidTo is null)
? Result.Fail<int>().Notice(LogLevel.None, Flag.DataIntegrityIssue, _localizer?[Key.DateRangeNotXNOR].Value) ? Result.Fail<UserRepReadDto>().Notice(LogLevel.None, Flag.DataIntegrityIssue, _localizer?[Key.DateRangeNotXNOR].Value)
//date range control //date range control
: (createDto.ValidFrom > createDto.ValidTo) : (createDto.ValidFrom > createDto.ValidTo)
? Result.Fail<int>().Notice(LogLevel.None, Flag.DataIntegrityIssue, _localizer?[Key.InvalidDateRange].Value) ? Result.Fail<UserRepReadDto>().Notice(LogLevel.None, Flag.DataIntegrityIssue, _localizer?[Key.InvalidDateRange].Value)
: await base.CreateAsync(createDto); : await base.CreateAsync(createDto);
} }
} }

View File

@@ -1,13 +1,14 @@
using AutoMapper; using AutoMapper;
using DigitalData.Core.DTO;
using DigitalData.UserManager.Application.Contracts; using DigitalData.UserManager.Application.Contracts;
using DigitalData.UserManager.Application.DTOs.User; using DigitalData.UserManager.Application.DTOs.User;
using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Domain.Entities;
using DigitalData.UserManager.Application.Contracts.Repositories; using DigitalData.UserManager.Application.Contracts.Repositories;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using DigitalData.Core.Abstraction.Application.DTO;
namespace DigitalData.UserManager.Application.Services namespace DigitalData.UserManager.Application.Services
{ {
[Obsolete("Use MediatR")]
public class UserService : BaseService<IUserRepository, UserCreateDto, UserReadDto, User>, IUserService public class UserService : BaseService<IUserRepository, UserCreateDto, UserReadDto, User>, IUserService
{ {
private readonly IStringLocalizer<Resource>? _localizer; private readonly IStringLocalizer<Resource>? _localizer;

View File

@@ -25,6 +25,10 @@
</None> </None>
</ItemGroup> </ItemGroup>
<ItemGroup>
<PackageReference Include="DigitalData.Core.Abstraction.Application" Version="1.0.0" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\DigitalData.UserManager.Application\DigitalData.UserManager.Application.csproj" /> <ProjectReference Include="..\DigitalData.UserManager.Application\DigitalData.UserManager.Application.csproj" />
<ProjectReference Include="..\DigitalData.UserManager.Domain\DigitalData.UserManager.Domain.csproj" /> <ProjectReference Include="..\DigitalData.UserManager.Domain\DigitalData.UserManager.Domain.csproj" />

View File

@@ -1,11 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>net7.0;net8.0;net9.0</TargetFrameworks> <TargetFrameworks>net462;net7.0;net8.0;net9.0</TargetFrameworks>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<PackageId>UserManager.Domain</PackageId> <PackageId>UserManager.Domain</PackageId>
<Version>3.0.2</Version> <Version>3.1.0</Version>
<Authors>Digital Data GmbH</Authors> <Authors>Digital Data GmbH</Authors>
<Company>Digital Data GmbH</Company> <Company>Digital Data GmbH</Company>
<Product>UserManager.Domain</Product> <Product>UserManager.Domain</Product>
@@ -13,20 +13,43 @@
<Copyright>Copyright 2024</Copyright> <Copyright>Copyright 2024</Copyright>
<PackageIcon>icon.png</PackageIcon> <PackageIcon>icon.png</PackageIcon>
<RepositoryUrl>http://git.dd:3000/AppStd/WebUserManager.git</RepositoryUrl> <RepositoryUrl>http://git.dd:3000/AppStd/WebUserManager.git</RepositoryUrl>
<PackageTags>digital data domain user maanger</PackageTags> <PackageTags>digital data domain user manager</PackageTags>
<AssemblyVersion>3.0.2</AssemblyVersion> <AssemblyVersion>3.1.0</AssemblyVersion>
<FileVersion>3.0.2</FileVersion> <FileVersion>3.1.0</FileVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)' == 'net462'">
<ImplicitUsings>disable</ImplicitUsings>
<LangVersion>7.3</LangVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)' != 'net462'">
<ImplicitUsings>enable</ImplicitUsings>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net462'">
<PackageReference Include="System.ComponentModel.Annotations" Version="4.7.0" />
<PackageReference Include="System.Drawing.Common" Version="4.7.3" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net7.0'">
<PackageReference Include="System.Drawing.Common" Version="7.0.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
<PackageReference Include="System.Drawing.Common" Version="8.0.16" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net9.0'">
<PackageReference Include="System.Drawing.Common" Version="9.0.5" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\Assets\icon.png"> <None Include="..\Assets\icon.png">
<Pack>True</Pack> <Pack>True</Pack>
<PackagePath>\</PackagePath> <PackagePath>\</PackagePath>
</None> </None>
</ItemGroup> </ItemGroup>
<ItemGroup>
<PackageReference Include="DigitalData.Core.Abstractions" Version="3.4.0" />
</ItemGroup>
</Project> </Project>

View File

@@ -1,11 +1,13 @@
using DigitalData.Core.Abstractions; using System.ComponentModel;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
#if NETFRAMEWORK
using System;
#endif
namespace DigitalData.UserManager.Domain.Entities namespace DigitalData.UserManager.Domain.Entities
{ {
public class BaseEntity : IUnique<int> public class BaseEntity
{ {
[Column("GUID")] [Column("GUID")]
[Key] [Key]
@@ -14,11 +16,21 @@ namespace DigitalData.UserManager.Domain.Entities
[StringLength(50)] [StringLength(50)]
[Column("ADDED_WHO")] [Column("ADDED_WHO")]
public string? AddedWho { get; set; } public string
#if NET6_0_OR_GREATER
?
#endif
AddedWho
{ get; set; }
[StringLength(50)] [StringLength(50)]
[Column("CHANGED_WHO")] [Column("CHANGED_WHO")]
public string? ChangedWho { get; set; } public string
#if NET6_0_OR_GREATER
?
#endif
ChangedWho
{ get; set; }
//TODO: assign it to default value in create dto, not here! //TODO: assign it to default value in create dto, not here!
[Column("ADDED_WHEN", TypeName = "datetime")] [Column("ADDED_WHEN", TypeName = "datetime")]

View File

@@ -1,12 +1,14 @@
using DigitalData.Core.Abstractions; using System.ComponentModel;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
#if NETFRAMEWORK
using System;
#endif
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 : IUnique<int> public class ClientUser
{ {
[Column("GUID")] [Column("GUID")]
[Key] [Key]
@@ -15,18 +17,28 @@ namespace DigitalData.UserManager.Domain.Entities
[Required] [Required]
[Column("USER_ID")] [Column("USER_ID")]
public int UserId { get; init; } public int UserId { get; set; }
[Required] [Required]
[Column("CLIENT_ID")] [Column("CLIENT_ID")]
public int ClientId { get; init; } public int ClientId { get; set; }
[Column("COMMENT")] [Column("COMMENT")]
public string? Comment { get; init; } public string
#if NET6_0_OR_GREATER
?
#endif
Comment
{ get; set; }
[StringLength(50)] [StringLength(50)]
[Column("ADDED_WHO")] [Column("ADDED_WHO")]
public string? AddedWho { get; set; } public string
#if NET6_0_OR_GREATER
?
#endif
AddedWho
{ get; set; }
[Column("ADDED_WHEN", TypeName = "datetime")] [Column("ADDED_WHEN", TypeName = "datetime")]
[DefaultValue("GETDATE()")] [DefaultValue("GETDATE()")]

View File

@@ -8,7 +8,11 @@ namespace DigitalData.UserManager.Domain.Entities
public class Group : BaseEntity public class Group : BaseEntity
{ {
[StringLength(50)] [StringLength(50)]
public string? Name { get; set; } public string
#if NET6_0_OR_GREATER
?
#endif
Name { get; set; }
[Required] [Required]
[DefaultValue(false)] [DefaultValue(false)]
@@ -24,12 +28,17 @@ namespace DigitalData.UserManager.Domain.Entities
public bool Active { get; set; } public bool Active { get; set; }
[StringLength(200)] [StringLength(200)]
public string? Comment { get; set; } public string
#if NET6_0_OR_GREATER
?
#endif
Comment
{ get; set; }
// TODO: this column should be assigned by triggers. despite this it is not null and this is problem for creation. talk with others // TODO: this column should be assigned by triggers. despite this it is not null and this is problem for creation. talk with others
[Required] [Required]
[Column("ECM_FK_ID")] [Column("ECM_FK_ID")]
[DefaultValue(-1)] [DefaultValue(-1)]
public int EcmFkId { get; init; } = -1; public int EcmFkId { get; set; } = -1;
} }
} }

View File

@@ -15,12 +15,24 @@ namespace DigitalData.UserManager.Domain.Entities
public int GroupId { get; set; } public int GroupId { get; set; }
[StringLength(200)] [StringLength(200)]
public string? Comment { get; set; } public string
#if NET6_0_OR_GREATER
?
#endif
Comment { get; set; }
[ForeignKey("UserId")] [ForeignKey("UserId")]
public virtual User? User { get; set; } public virtual User
#if NET6_0_OR_GREATER
?
#endif
User { get; set; }
[ForeignKey("GroupId")] [ForeignKey("GroupId")]
public virtual Group? Group { get; set; } public virtual Group
#if NET6_0_OR_GREATER
?
#endif
Group { get; set; }
} }
} }

View File

@@ -1,11 +1,10 @@
using DigitalData.Core.Abstractions; using System.ComponentModel.DataAnnotations;
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_MODULES", Schema = "dbo")] [Table("TBDD_MODULES", Schema = "dbo")]
public class Module : IUnique<int> public class Module
{ {
[Column("GUID")] [Column("GUID")]
[Key] [Key]
@@ -13,11 +12,19 @@ namespace DigitalData.UserManager.Domain.Entities
public int Id { get; set; } public int Id { get; set; }
[StringLength(50)] [StringLength(50)]
public string? Name { get; set; } public string
#if NET6_0_OR_GREATER
?
#endif
Name { get; set; }
[StringLength(20)] [StringLength(20)]
[Column("SHORT_NAME")] [Column("SHORT_NAME")]
public string? ShortName { get; set; } public string
#if NET6_0_OR_GREATER
?
#endif
ShortName { get; set; }
#region IGNORED COLUMNS #region IGNORED COLUMNS
//[Required] //[Required]

View File

@@ -1,11 +1,10 @@
using DigitalData.Core.Abstractions; using System.ComponentModel.DataAnnotations;
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_USER_MODULES", Schema = "dbo")] [Table("TBDD_USER_MODULES", Schema = "dbo")]
public class ModuleOfUser : IUnique<int> public class ModuleOfUser
{ {
[Column("GUID")] [Column("GUID")]
[Key] [Key]
@@ -22,21 +21,41 @@ namespace DigitalData.UserManager.Domain.Entities
[Column("COMMENT")] [Column("COMMENT")]
[StringLength(200)] [StringLength(200)]
public string? Comment { get; set; } public string
#if NET6_0_OR_GREATER
?
#endif
Comment { get; set; }
[Column("ADDED_WHO")] [Column("ADDED_WHO")]
[StringLength(50)] [StringLength(50)]
public string? AddedWho { get; set; } = "DEFAULT"; public string
#if NET6_0_OR_GREATER
?
#endif
AddedWho { get; set; } = "DEFAULT";
[Column("CHANGED_WHO")] [Column("CHANGED_WHO")]
[StringLength(50)] [StringLength(50)]
public string? ChangedWho { get; set; } public string
#if NET6_0_OR_GREATER
?
#endif
ChangedWho { get; set; }
[ForeignKey("UserId")] [ForeignKey("UserId")]
public virtual User? User { get; set; } public virtual User
#if NET6_0_OR_GREATER
?
#endif
User { get; set; }
[ForeignKey("ModuleId")] [ForeignKey("ModuleId")]
public virtual Module? Module { get; set; } public virtual Module
#if NET6_0_OR_GREATER
?
#endif
Module { get; set; }
#region IGNORED COLUMNS #region IGNORED COLUMNS
//public bool IsAdmin { get; set; } //public bool IsAdmin { get; set; }
@@ -54,5 +73,4 @@ namespace DigitalData.UserManager.Domain.Entities
//public DateTime? ChangedWhen { get; set; } //public DateTime? ChangedWhen { get; set; }
#endregion #endregion
} }
} }

View File

@@ -9,11 +9,19 @@ namespace DigitalData.UserManager.Domain.Entities
{ {
[Column("PRENAME")] [Column("PRENAME")]
[StringLength(50)] [StringLength(50)]
public string? Prename { get; set; } public string
#if NET6_0_OR_GREATER
?
#endif
Prename { get; set; }
[Column("NAME")] [Column("NAME")]
[StringLength(50)] [StringLength(50)]
public string? Name { get; set; } public string
#if NET6_0_OR_GREATER
?
#endif
Name { get; set; }
[Required] [Required]
[Column("USERNAME")] [Column("USERNAME")]
@@ -22,21 +30,38 @@ namespace DigitalData.UserManager.Domain.Entities
[Column("SHORTNAME")] [Column("SHORTNAME")]
[StringLength(30)] [StringLength(30)]
public string? Shortname { get; set; } public string
#if NET6_0_OR_GREATER
?
#endif
Shortname
{ get; set; }
[Column("EMAIL")] [Column("EMAIL")]
[StringLength(100)] [StringLength(100)]
public string? Email { get; set; } public string
#if NET6_0_OR_GREATER
?
#endif
Email { get; set; }
[Required] [Required]
[Column("LANGUAGE")] [Column("LANGUAGE")]
[StringLength(5)] [StringLength(5)]
[DefaultValue("de-DE")] [DefaultValue("de-DE")]
public string Language { get; set; } public string
#if NET6_0_OR_GREATER
?
#endif
Language { get; set; }
[Column("COMMENT")] [Column("COMMENT")]
[StringLength(500)] [StringLength(500)]
public string? Comment { get; set; } public string
#if NET6_0_OR_GREATER
?
#endif
Comment { get; set; }
[Column("DELETED")] [Column("DELETED")]
public bool Deleted { get; set; } public bool Deleted { get; set; }

View File

@@ -1,5 +1,7 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations.Schema; #if NETFRAMEWORK
using System;
#endif
namespace DigitalData.UserManager.Domain.Entities namespace DigitalData.UserManager.Domain.Entities
{ {
@@ -25,15 +27,31 @@ namespace DigitalData.UserManager.Domain.Entities
public DateTime? ValidTo { get; set; } public DateTime? ValidTo { get; set; }
[ForeignKey("UserId")] [ForeignKey("UserId")]
public virtual User? User { get; set; } public virtual User
#if NET6_0_OR_GREATER
?
#endif
User { get; set; }
[ForeignKey("RepGroupId")] [ForeignKey("RepGroupId")]
public virtual Group? RepGroup { get; set; } public virtual Group
#if NET6_0_OR_GREATER
?
#endif
RepGroup { get; set; }
[ForeignKey("GroupId")] [ForeignKey("GroupId")]
public virtual Group? Group { get; set; } public virtual Group
#if NET6_0_OR_GREATER
?
#endif
Group { get; set; }
[ForeignKey("RepUserId")] [ForeignKey("RepUserId")]
public virtual User? RepUser { get; set; } public virtual User
#if NET6_0_OR_GREATER
?
#endif
RepUser { get; set; }
} }
} }

View File

@@ -26,7 +26,8 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="DigitalData.Core.Infrastructure" Version="2.0.1" /> <PackageReference Include="DigitalData.Core.Abstraction.Application" Version="1.0.0" />
<PackageReference Include="DigitalData.Core.Infrastructure" Version="2.1.1" />
</ItemGroup> </ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net7.0'"> <ItemGroup Condition="'$(TargetFramework)' == 'net7.0'">
@@ -40,7 +41,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net9.0'"> <ItemGroup Condition="'$(TargetFramework)' == 'net9.0'">
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.4" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="9.0.4" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="9.0.4" />
</ItemGroup> </ItemGroup>

View File

@@ -42,8 +42,8 @@ Global
{07CCD651-647C-49F7-9715-30CEBC13710D}.Debug|Any CPU.Build.0 = Debug|Any CPU {07CCD651-647C-49F7-9715-30CEBC13710D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{07CCD651-647C-49F7-9715-30CEBC13710D}.Release|Any CPU.ActiveCfg = Release|Any CPU {07CCD651-647C-49F7-9715-30CEBC13710D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{07CCD651-647C-49F7-9715-30CEBC13710D}.Release|Any CPU.Build.0 = Release|Any CPU {07CCD651-647C-49F7-9715-30CEBC13710D}.Release|Any CPU.Build.0 = Release|Any CPU
{7E5FD115-EE6D-48F2-ACF1-E951EC071073}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7E5FD115-EE6D-48F2-ACF1-E951EC071073}.Debug|Any CPU.ActiveCfg = Release|Any CPU
{7E5FD115-EE6D-48F2-ACF1-E951EC071073}.Debug|Any CPU.Build.0 = Debug|Any CPU {7E5FD115-EE6D-48F2-ACF1-E951EC071073}.Debug|Any CPU.Build.0 = Release|Any CPU
{7E5FD115-EE6D-48F2-ACF1-E951EC071073}.Release|Any CPU.ActiveCfg = Release|Any CPU {7E5FD115-EE6D-48F2-ACF1-E951EC071073}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7E5FD115-EE6D-48F2-ACF1-E951EC071073}.Release|Any CPU.Build.0 = Release|Any CPU {7E5FD115-EE6D-48F2-ACF1-E951EC071073}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection