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 HistoryModel historyModel; 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); historyModel = new(state); } public EnvelopeResponse LoadEnvelope(string pEnvelopeKey) { Tuple result = Helpers.DecodeEnvelopeReceiverId(pEnvelopeKey); var envelopeUuid = result.Item1; var receiverSignature = result.Item2; var receiverId = receiverModel.GetReceiverIdBySignature(receiverSignature); Envelope envelope = envelopeModel.GetByUuid(envelopeUuid); return new() { ReceiverId = receiverId, Envelope = envelope }; } public List LoadEnvelopes(int pReceiverId) { return (List)envelopeModel.List(pReceiverId); } public EnvelopeDocument LoadDocument(int pDocumentId) { return documentModel.GetById(pDocumentId); } public bool InsertHistoryEntry(EnvelopeHistoryEntry historyEntry) { return historyModel.Insert(historyEntry); } } }