Jonathan Jenne 946d9c2119 fix nlog ref
2023-11-02 09:21:35 +01:00

70 lines
2.0 KiB
C#

using EnvelopeGenerator.Common;
using EnvelopeGenerator.Web.Services;
using Microsoft.Extensions.Primitives;
using NLog;
namespace EnvelopeGenerator.Web.Handler
{
public class HistoryHandler
{
private DatabaseService database;
private LoggingService logging;
private ApiService api;
public HistoryHandler(DatabaseService database, LoggingService logging, ApiService api)
{
this.database = database;
this.logging = logging;
this.api = api;
}
public IResult HandlePostHistoryEntry(HttpContext ctx)
{
try
{
//
// Load Envelope from EnvelopeKey
string envelopeKey = api.EnsureValidEnvelopeKey(ctx.Request);
EnvelopeResponse r = database.LoadEnvelope(envelopeKey);
var receiver = r.Envelope.Receivers.Where(receiver => receiver.Id == r.ReceiverId).SingleOrDefault();
EnvelopeHistoryEntry historyEntry = new()
{
EnvelopeId = r.Envelope.Id,
UserReference = receiver.Email
};
database.InsertHistoryEntry(historyEntry);
return Results.Ok();
}
catch (Exception)
{
return Results.Problem();
}
}
private int EnsureValidHistoryEntry(Logger logger, HttpRequest request)
{
if (request.Query.TryGetValue("index", out StringValues documentIndexString))
{
try
{
return int.Parse(documentIndexString.First());
}
catch (Exception e)
{
throw new ArgumentNullException("DocumentIndex", e);
}
}
else
{
throw new ArgumentNullException("DocumentIndex");
}
}
}
}