Refactor EnvelopeStatus usage and streamline code

- Added `EnvelopeGenerator.Domain.Constants` in multiple files, replacing `Domain.Constants.EnvelopeStatus` with `EnvelopeStatus` for improved readability.
- Modified `CreateEnvelopeCommandHandler.cs` to directly use `request.UserId`, eliminating unnecessary local variable assignment.
- Identified potential duplication in query logic within `ReceiverAlreadySignedQuery.cs`.
- Updated `IEnvelopeService`, `EnvelopeReceiverService`, and `EnvelopeService` to ensure consistent usage of the simplified `EnvelopeStatus`.
- Overall, these changes enhance code maintainability and clarity.
This commit is contained in:
tekh 2025-09-01 11:11:30 +02:00
parent ef7e694c9f
commit 48ce0d5f32
9 changed files with 20 additions and 21 deletions

View File

@ -2,10 +2,10 @@
using DigitalData.Core.Abstraction.Application.Repository;
using EnvelopeGenerator.Application.Dto;
using DigitalData.Core.Exceptions;
using EnvelopeGenerator.Domain;
using EnvelopeGenerator.Domain.Entities;
using MediatR;
using Microsoft.EntityFrameworkCore;
using EnvelopeGenerator.Domain.Constants;
namespace EnvelopeGenerator.Application.EmailTemplates.Commands.Update;

View File

@ -1,6 +1,6 @@
using AutoMapper;
using EnvelopeGenerator.Application.Interfaces.Repositories;
using EnvelopeGenerator.Domain;
using EnvelopeGenerator.Domain.Constants;
using MediatR;
namespace EnvelopeGenerator.Application.EmailTemplates.Queries.Read;

View File

@ -1,11 +1,10 @@
using DigitalData.Core.Abstraction.Application.Repository;
using DigitalData.Core.Exceptions;
using EnvelopeGenerator.Application.Model;
using EnvelopeGenerator.Domain;
using EnvelopeGenerator.Domain.Entities;
using EnvelopeGenerator.Application.Extensions;
using MediatR;
using Microsoft.EntityFrameworkCore;
using EnvelopeGenerator.Domain.Constants;
namespace EnvelopeGenerator.Application.EnvelopeReceivers.Queries;
@ -70,9 +69,9 @@ public class ReceiverAlreadySignedQueryHandler : IRequestHandler<ReceiverAlready
public async Task<bool> Handle(ReceiverAlreadySignedQuery request, CancellationToken cancel = default)
{
return await _repo.Read()
.Where(er => er.Envelope.Uuid == request.Envelope.Uuid)
.Where(er => er.Receiver.Signature == request.Receiver.Signature)
.Where(er => er.Envelope.History.Any(hist => hist.Status == EnvelopeStatus.DocumentSigned))
.Where(er => er.Envelope!.Uuid == request.Envelope.Uuid)
.Where(er => er.Receiver!.Signature == request.Receiver.Signature)
.Where(er => er.Envelope!.History.Any(hist => hist.Status == EnvelopeStatus.DocumentSigned))
.AnyAsync(cancel);
}
}

View File

@ -33,9 +33,7 @@ public class CreateEnvelopeCommandHandler : IRequestHandler<CreateEnvelopeComman
/// <returns></returns>
public async Task<EnvelopeDto?> Handle(CreateEnvelopeCommand request, CancellationToken cancellationToken)
{
int userId = request.UserId ?? throw new InvalidOperationException("UserId cannot be null when creating an envelope.");
var envelope = await _envelopeExecutor.CreateEnvelopeAsync(userId, request.Title, request.Message, request.TFAEnabled, cancellationToken);
var envelope = await _envelopeExecutor.CreateEnvelopeAsync(request.UserId, request.Title, request.Message, request.TFAEnabled, cancellationToken);
return _mapper.Map<EnvelopeDto>(envelope);
}

View File

@ -1,5 +1,6 @@
using MediatR;
using EnvelopeGenerator.Application.Model;
using EnvelopeGenerator.Domain.Constants;
namespace EnvelopeGenerator.Application.Envelopes.Queries;
@ -48,20 +49,20 @@ public record EnvelopeStatusQuery
/// <summary>
/// Der minimale Statuswert, der berücksichtigt werden.
/// </summary>
public Domain.Constants.EnvelopeStatus? Min { get; init; }
public EnvelopeStatus? Min { get; init; }
/// <summary>
/// Der maximale Statuswert, der berücksichtigt werden.
/// </summary>
public Domain.Constants.EnvelopeStatus? Max { get; init; }
public EnvelopeStatus? Max { get; init; }
/// <summary>
/// Eine Liste von Statuswerten, die einbezogen werden.
/// </summary>
public Domain.Constants.EnvelopeStatus[]? Include { get; init; }
public EnvelopeStatus[]? Include { get; init; }
/// <summary>
/// Eine Liste von Statuswerten, die ignoriert werden werden.
/// </summary>
public Domain.Constants.EnvelopeStatus[]? Ignore { get; init; }
public EnvelopeStatus[]? Ignore { get; init; }
}

