/// <summary> /// Gets a db with a specified db identifier /// <para /> /// If live data is required make sure to call LoadDatabases prior to calling this method /// </summary> /// <param name="dbIdentifier"></param> /// <returns></returns> public OrganizationDatabase GetDatabase(string dbIdentifier) { //Note: //org dbs data should have been decrypted by the UserConfigurationFilter var orgDb = Databases ?.FirstOrDefault(db => db.Identifier == dbIdentifier); //If org db is not defined, it means it has not been overwritten at the core meta level, so create it off the web.config //as the default api db srv should be used in this scenario return(orgDb ?? OrganizationDatabase.CreateInstanceWithDefaultCredentials(Uuid, dbIdentifier)); }
/// <summary> /// Creates a default instance of org db object and reads the orgs dbs credentials off the config (if present) /// </summary> /// <param name="orgId"></param> /// <param name="dbIdentifier"></param> /// <returns></returns> public static OrganizationDatabase CreateInstanceWithDefaultCredentials(Guid orgId, string dbIdentifier) { OrganizationDatabase defaultDb = null; try { var cfg = Cartomatic.Utils.NetCoreConfig.GetNetCoreConfig(); defaultDb = !string.IsNullOrEmpty(ConfigurationManager.AppSettings["OrganizationsDatabase"]) ? JsonConvert.DeserializeObject <OrganizationDatabase>(ConfigurationManager.AppSettings["OrganizationsDatabase"]) : cfg?.GetSection("OrganizationsDatabase")?.Get <OrganizationDatabase>(); defaultDb.OrganizationId = orgId; defaultDb.DbName = $"mhorg_{orgId:N}"; //uuid without dashes defaultDb.Identifier = dbIdentifier; } catch { //ignore } return(defaultDb); }