Jonathan Jenne 446bcfeb9e 20-09-2023
2023-09-20 13:42:24 +02:00

90 lines
2.6 KiB
C#

using DigitalData.Modules.Database;
using DigitalData.Modules.Logging;
using EnvelopeGenerator.Common;
namespace EnvelopeGenerator.Web.Services
{
public class DatabaseService
{
public MSSQLServer MSSQL { get; set; }
private EnvelopeModel envelopeModel;
private DocumentModel documentModel;
private ReceiverModel receiverModel;
private ElementModel elementModel;
private readonly LogConfig _logConfig;
private readonly Logger _logger;
public DatabaseService(LoggingService Logging, IConfiguration Config)
{
_logConfig = Logging.LogConfig;
_logger = Logging.LogConfig.GetLogger();
_logger.Debug("Establishing MSSQL Database connection..");
MSSQL = new MSSQLServer(_logConfig, Config["Config:ConnectionString"]);
if (MSSQL.DBInitialized == true)
{
_logger.Debug("MSSQL Connection: [{0}]", MSSQL.CurrentConnectionString);
var state = GetState();
InitializeModels(state);
}
else
{
_logger.Warn("Connection could not be established!");
}
}
public State GetState()
{
return new State
{
Database = MSSQL,
LogConfig = _logConfig,
UserId = 2 // TODO
};
}
public void InitializeModels(State state)
{
envelopeModel = new(state);
documentModel = new(state);
receiverModel = new(state);
elementModel = new(state);
}
public EnvelopeResponse LoadEnvelope(string pEnvelopeKey)
{
Tuple<string, string> result = Helpers.DecodeEnvelopeReceiverId(pEnvelopeKey);
var envelopeUuid = result.Item1;
var receiverSignature = result.Item2;
var receiverId = receiverModel.GetReceiverIdBySignature(receiverSignature);
Envelope envelope = envelopeModel.GetByUuid(envelopeUuid);
List<EnvelopeDocument> documents = (List<EnvelopeDocument>)documentModel.List(envelope.Id, receiverId);
envelope.Documents = documents;
return new()
{
ReceiverId = receiverId,
Envelope = envelope
};
}
public List<Envelope> LoadEnvelopes(int pReceiverId)
{
return (List<Envelope>)envelopeModel.List(pReceiverId);
}
public EnvelopeDocument LoadDocument(int pDocumentId)
{
return documentModel.GetById(pDocumentId);
}
}
}