View File

@ -1,7 +1,7 @@
using DigitalData.Core.Abstraction.Application;
using DigitalData.Core.Abstraction.Application.DTO;
using EnvelopeGenerator.Application.Dto;
using EnvelopeGenerator.Application.Envelopes.Queries;
using EnvelopeGenerator.Domain.Constants;
using EnvelopeGenerator.Domain.Entities;
namespace EnvelopeGenerator.Application.Interfaces.Services;
@ -41,5 +41,5 @@ public interface IEnvelopeService : IBasicCRUDService<EnvelopeDto, Envelope, int
/// <param name="max_status"></param>
/// <param name="ignore_statuses"></param>
/// <returns></returns>
Task<DataResult<IEnumerable<EnvelopeDto>>> ReadByUserAsync(int userId, Domain.Constants.EnvelopeStatus? min_status = null, Domain.Constants.EnvelopeStatus? max_status = null, params Domain.Constants.EnvelopeStatus[] ignore_statuses);
Task<DataResult<IEnumerable<EnvelopeDto>>> ReadByUserAsync(int userId, EnvelopeStatus? min_status = null, EnvelopeStatus? max_status = null, params EnvelopeStatus[] ignore_statuses);
}

View File

@ -10,11 +10,9 @@ using Microsoft.Extensions.Logging;
using EnvelopeGenerator.Application.Extensions;
using EnvelopeGenerator.Application.Dto.Messaging;
using EnvelopeGenerator.Application.Interfaces.Services;
using EnvelopeGenerator.Application.Envelopes;
using EnvelopeGenerator.Application.Envelopes.Queries;
using EnvelopeGenerator.Application.Receivers.Queries;
using System.Reflection.Metadata;
using EnvelopeGenerator.Domain;
using EnvelopeGenerator.Domain.Constants;
namespace EnvelopeGenerator.Application.Services;
@ -249,7 +247,7 @@ public class EnvelopeReceiverService : BasicCRUDService<IEnvelopeReceiverReposit
if (envelopeQuery?.Uuid is string uuid)
er_list = er_list.Where(er => er.Envelope?.Uuid == uuid);
if (envelopeQuery?.Status?.Include?.FirstOrDefault() is Domain.Constants.EnvelopeStatus status)
if (envelopeQuery?.Status?.Include?.FirstOrDefault() is EnvelopeStatus status)
er_list = er_list.Where(er => er.Envelope?.Status == status);
if(receiverQuery?.Id is int id)

View File

@ -5,6 +5,7 @@ using EnvelopeGenerator.Application.Interfaces.Services;
using EnvelopeGenerator.Application.Dto;
using EnvelopeGenerator.Domain.Entities;
using EnvelopeGenerator.Application.Interfaces.Repositories;
using EnvelopeGenerator.Domain.Constants;
namespace EnvelopeGenerator.Application.Services;
@ -67,7 +68,7 @@ public class EnvelopeService : BasicCRUDService<IEnvelopeRepository, EnvelopeDto
/// <param name="max_status"></param>
/// <param name="ignore_statuses"></param>
/// <returns></returns>
public async Task<DataResult<IEnumerable<EnvelopeDto>>> ReadByUserAsync(int userId, Domain.Constants.EnvelopeStatus? min_status = null, Domain.Constants.EnvelopeStatus? max_status = null, params Domain.Constants.EnvelopeStatus[] ignore_statuses)
public async Task<DataResult<IEnumerable<EnvelopeDto>>> ReadByUserAsync(int userId, EnvelopeStatus? min_status = null, EnvelopeStatus? max_status = null, params EnvelopeStatus[] ignore_statuses)
{
var users = await _repository.ReadByUserAsync(userId: userId, min_status: min_status, max_status: max_status, ignore_statuses: ignore_statuses);
var readDto = _mapper.Map<IEnumerable<EnvelopeDto>>(users);

View File

@ -2,6 +2,8 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using EnvelopeGenerator.Domain.Interfaces;
using EnvelopeGenerator.Domain.Constants;
#if NETFRAMEWORK
using System;