From 13acf6de08ffa9cec16e67a50403d4ffb245299c Mon Sep 17 00:00:00 2001 From: TekH Date: Wed, 30 Jul 2025 15:39:30 +0200 Subject: [PATCH] refactor: remove legacy services and controllers --- .../Controllers/ConfigController.cs | 39 ------ .../ProfileControlsTFController.cs | 81 ------------- .../Controllers/ProfileObjStateController.cs | 112 ------------------ .../Controllers/StateController.cs | 39 ------ src/WorkFlow.API/Program.cs | 8 +- src/WorkFlow.API/WorkFlow.API.csproj | 1 - .../Contracts/IConfigService.cs | 10 -- .../Contracts/IProfileControlsTFService.cs | 10 -- .../Contracts/IProfileObjStateService.cs | 15 --- .../Contracts/IStateService.cs | 10 -- .../Repositories/IButtonRepository.cs | 10 -- .../Repositories/IConfigRepository.cs | 9 -- .../IProfileControlsTFRepository.cs | 9 -- .../IProfileObjStateRepository.cs | 14 --- .../Repositories/IStateRepository.cs | 9 -- .../DependencyInjection.cs | 7 -- .../Profiles/ReadProfileQuery.cs | 8 +- .../Services/ConfigService.cs | 18 --- .../Services/ProfileControlsTFService.cs | 24 ---- .../Services/ProfileObjStateService.cs | 35 ------ .../Services/StateService.cs | 18 --- .../DependencyInjection.cs | 5 +- .../Repositories/ButtonRepository.cs | 18 --- .../Repositories/ConfigRepository.cs | 15 --- .../ProfileControlsTFRepository.cs | 14 --- .../Repositories/ProfileObjStateRepository.cs | 60 ---------- .../Repositories/StateRepository.cs | 14 --- 27 files changed, 8 insertions(+), 604 deletions(-) delete mode 100644 src/WorkFlow.API/Controllers/ConfigController.cs delete mode 100644 src/WorkFlow.API/Controllers/ProfileControlsTFController.cs delete mode 100644 src/WorkFlow.API/Controllers/ProfileObjStateController.cs delete mode 100644 src/WorkFlow.API/Controllers/StateController.cs delete mode 100644 src/WorkFlow.Application/Contracts/IConfigService.cs delete mode 100644 src/WorkFlow.Application/Contracts/IProfileControlsTFService.cs delete mode 100644 src/WorkFlow.Application/Contracts/IProfileObjStateService.cs delete mode 100644 src/WorkFlow.Application/Contracts/IStateService.cs delete mode 100644 src/WorkFlow.Application/Contracts/Repositories/IButtonRepository.cs delete mode 100644 src/WorkFlow.Application/Contracts/Repositories/IConfigRepository.cs delete mode 100644 src/WorkFlow.Application/Contracts/Repositories/IProfileControlsTFRepository.cs delete mode 100644 src/WorkFlow.Application/Contracts/Repositories/IProfileObjStateRepository.cs delete mode 100644 src/WorkFlow.Application/Contracts/Repositories/IStateRepository.cs delete mode 100644 src/WorkFlow.Application/Services/ConfigService.cs delete mode 100644 src/WorkFlow.Application/Services/ProfileControlsTFService.cs delete mode 100644 src/WorkFlow.Application/Services/ProfileObjStateService.cs delete mode 100644 src/WorkFlow.Application/Services/StateService.cs delete mode 100644 src/WorkFlow.Infrastructure/Repositories/ButtonRepository.cs delete mode 100644 src/WorkFlow.Infrastructure/Repositories/ConfigRepository.cs delete mode 100644 src/WorkFlow.Infrastructure/Repositories/ProfileControlsTFRepository.cs delete mode 100644 src/WorkFlow.Infrastructure/Repositories/ProfileObjStateRepository.cs delete mode 100644 src/WorkFlow.Infrastructure/Repositories/StateRepository.cs diff --git a/src/WorkFlow.API/Controllers/ConfigController.cs b/src/WorkFlow.API/Controllers/ConfigController.cs deleted file mode 100644 index cd7e54d..0000000 --- a/src/WorkFlow.API/Controllers/ConfigController.cs +++ /dev/null @@ -1,39 +0,0 @@ -using DigitalData.Core.API; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using WorkFlow.API.Attributes; -using WorkFlow.Application.Contracts; -using WorkFlow.Application.Dto.Config; -using WorkFlow.Domain.Entities; - -namespace WorkFlow.API.Controllers; - -[APIKeyAuth] -[Route("api/[controller]")] -[ApiController] -[Authorize] -[Obsolete("Use MediatR")] -public class ConfigController : CRUDControllerBaseWithErrorHandling -{ - public ConfigController(ILogger logger, IConfigService service) : base(logger, service) - { - } - - [NonAction] - public override Task Create(ConfigCreateDto createDto) - { - return base.Create(createDto); - } - - [NonAction] - public override Task Update(ConfigUpdateDto updateDto) - { - return base.Update(updateDto); - } - - [NonAction] - public override Task Delete([FromRoute] int id) - { - return base.Delete(id); - } -} \ No newline at end of file diff --git a/src/WorkFlow.API/Controllers/ProfileControlsTFController.cs b/src/WorkFlow.API/Controllers/ProfileControlsTFController.cs deleted file mode 100644 index 17d4bf2..0000000 --- a/src/WorkFlow.API/Controllers/ProfileControlsTFController.cs +++ /dev/null @@ -1,81 +0,0 @@ -using DigitalData.Core.Abstraction.Application.DTO; -using DigitalData.Core.API; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using WorkFlow.API.Attributes; -using WorkFlow.Application.Contracts; -using WorkFlow.Application.Dto.ProfileControlsTF; -using WorkFlow.Domain.Entities; - -namespace WorkFlow.API.Controllers; - -[APIKeyAuth] -[Route("api/[controller]")] -[ApiController] -[Authorize] -[Obsolete("Use MediatR")] -public class ProfileControlsTFController : CRUDControllerBase -{ - - public ProfileControlsTFController(ILogger logger, IProfileControlsTFService service) : base(logger, service) - { - } - - [NonAction] - public override Task GetAll() => base.GetAll(); - - [NonAction] - [HttpPut] - public override Task Update(ProfileControlsTFUpdateDto updateDto) => base.Update(updateDto); - - [NonAction] - [HttpPost] - public override async Task Create([FromBody] ProfileControlsTFCreateDto createDto) - { - try - { - if (!User.TryGetUserId(out var id)) - { - _logger.LogError("Authorization failed: User ID claim not found."); - return StatusCode(StatusCodes.Status500InternalServerError, "Failed to retrieve user identity."); - } - - if (createDto.UserId != id) - return Unauthorized(); - - return await base.Create(createDto); - } - catch (Exception ex) - { - _logger.LogError(ex, "An unexpected error occurred while processing the request: {Message}", ex.Message); - return StatusCode(StatusCodes.Status500InternalServerError, "An internal server error occurred."); - } - } - - [NonAction] - [HttpDelete] - public override async Task Delete([FromRoute] long id) - { - try - { - if (!User.TryGetUserId(out var userId)) - { - _logger.LogError("Authorization failed: User ID claim not found."); - return StatusCode(StatusCodes.Status500InternalServerError, "Failed to retrieve user identity."); - } - - return await _service.ReadByIdAsync(id).ThenAsync( - SuccessAsync: async pctf => pctf.UserId == userId ? await base.Delete(id) : Unauthorized(), - Fail: IActionResult (msg, ntc) => - { - _logger.LogNotice(ntc); - return ntc.HasFlag(Flag.NotFound) ? NotFound() : StatusCode(StatusCodes.Status500InternalServerError); - }); - } - catch (Exception ex) - { - _logger.LogError(ex, "An unexpected error occurred while processing the request: {Message}", ex.Message); - return StatusCode(StatusCodes.Status500InternalServerError, "An internal server error occurred."); - } - } -} \ No newline at end of file diff --git a/src/WorkFlow.API/Controllers/ProfileObjStateController.cs b/src/WorkFlow.API/Controllers/ProfileObjStateController.cs deleted file mode 100644 index c5cef53..0000000 --- a/src/WorkFlow.API/Controllers/ProfileObjStateController.cs +++ /dev/null @@ -1,112 +0,0 @@ -using DigitalData.Core.Abstraction.Application.DTO; -using DigitalData.Core.API; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using WorkFlow.API.Attributes; -using WorkFlow.Application.Contracts; -using WorkFlow.Application.Dto.ProfileObjState; -using WorkFlow.Domain.Entities; - -namespace WorkFlow.API.Controllers; - -[APIKeyAuth] -[Route("api/[controller]")] -[ApiController] -[Authorize] -[Obsolete("Use MediatR")] -public class ProfileObjStateController : CRUDControllerBaseWithErrorHandling -{ - private readonly ILogger logger; - - public ProfileObjStateController(ILogger logger, IProfileObjStateService service) : base(logger, service) - { - this.logger = logger; - } - - [NonAction] - public override Task GetAll() => base.GetAll(); - - [NonAction] - public override Task Update(ProfileObjStateUpdateDto updateDto) => base.Update(updateDto); - - [HttpGet] - public async Task GetAsync( - bool withProfile = true, bool withUser = true, bool withState = true, - int? profileId = null, int? objId = null, bool? profileActive = null) - { - try - { - if (!User.TryGetUserId(out var id)) - { - logger.LogError("Authorization failed: User ID claim not found."); - return Unauthorized("Failed to retrieve user identity."); - } - - return await _service.ReadAsync( - withProfile: withProfile, withUser: withUser, withState, - userId: id, - profileId: profileId, objId: objId) - .ThenAsync( - Success: pctf => pctf.Any() ? Ok(pctf) : NotFound(), - Fail: IActionResult (msg, ntc) => - { - logger.LogNotice(ntc); - return NotFound(); - }); - } - catch (Exception ex) - { - logger.LogError(ex, "An unexpected error occurred while processing the request: {Message}", ex.Message); - return StatusCode(StatusCodes.Status500InternalServerError, "An internal server error occurred."); - } - } - - [HttpPost] - public override async Task Create([FromBody] ProfileObjStateCreateDto createDto) - { - try - { - if (!User.TryGetUserId(out var id)) - { - logger.LogError("Authorization failed: User ID claim not found."); - return StatusCode(StatusCodes.Status500InternalServerError, "Failed to retrieve user identity."); - } - - if (createDto.UserId != id) - return Unauthorized(); - - return await base.Create(createDto); - } - catch (Exception ex) - { - logger.LogError(ex, "An unexpected error occurred while processing the request: {Message}", ex.Message); - return StatusCode(StatusCodes.Status500InternalServerError, "An internal server error occurred."); - } - } - - [HttpDelete] - public override async Task Delete([FromRoute] long id) - { - try - { - if (!User.TryGetUserId(out var userId)) - { - logger.LogError("Authorization failed: User ID claim not found."); - return StatusCode(StatusCodes.Status500InternalServerError, "Failed to retrieve user identity."); - } - - return await _service.ReadByIdAsync(id).ThenAsync( - SuccessAsync: async pctf => pctf.UserId == userId ? await base.Delete(id) : Unauthorized(), - Fail: IActionResult (msg, ntc) => - { - _logger.LogNotice(ntc); - return ntc.HasFlag(Flag.NotFound) ? NotFound() : StatusCode(StatusCodes.Status500InternalServerError); - }); - } - catch (Exception ex) - { - logger.LogError(ex, "An unexpected error occurred while processing the request: {Message}", ex.Message); - return StatusCode(StatusCodes.Status500InternalServerError, "An internal server error occurred."); - } - } -} \ No newline at end of file diff --git a/src/WorkFlow.API/Controllers/StateController.cs b/src/WorkFlow.API/Controllers/StateController.cs deleted file mode 100644 index a43f38a..0000000 --- a/src/WorkFlow.API/Controllers/StateController.cs +++ /dev/null @@ -1,39 +0,0 @@ -using DigitalData.Core.API; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using WorkFlow.API.Attributes; -using WorkFlow.Application.Contracts; -using WorkFlow.Application.Dto.State; -using WorkFlow.Domain.Entities; - -namespace WorkFlow.API.Controllers; - -[APIKeyAuth] -[Route("api/[controller]")] -[ApiController] -[Authorize] -[Obsolete("Use MediatR")] -public class StateController : CRUDControllerBaseWithErrorHandling -{ - public StateController(ILogger logger, IStateService service) : base(logger, service) - { - } - - [NonAction] - public override Task Create(StateCreateDto createDto) - { - return base.Create(createDto); - } - - [NonAction] - public override Task Update(StateUpdateDto updateDto) - { - return base.Update(updateDto); - } - - [NonAction] - public override Task Delete([FromRoute] int id) - { - return base.Delete(id); - } -} \ No newline at end of file diff --git a/src/WorkFlow.API/Program.cs b/src/WorkFlow.API/Program.cs index 1777b98..585c404 100644 --- a/src/WorkFlow.API/Program.cs +++ b/src/WorkFlow.API/Program.cs @@ -1,7 +1,6 @@ using WorkFlow.Application; using Microsoft.EntityFrameworkCore; using WorkFlow.Infrastructure; -using DigitalData.Core.API; using DigitalData.Core.Application; using DigitalData.UserManager.Application.DTOs.User; using Microsoft.IdentityModel.Tokens; @@ -51,14 +50,13 @@ try builder.Services.AddUserManager(); - builder.Services.AddCookieBasedLocalizer(); builder.Services.AddDirectorySearchService(config.GetSection("DirectorySearchOptions")); builder.Services.AddJWTService(user => new SecurityTokenDescriptor() { Claims = user.ToClaimList().ToDictionary(claim => claim.Type, claim => claim.Value as object) }); - bool disableAPIKeyAuth = config.GetValue("DisableAPIKeyAuth") && builder.IsDevOrDiP(); + bool disableAPIKeyAuth = config.GetValue("DisableAPIKeyAuth"); if (disableAPIKeyAuth) builder.Services.AddAPIKeyAuth(new APIKeyAuthOptions()); else @@ -153,7 +151,7 @@ try lazyProvider.Factory = () => app.Services; // Configure the HTTP request pipeline. - if (app.IsDevOrDiP() && app.Configuration.GetValue("EnableSwagger")) + if (app.Configuration.GetValue("EnableSwagger")) { app.UseSwagger(); app.UseSwaggerUI(); @@ -165,8 +163,6 @@ try app.UseAuthorization(); - app.UseCookieBasedLocalizer("de-DE"); - app.MapControllers(); app.Run(); diff --git a/src/WorkFlow.API/WorkFlow.API.csproj b/src/WorkFlow.API/WorkFlow.API.csproj index c566ac3..724afc4 100644 --- a/src/WorkFlow.API/WorkFlow.API.csproj +++ b/src/WorkFlow.API/WorkFlow.API.csproj @@ -22,7 +22,6 @@ - diff --git a/src/WorkFlow.Application/Contracts/IConfigService.cs b/src/WorkFlow.Application/Contracts/IConfigService.cs deleted file mode 100644 index e5fe1e9..0000000 --- a/src/WorkFlow.Application/Contracts/IConfigService.cs +++ /dev/null @@ -1,10 +0,0 @@ -using DigitalData.Core.Abstraction.Application; -using WorkFlow.Application.Dto.Config; -using WorkFlow.Domain.Entities; - -namespace WorkFlow.Application.Contracts; - -[Obsolete("Use MediatR")] -public interface IConfigService : ICRUDService -{ -} \ No newline at end of file diff --git a/src/WorkFlow.Application/Contracts/IProfileControlsTFService.cs b/src/WorkFlow.Application/Contracts/IProfileControlsTFService.cs deleted file mode 100644 index 704a355..0000000 --- a/src/WorkFlow.Application/Contracts/IProfileControlsTFService.cs +++ /dev/null @@ -1,10 +0,0 @@ -using DigitalData.Core.Abstraction.Application; -using WorkFlow.Application.Dto.ProfileControlsTF; -using WorkFlow.Domain.Entities; - -namespace WorkFlow.Application.Contracts; - -[Obsolete("Use MediatR")] -public interface IProfileControlsTFService : ICRUDService -{ -} \ No newline at end of file diff --git a/src/WorkFlow.Application/Contracts/IProfileObjStateService.cs b/src/WorkFlow.Application/Contracts/IProfileObjStateService.cs deleted file mode 100644 index 9ebf7c9..0000000 --- a/src/WorkFlow.Application/Contracts/IProfileObjStateService.cs +++ /dev/null @@ -1,15 +0,0 @@ -using DigitalData.Core.Abstraction.Application; -using DigitalData.Core.Abstraction.Application.DTO; -using WorkFlow.Application.Dto.ProfileObjState; -using WorkFlow.Domain.Entities; - -namespace WorkFlow.Application.Contracts; - -[Obsolete("Use MediatR")] -public interface IProfileObjStateService : ICRUDService -{ - Task>> ReadAsync( - bool withProfile = true, bool withUser = true, bool withState = true, - int? userId = null, string? username = null, - int? profileId = null, int? objId = null); -} \ No newline at end of file diff --git a/src/WorkFlow.Application/Contracts/IStateService.cs b/src/WorkFlow.Application/Contracts/IStateService.cs deleted file mode 100644 index 979556d..0000000 --- a/src/WorkFlow.Application/Contracts/IStateService.cs +++ /dev/null @@ -1,10 +0,0 @@ -using DigitalData.Core.Abstraction.Application; -using WorkFlow.Application.Dto.State; -using WorkFlow.Domain.Entities; - -namespace WorkFlow.Application.Contracts; - -[Obsolete("Use MediatR")] -public interface IStateService : ICRUDService -{ -} \ No newline at end of file diff --git a/src/WorkFlow.Application/Contracts/Repositories/IButtonRepository.cs b/src/WorkFlow.Application/Contracts/Repositories/IButtonRepository.cs deleted file mode 100644 index e9be586..0000000 --- a/src/WorkFlow.Application/Contracts/Repositories/IButtonRepository.cs +++ /dev/null @@ -1,10 +0,0 @@ -using DigitalData.Core.Abstraction.Application.Repository; -using WorkFlow.Domain.Entities; - -namespace WorkFlow.Application.Contracts.Repositories; - -[Obsolete("Use IRepository")] -public interface IButtonRepository : ICRUDRepository -{ - public Task> ReadAllAsync(int profileId); -} \ No newline at end of file diff --git a/src/WorkFlow.Application/Contracts/Repositories/IConfigRepository.cs b/src/WorkFlow.Application/Contracts/Repositories/IConfigRepository.cs deleted file mode 100644 index 6e61dfc..0000000 --- a/src/WorkFlow.Application/Contracts/Repositories/IConfigRepository.cs +++ /dev/null @@ -1,9 +0,0 @@ -using DigitalData.Core.Abstraction.Application.Repository; -using WorkFlow.Domain.Entities; - -namespace WorkFlow.Application.Contracts.Repositories; - -[Obsolete("Use IRepository")] -public interface IConfigRepository : ICRUDRepository -{ -} \ No newline at end of file diff --git a/src/WorkFlow.Application/Contracts/Repositories/IProfileControlsTFRepository.cs b/src/WorkFlow.Application/Contracts/Repositories/IProfileControlsTFRepository.cs deleted file mode 100644 index b927058..0000000 --- a/src/WorkFlow.Application/Contracts/Repositories/IProfileControlsTFRepository.cs +++ /dev/null @@ -1,9 +0,0 @@ -using DigitalData.Core.Abstraction.Application.Repository; -using WorkFlow.Domain.Entities; - -namespace WorkFlow.Application.Contracts.Repositories; - -[Obsolete("Use IRepository")] -public interface IProfileControlsTFRepository : ICRUDRepository -{ -} \ No newline at end of file diff --git a/src/WorkFlow.Application/Contracts/Repositories/IProfileObjStateRepository.cs b/src/WorkFlow.Application/Contracts/Repositories/IProfileObjStateRepository.cs deleted file mode 100644 index f078f5d..0000000 --- a/src/WorkFlow.Application/Contracts/Repositories/IProfileObjStateRepository.cs +++ /dev/null @@ -1,14 +0,0 @@ -using DigitalData.Core.Abstraction.Application.Repository; -using WorkFlow.Domain.Entities; - -namespace WorkFlow.Application.Contracts.Repositories; - -[Obsolete("Use IRepository")] -public interface IProfileObjStateRepository : ICRUDRepository -{ - Task> ReadAsync( - bool isReadonly = true, - bool withProfile = true, bool withUser = true, bool withState = true, - int? userId = null, string? username = null, - int? profileId = null, int? objId = null); -} \ No newline at end of file diff --git a/src/WorkFlow.Application/Contracts/Repositories/IStateRepository.cs b/src/WorkFlow.Application/Contracts/Repositories/IStateRepository.cs deleted file mode 100644 index 4af9f48..0000000 --- a/src/WorkFlow.Application/Contracts/Repositories/IStateRepository.cs +++ /dev/null @@ -1,9 +0,0 @@ -using DigitalData.Core.Abstraction.Application.Repository; -using WorkFlow.Domain.Entities; - -namespace WorkFlow.Application.Contracts.Repositories; - -[Obsolete("Use IRepository")] -public interface IStateRepository : ICRUDRepository -{ -} \ No newline at end of file diff --git a/src/WorkFlow.Application/DependencyInjection.cs b/src/WorkFlow.Application/DependencyInjection.cs index 0c46e73..80fd0c5 100644 --- a/src/WorkFlow.Application/DependencyInjection.cs +++ b/src/WorkFlow.Application/DependencyInjection.cs @@ -1,7 +1,4 @@ using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.DependencyInjection.Extensions; -using WorkFlow.Application.Contracts; -using WorkFlow.Application.Services; namespace WorkFlow.Application; @@ -14,10 +11,6 @@ public static class DependencyInjection options?.Invoke(diOptions); services.AddAutoMapper(typeof(MappingProfile).Assembly); - services.TryAddScoped(); - services.TryAddScoped(); - services.TryAddScoped(); - services.TryAddScoped(); services.AddMediatR(cfg => { cfg.RegisterServicesFromAssembly(typeof(DependencyInjection).Assembly); diff --git a/src/WorkFlow.Application/Profiles/ReadProfileQuery.cs b/src/WorkFlow.Application/Profiles/ReadProfileQuery.cs index d4702a0..6717d61 100644 --- a/src/WorkFlow.Application/Profiles/ReadProfileQuery.cs +++ b/src/WorkFlow.Application/Profiles/ReadProfileQuery.cs @@ -1,8 +1,10 @@ using AutoMapper; +using DigitalData.Core.Abstraction.Application.Repository; using MediatR; using WorkFlow.Application.Buttons; using WorkFlow.Application.Contracts.Repositories; using WorkFlow.Application.Dto; +using WorkFlow.Domain.Entities; namespace WorkFlow.Application.Profiles; @@ -22,7 +24,7 @@ public class ReadProfileHandler : IRequestHandler private readonly IProfileObjRepository _objRepository; - private readonly IButtonRepository _bttnRepository; + private readonly IRepository