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"); } } } }