Compare commits

...

4 Commits

Author SHA1 Message Date
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
34 changed files with 130 additions and 126 deletions

View File

@@ -21,8 +21,8 @@
</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.API" Version="2.2.0" />
<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

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,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,8 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="DigitalData.Core.Abstractions" Version="3.4.1" /> <PackageReference Include="DigitalData.Core.Application" Version="3.3.4" />
<PackageReference Include="DigitalData.Core.Application" Version="3.2.1" /> <PackageReference Include="DigitalData.EmailProfilerDispatcher.Abstraction" Version="3.1.1" />
<PackageReference Include="DigitalData.Core.DTO" Version="2.0.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

@@ -5,7 +5,7 @@
<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>
@@ -14,8 +14,8 @@
<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 maanger</PackageTags>
<AssemblyVersion>3.0.2</AssemblyVersion> <AssemblyVersion>3.1.0</AssemblyVersion>
<FileVersion>3.0.2</FileVersion> <FileVersion>3.1.0</FileVersion>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
@@ -25,8 +25,4 @@
</None> </None>
</ItemGroup> </ItemGroup>
<ItemGroup>
<PackageReference Include="DigitalData.Core.Abstractions" Version="3.4.0" />
</ItemGroup>
</Project> </Project>

View File

@@ -1,11 +1,10 @@
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;
namespace DigitalData.UserManager.Domain.Entities namespace DigitalData.UserManager.Domain.Entities
{ {
public class BaseEntity : IUnique<int> public class BaseEntity
{ {
[Column("GUID")] [Column("GUID")]
[Key] [Key]

View File

@@ -1,12 +1,11 @@
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;
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]

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]

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]

View File

@@ -2,76 +2,75 @@
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", Schema = "dbo")]
public class User : BaseEntity
{ {
[Table("TBDD_USER", Schema = "dbo")] [Column("PRENAME")]
public class User : BaseEntity [StringLength(50)]
{ public string? Prename { get; set; }
[Column("PRENAME")]
[StringLength(50)]
public string? Prename { get; set; }
[Column("NAME")] [Column("NAME")]
[StringLength(50)] [StringLength(50)]
public string? Name { get; set; } public string? Name { get; set; }
[Required] [Required]
[Column("USERNAME")] [Column("USERNAME")]
[StringLength(50)] [StringLength(50)]
public string Username { get; set; } public string Username { get; set; }
[Column("SHORTNAME")] [Column("SHORTNAME")]
[StringLength(30)] [StringLength(30)]
public string? Shortname { get; set; } public string? Shortname { get; set; }
[Column("EMAIL")] [Column("EMAIL")]
[StringLength(100)] [StringLength(100)]
public string? Email { get; set; } public string? 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 Language { get; set; }
[Column("COMMENT")] [Column("COMMENT")]
[StringLength(500)] [StringLength(500)]
public string? Comment { get; set; } public string? Comment { get; set; }
[Column("DELETED")] [Column("DELETED")]
public bool Deleted { get; set; } public bool Deleted { get; set; }
[Required] [Required]
[Column("DATE_FORMAT")] [Column("DATE_FORMAT")]
[StringLength(10)] [StringLength(10)]
[DefaultValue("dd.MM.yyyy")] [DefaultValue("dd.MM.yyyy")]
public string DateFormat { get; set; } public string DateFormat { get; set; }
[Required] [Required]
[Column("ACTIVE")] [Column("ACTIVE")]
public bool Active { get; set; } public bool Active { get; set; }
#region IGNORED COLUMNS #region IGNORED COLUMNS
//[Required] //[Required]
//[Column("GENERAL_VIEWER")] //[Column("GENERAL_VIEWER")]
//[StringLength(30)] //[StringLength(30)]
//[DefaultValue("NONE")] //[DefaultValue("NONE")]
//public string GeneralViewer { get; set; } //public string GeneralViewer { get; set; }
//[Required] //[Required]
//[Column("WAN_ENVIRONMENT")] //[Column("WAN_ENVIRONMENT")]
//public bool WanEnvironment { get; set; } //public bool WanEnvironment { get; set; }
//[Required] //[Required]
//[Column("USERID_FK_INT_ECM")] //[Column("USERID_FK_INT_ECM")]
//public int UseridFkIntEcm { get; set; } //public int UseridFkIntEcm { get; set; }
//[Column("DELETED_WHEN")] //[Column("DELETED_WHEN")]
//public DateTime? DeletedWhen { get; set; } //public DateTime? DeletedWhen { get; set; }
//[Column("DELETED_WHO")] //[Column("DELETED_WHO")]
//[StringLength(50)] //[StringLength(50)]
//public string? DeletedWho { get; set; } //public string? DeletedWho { get; set; }
#endregion #endregion
}
} }

View File

@@ -26,7 +26,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="DigitalData.Core.Infrastructure" Version="2.0.1" /> <PackageReference Include="DigitalData.Core.Infrastructure" Version="2.1.1" />
</ItemGroup> </ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net7.0'"> <ItemGroup Condition="'$(TargetFramework)' == 'net7.0'">
@@ -40,7 +40,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