Deprecate services in favor of MediatR integration

This commit introduces the `[Obsolete("Use MediatR")]` attribute to various service fields and methods across multiple controllers and extension classes, signaling a transition to MediatR for handling requests and commands.

Key changes include:
- Marking `IEnvelopeService`, `IEnvelopeReceiverService`, and `IEnvelopeTypeService` as obsolete in their respective controllers.
- Updating `AddEnvelopeGeneratorInfrastructureServices` to utilize `IRepository`.
- Refactoring `AddCommandManagerRunner` and `CreateHost` methods to indicate obsolescence.
- Replacing `DigitalData.Core.DTO` with `DigitalData.Core.Abstraction.Application.DTO` in using directives.

These changes modernize the codebase and improve command and query handling while cleaning up service dependencies.
This commit is contained in:
tekh 2025-06-30 10:05:36 +02:00
parent e4c6714677
commit 1c90e693da
7 changed files with 37 additions and 11 deletions

View File

@ -1,4 +1,4 @@
using DigitalData.Core.DTO; using DigitalData.Core.Abstraction.Application.DTO;
using EnvelopeGenerator.Application.Contracts.Services; using EnvelopeGenerator.Application.Contracts.Services;
using EnvelopeGenerator.Application.Envelopes.Commands; using EnvelopeGenerator.Application.Envelopes.Commands;
using EnvelopeGenerator.Application.Envelopes.Queries.Read; using EnvelopeGenerator.Application.Envelopes.Queries.Read;
@ -6,8 +6,6 @@ using MediatR;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json; using Newtonsoft.Json;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations.Schema;
namespace EnvelopeGenerator.GeneratorAPI.Controllers; namespace EnvelopeGenerator.GeneratorAPI.Controllers;
@ -31,6 +29,7 @@ namespace EnvelopeGenerator.GeneratorAPI.Controllers;
public class EnvelopeController : ControllerBase public class EnvelopeController : ControllerBase
{ {
private readonly ILogger<EnvelopeController> _logger; private readonly ILogger<EnvelopeController> _logger;
[Obsolete("Use MediatR")]
private readonly IEnvelopeService _envelopeService; private readonly IEnvelopeService _envelopeService;
private readonly IMediator _mediator; private readonly IMediator _mediator;
@ -40,6 +39,7 @@ public class EnvelopeController : ControllerBase
/// <param name="logger">Der Logger, der für das Protokollieren von Informationen verwendet wird.</param> /// <param name="logger">Der Logger, der für das Protokollieren von Informationen verwendet wird.</param>
/// <param name="envelopeService">Der Dienst, der für die Verarbeitung von Umschlägen zuständig ist.</param> /// <param name="envelopeService">Der Dienst, der für die Verarbeitung von Umschlägen zuständig ist.</param>
/// <param name="mediator"></param> /// <param name="mediator"></param>
[Obsolete("Use MediatR")]
public EnvelopeController(ILogger<EnvelopeController> logger, IEnvelopeService envelopeService, IMediator mediator) public EnvelopeController(ILogger<EnvelopeController> logger, IEnvelopeService envelopeService, IMediator mediator)
{ {
_logger = logger; _logger = logger;
@ -59,6 +59,7 @@ public class EnvelopeController : ControllerBase
/// <response code="500">Ein unerwarteter Fehler ist aufgetreten.</response> /// <response code="500">Ein unerwarteter Fehler ist aufgetreten.</response>
[Authorize] [Authorize]
[HttpGet] [HttpGet]
[Obsolete("Use MediatR")]
public async Task<IActionResult> GetAsync([FromQuery] ReadEnvelopeQuery envelope) public async Task<IActionResult> GetAsync([FromQuery] ReadEnvelopeQuery envelope)
{ {
if (User.GetId() is int intId) if (User.GetId() is int intId)
@ -98,6 +99,7 @@ public class EnvelopeController : ControllerBase
/// <response code="404">Das Dokument wurde nicht gefunden oder ist nicht verfügbar.</response> /// <response code="404">Das Dokument wurde nicht gefunden oder ist nicht verfügbar.</response>
/// <response code="500">Ein unerwarteter Fehler ist aufgetreten.</response> /// <response code="500">Ein unerwarteter Fehler ist aufgetreten.</response>
[HttpGet("doc-result")] [HttpGet("doc-result")]
[Obsolete("Use MediatR")]
public async Task<IActionResult> GetDocResultAsync([FromQuery] int id, [FromQuery] bool view = false) public async Task<IActionResult> GetDocResultAsync([FromQuery] int id, [FromQuery] bool view = false)
{ {
if (User.GetId() is int intId) if (User.GetId() is int intId)
@ -154,4 +156,4 @@ public class EnvelopeController : ControllerBase
else else
return Ok(res); return Ok(res);
} }
} }

View File

@ -1,5 +1,5 @@
using AutoMapper; using AutoMapper;
using DigitalData.Core.DTO; using DigitalData.Core.Abstraction.Application.DTO;
using EnvelopeGenerator.Application.Contracts.Services; using EnvelopeGenerator.Application.Contracts.Services;
using EnvelopeGenerator.Application.Contracts.SQLExecutor; using EnvelopeGenerator.Application.Contracts.SQLExecutor;
using EnvelopeGenerator.Application.DTOs.Receiver; using EnvelopeGenerator.Application.DTOs.Receiver;
@ -31,6 +31,7 @@ public class EnvelopeReceiverController : ControllerBase
{ {
private readonly ILogger<EnvelopeReceiverController> _logger; private readonly ILogger<EnvelopeReceiverController> _logger;
[Obsolete("Use MediatR")]
private readonly IEnvelopeReceiverService _erService; private readonly IEnvelopeReceiverService _erService;
private readonly IMediator _mediator; private readonly IMediator _mediator;
@ -56,6 +57,7 @@ public class EnvelopeReceiverController : ControllerBase
/// <param name="erExecutor"></param> /// <param name="erExecutor"></param>
/// <param name="documentExecutor"></param> /// <param name="documentExecutor"></param>
/// <param name="csOpt"></param> /// <param name="csOpt"></param>
[Obsolete("Use MediatR")]
public EnvelopeReceiverController(ILogger<EnvelopeReceiverController> logger, IEnvelopeReceiverService envelopeReceiverService, IMediator mediator, IMapper mapper, IEnvelopeExecutor envelopeExecutor, IEnvelopeReceiverExecutor erExecutor, IDocumentExecutor documentExecutor, IOptions<ConnectionString> csOpt) public EnvelopeReceiverController(ILogger<EnvelopeReceiverController> logger, IEnvelopeReceiverService envelopeReceiverService, IMediator mediator, IMapper mapper, IEnvelopeExecutor envelopeExecutor, IEnvelopeReceiverExecutor erExecutor, IDocumentExecutor documentExecutor, IOptions<ConnectionString> csOpt)
{ {
_logger = logger; _logger = logger;
@ -82,6 +84,7 @@ public class EnvelopeReceiverController : ControllerBase
/// <response code="500">Ein unerwarteter Fehler ist aufgetreten.</response> /// <response code="500">Ein unerwarteter Fehler ist aufgetreten.</response>
[Authorize] [Authorize]
[HttpGet] [HttpGet]
[Obsolete("Use MediatR")]
public async Task<IActionResult> GetEnvelopeReceiver([FromQuery] ReadEnvelopeReceiverQuery envelopeReceiver) public async Task<IActionResult> GetEnvelopeReceiver([FromQuery] ReadEnvelopeReceiverQuery envelopeReceiver)
{ {
var username = User.GetUsernameOrDefault(); var username = User.GetUsernameOrDefault();
@ -123,6 +126,7 @@ public class EnvelopeReceiverController : ControllerBase
/// <response code="500">Ein unerwarteter Fehler ist aufgetreten.</response> /// <response code="500">Ein unerwarteter Fehler ist aufgetreten.</response>
[Authorize] [Authorize]
[HttpGet("salute")] [HttpGet("salute")]
[Obsolete("Use MediatR")]
public async Task<IActionResult> GetReceiverName([FromQuery] ReadReceiverNameQuery receiver) public async Task<IActionResult> GetReceiverName([FromQuery] ReadReceiverNameQuery receiver)
{ {
return await _erService.ReadLastUsedReceiverNameByMailAsync(receiver.EmailAddress, receiver.Id, receiver.Signature).ThenAsync( return await _erService.ReadLastUsedReceiverNameByMailAsync(receiver.EmailAddress, receiver.Id, receiver.Signature).ThenAsync(

View File

@ -1,23 +1,39 @@
using DigitalData.Core.DTO; using DigitalData.Core.Abstraction.Application.DTO;
using EnvelopeGenerator.Application.Contracts.Services; using EnvelopeGenerator.Application.Contracts.Services;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
namespace EnvelopeGenerator.GeneratorAPI.Controllers; namespace EnvelopeGenerator.GeneratorAPI.Controllers;
/// <summary>
///
/// </summary>
[ApiExplorerSettings(IgnoreApi = true)] [ApiExplorerSettings(IgnoreApi = true)]
[Route("api/[controller]")] [Route("api/[controller]")]
[ApiController] [ApiController]
public class EnvelopeTypeController : ControllerBase public class EnvelopeTypeController : ControllerBase
{ {
private readonly ILogger<EnvelopeTypeController> _logger; private readonly ILogger<EnvelopeTypeController> _logger;
[Obsolete("Use MediatR")]
private readonly IEnvelopeTypeService _service; private readonly IEnvelopeTypeService _service;
/// <summary>
///
/// </summary>
/// <param name="logger"></param>
/// <param name="service"></param>
[Obsolete("Use MediatR")]
public EnvelopeTypeController(ILogger<EnvelopeTypeController> logger, IEnvelopeTypeService service) public EnvelopeTypeController(ILogger<EnvelopeTypeController> logger, IEnvelopeTypeService service)
{ {
_logger = logger; _logger = logger;
_service = service; _service = service;
} }
/// <summary>
///
/// </summary>
/// <returns></returns>
[Obsolete("Use MediatR")]
[HttpGet] [HttpGet]
public async Task<IActionResult> GetAllAsync() public async Task<IActionResult> GetAllAsync()
{ {

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 EnvelopeGenerator.Application.Contracts.Services; using EnvelopeGenerator.Application.Contracts.Services;
using EnvelopeGenerator.Application.DTOs.Receiver; using EnvelopeGenerator.Application.DTOs.Receiver;
using EnvelopeGenerator.Application.Receivers.Queries.Read; using EnvelopeGenerator.Application.Receivers.Queries.Read;
@ -19,6 +19,7 @@ namespace EnvelopeGenerator.GeneratorAPI.Controllers;
[Route("api/[controller]")] [Route("api/[controller]")]
[ApiController] [ApiController]
[Authorize] [Authorize]
[Obsolete("Use MediatR")]
public class ReceiverController : CRUDControllerBaseWithErrorHandling<IReceiverService, ReceiverCreateDto, ReceiverReadDto, ReceiverUpdateDto, Receiver, int> public class ReceiverController : CRUDControllerBaseWithErrorHandling<IReceiverService, ReceiverCreateDto, ReceiverReadDto, ReceiverUpdateDto, Receiver, int>
{ {
/// <summary> /// <summary>
@ -94,4 +95,4 @@ public class ReceiverController : CRUDControllerBaseWithErrorHandling<IReceiverS
return base.GetById(id); return base.GetById(id);
} }
#endregion #endregion
} }

View File

@ -32,6 +32,7 @@ public static class DIExtensions
/// This method ensures that the repositories are registered as scoped services, meaning that a new instance of each repository /// This method ensures that the repositories are registered as scoped services, meaning that a new instance of each repository
/// will be created per HTTP request (or per scope) within the dependency injection container. /// will be created per HTTP request (or per scope) within the dependency injection container.
/// </remarks> /// </remarks>
[Obsolete("Use IRepository")]
public static IServiceCollection AddEnvelopeGeneratorInfrastructureServices(this IServiceCollection services, public static IServiceCollection AddEnvelopeGeneratorInfrastructureServices(this IServiceCollection services,
Action<IServiceProvider, DbContextOptionsBuilder>? dbContextOptions = null, Action<IServiceProvider, DbContextOptionsBuilder>? dbContextOptions = null,
IConfiguration? sqlExecutorConfiguration = null, IConfiguration? sqlExecutorConfiguration = null,
@ -157,4 +158,4 @@ public static class DIExtensions
return services; return services;
} }
} }

View File

@ -14,6 +14,7 @@ namespace EnvelopeGenerator.Terminal;
public static class DependencyInjection public static class DependencyInjection
{ {
[Obsolete("Use MediatR")]
public static IServiceCollection AddCommandManagerRunner(this IServiceCollection services, IConfiguration configuration, Case @case = Case.KebabCase, string connectionStringKeyName = "Default") public static IServiceCollection AddCommandManagerRunner(this IServiceCollection services, IConfiguration configuration, Case @case = Case.KebabCase, string connectionStringKeyName = "Default")
{ {
var connStr = configuration.GetConnectionString(connectionStringKeyName) var connStr = configuration.GetConnectionString(connectionStringKeyName)
@ -52,4 +53,4 @@ public static class DependencyInjection
} }
public static Task<int> RunCommandManagerRunner(this IHost host, string[] args) => host.Services.RunCommandManagerRunner(args); public static Task<int> RunCommandManagerRunner(this IHost host, string[] args) => host.Services.RunCommandManagerRunner(args);
} }

View File

@ -10,6 +10,7 @@ namespace EnvelopeGenerator.Tests.Application;
public class Mock public class Mock
{ {
[Obsolete("Use MediatR")]
public static IHost CreateHost(Action<HostApplicationBuilder>? builderOptions = null, string configPath = "appsettings.json", bool useRealDb = false, params string[] args) public static IHost CreateHost(Action<HostApplicationBuilder>? builderOptions = null, string configPath = "appsettings.json", bool useRealDb = false, params string[] args)
{ {
var builder = Host.CreateApplicationBuilder(args.Any() ? args : null); var builder = Host.CreateApplicationBuilder(args.Any() ? args : null);