diff --git a/EnvelopeGenerator.Application/Histories/Commands/CreateHistoryCommand.cs b/EnvelopeGenerator.Application/Histories/Commands/CreateHistoryCommand.cs
index 80ebc3d7..efa9aa79 100644
--- a/EnvelopeGenerator.Application/Histories/Commands/CreateHistoryCommand.cs
+++ b/EnvelopeGenerator.Application/Histories/Commands/CreateHistoryCommand.cs
@@ -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;
///
///
///
-public record CreateHistoryCommand : IRequest
+public record CreateHistoryCommand: EnvelopeReceiverQueryBase, IRequest
{
///
///
///
- public int EnvelopeId { get; set; }
+ public int? EnvelopeId { get; set; }
///
///
///
- public string UserReference { get; set; } = null!;
+ public string? UserReference { get; set; }
///
///
@@ -41,16 +42,6 @@ public record CreateHistoryCommand : IRequest
///
///
public string? Comment { get; set; }
-
- ///
- ///
- ///
- public EnvelopeQueryBase? Envelope { get; init; }
-
- ///
- /// /
- ///
- public ReceiverQueryBase? Receiver { get; init; }
}
///
@@ -81,9 +72,17 @@ public class CreateHistoryCommandHandler : IRequestHandler 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);
diff --git a/EnvelopeGenerator.Domain/Entities/EnvelopeHistory.cs b/EnvelopeGenerator.Domain/Entities/EnvelopeHistory.cs
index 4a6d0399..611b3e4b 100644
--- a/EnvelopeGenerator.Domain/Entities/EnvelopeHistory.cs
+++ b/EnvelopeGenerator.Domain/Entities/EnvelopeHistory.cs
@@ -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
?