refactor(CreateHistoryCommand); update to use EnvelopeReceiverQueryBase and related extension methods

This commit is contained in:
tekh 2025-08-27 14:41:20 +02:00
parent 1c0c23aca4
commit c456cb0301
2 changed files with 28 additions and 18 deletions

View File

@ -4,23 +4,24 @@ using EnvelopeGenerator.Domain;
using EnvelopeGenerator.Domain.Entities;
using MediatR;
using Microsoft.EntityFrameworkCore;
using EnvelopeGenerator.Application.Extensions;
namespace EnvelopeGenerator.Application.Histories.Commands;
/// <summary>
///
/// </summary>
public record CreateHistoryCommand : IRequest<long?>
public record CreateHistoryCommand: EnvelopeReceiverQueryBase, IRequest<long?>
{
/// <summary>
///
/// </summary>
public int EnvelopeId { get; set; }
public int? EnvelopeId { get; set; }
/// <summary>
///
/// </summary>
public string UserReference { get; set; } = null!;
public string? UserReference { get; set; }
/// <summary>
///
@ -41,16 +42,6 @@ public record CreateHistoryCommand : IRequest<long?>
///
/// </summary>
public string? Comment { get; set; }
/// <summary>
///
/// </summary>
public EnvelopeQueryBase? Envelope { get; init; }
/// <summary>
/// /
/// </summary>
public ReceiverQueryBase? Receiver { get; init; }
}
/// <summary>
@ -81,9 +72,17 @@ public class CreateHistoryCommandHandler : IRequestHandler<CreateHistoryCommand,
await _repo.CreateAsync(request, cancel);
// check if created
var record = await _repo.ReadOnly()
.Where(h => h.EnvelopeId == request.EnvelopeId)
.Where(h => h.UserReference == request.UserReference)
var query = _repo.ReadOnly();
query = request.EnvelopeId is null
? query.Where(request.Envelope)
: query.Where(h => h.EnvelopeId == request.EnvelopeId);
query = request.UserReference is null
? query.Where(request.Receiver)
: query.Where(h => h.UserReference == request.UserReference);
var record = await query
.Where(h => h.ActionDate == request.ActionDate)
.SingleOrDefaultAsync(cancel);

View File

@ -1,6 +1,8 @@
using DigitalData.UserManager.Domain.Entities;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using EnvelopeGenerator.Domain.Interfaces;
#if NETFRAMEWORK
using System;
#endif
@ -13,7 +15,7 @@ namespace EnvelopeGenerator.Domain.Entities
#endif
[Table("TBSIG_ENVELOPE_HISTORY", Schema = "dbo")]
public class EnvelopeHistory
public class EnvelopeHistory : IHasEnvelope, IHasReceiver
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
@ -39,7 +41,7 @@ public class EnvelopeHistory
[Column("ACTION_DATE", TypeName = "datetime")]
public DateTime? ActionDate { get; set; } = DateTime.Now;
[Column("COMMENT", TypeName = "nvarchar(max)")]
public string
#if NET
@ -47,6 +49,14 @@ public class EnvelopeHistory
#endif
Comment { get; set; }
[ForeignKey("EnvelopeId")]
public virtual Envelope
#if NET
?
#endif
Envelope { get; set; }
[ForeignKey("UserReference")]
public virtual User
#if NET
?
@ -54,6 +64,7 @@ public class EnvelopeHistory
Sender
{ get; set; }
[ForeignKey("UserReference")]
public virtual Receiver
#if NET
?