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 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); elementModel = new(state); } public Envelope LoadEnvelope(string envelopeReceiverId) { Tuple result = Helpers.DecodeEnvelopeReceiverId(envelopeReceiverId); var envelopeUuid = result.Item1; var receiverSignature = result.Item2; Envelope envelope = envelopeModel.GetByUuid(envelopeUuid); List documents = (List)documentModel.List(envelope.Id); envelope.Documents = documents; return envelope; } public List LoadEnvelopes() { return (List)envelopeModel.List(); } public EnvelopeDocument LoadDocument(int pDocumentId) { return documentModel.GetById(pDocumentId); } } }