From 3fbf6ad3df14a8e7c2b20ef3d07964dc9f61ec3b Mon Sep 17 00:00:00 2001 From: Mika Herrmann Date: Wed, 21 Feb 2024 14:23:43 +0100 Subject: [PATCH] Add GetDeletionProcesses Query --- .../GetDeletionProcessesQuery.cs | 7 +++++ .../GetDeletionProcessesResponse.cs | 15 +++++++++++ .../Queries/GetDeletionProcesses/Handler.cs | 27 +++++++++++++++++++ .../Controllers/IdentitiesController.cs | 9 +++++++ 4 files changed, 58 insertions(+) create mode 100644 Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcesses/GetDeletionProcessesQuery.cs create mode 100644 Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcesses/GetDeletionProcessesResponse.cs create mode 100644 Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcesses/Handler.cs diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcesses/GetDeletionProcessesQuery.cs b/Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcesses/GetDeletionProcessesQuery.cs new file mode 100644 index 0000000000..026d8826b9 --- /dev/null +++ b/Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcesses/GetDeletionProcessesQuery.cs @@ -0,0 +1,7 @@ +using MediatR; + +namespace Backbone.Modules.Devices.Application.Identities.Queries.GetDeletionProcesses; + +public class GetDeletionProcessesQuery : IRequest +{ +} diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcesses/GetDeletionProcessesResponse.cs b/Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcesses/GetDeletionProcessesResponse.cs new file mode 100644 index 0000000000..1b5a327e3a --- /dev/null +++ b/Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcesses/GetDeletionProcessesResponse.cs @@ -0,0 +1,15 @@ +using Backbone.Modules.Devices.Application.DTOs; +using Backbone.Modules.Devices.Domain.Entities.Identities; + +namespace Backbone.Modules.Devices.Application.Identities.Queries.GetDeletionProcesses; +public class GetDeletionProcessesResponse +{ + public GetDeletionProcessesResponse(Identity identity) + { + DeletionProcesses = identity.DeletionProcesses + .Select(p => new IdentityDeletionProcessDTO(p)) + .ToList(); + } + + public List DeletionProcesses { get; set; } +} diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcesses/Handler.cs b/Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcesses/Handler.cs new file mode 100644 index 0000000000..82efe81c18 --- /dev/null +++ b/Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcesses/Handler.cs @@ -0,0 +1,27 @@ +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; +using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Domain.Entities.Identities; +using MediatR; + +namespace Backbone.Modules.Devices.Application.Identities.Queries.GetDeletionProcesses; + +public class Handler : IRequestHandler +{ + private readonly IIdentitiesRepository _identityRepository; + private readonly IUserContext _userContext; + + public Handler(IIdentitiesRepository identityRepository, IUserContext userContext) + { + _identityRepository = identityRepository; + _userContext = userContext; + } + + public async Task Handle(GetDeletionProcessesQuery request, CancellationToken cancellationToken) + { + var identity = await _identityRepository.FindByAddress(_userContext.GetAddress(), cancellationToken) ?? throw new NotFoundException(nameof(Identity)); + var response = new GetDeletionProcessesResponse(identity); + + return response; + } +} diff --git a/Modules/Devices/src/Devices.ConsumerApi/Controllers/IdentitiesController.cs b/Modules/Devices/src/Devices.ConsumerApi/Controllers/IdentitiesController.cs index fc0647a196..834cf3547d 100644 --- a/Modules/Devices/src/Devices.ConsumerApi/Controllers/IdentitiesController.cs +++ b/Modules/Devices/src/Devices.ConsumerApi/Controllers/IdentitiesController.cs @@ -7,6 +7,7 @@ using Backbone.Modules.Devices.Application.Identities.Commands.CreateIdentity; using Backbone.Modules.Devices.Application.Identities.Commands.StartDeletionProcessAsOwner; using Backbone.Modules.Devices.Application.Identities.Queries.GetDeletionProcess; +using Backbone.Modules.Devices.Application.Identities.Queries.GetDeletionProcesses; using Backbone.Modules.Devices.Infrastructure.OpenIddict; using MediatR; using Microsoft.AspNetCore.Authorization; @@ -86,6 +87,14 @@ public async Task GetDeletionProcess([FromRoute] string id, Cance var response = await _mediator.Send(new GetDeletionProcessQuery { Id = id }, cancellationToken); return Ok(response); } + + [HttpGet("Self/DeletionProcesses")] + [ProducesResponseType(StatusCodes.Status200OK)] + public async Task GetDeletionProcesses(CancellationToken cancellationToken) + { + var response = await _mediator.Send(new GetDeletionProcessesQuery(), cancellationToken); + return Ok(response); + } } public class CreateIdentityRequest