private void Application_StartDelayed(object sender, EventArgs e) { XmlConfigurator.Configure(); DbRegistry.Configure(); InitializeDbResources(); AjaxSecurityChecker.Instance.CheckMethodPermissions += AjaxCheckMethodPermissions; try { AmiPublicDnsSyncService.Synchronize(); } catch { } NotifyConfiguration.Configure(); WebItemManager.Instance.LoadItems(); SearchHandlerManager.Registry(new StudioSearchHandler()); (new S3UploadGuard()).DeleteExpiredUploads(TimeSpan.FromDays(1)); BundleConfig.Configure(); }
public void Configure() { if (!DbRegistry.IsDatabaseRegistered(ProjectApiBase.DbId)) { DbRegistry.RegisterDatabase(ProjectApiBase.DbId, WebConfigurationManager.ConnectionStrings[ProjectApiBase.DbId]); } if (!DbRegistry.IsDatabaseRegistered(FileConstant.DatabaseId)) { DbRegistry.RegisterDatabase(FileConstant.DatabaseId, WebConfigurationManager.ConnectionStrings[FileConstant.DatabaseId]); } FilesIntegration.RegisterFileSecurityProvider("projects", "project", new SecurityAdapterProvider()); //Register prodjects' calendar events CalendarManager.Instance.RegistryCalendarProvider(ProjectApi.GetUserCalendars); }
public static void RemoveFeedItem(string id) { using (var db = new DbManager(Constants.FeedDbId)) using (var command = db.Connection.CreateCommand()) using (var tx = db.Connection.BeginTransaction(IsolationLevel.ReadUncommitted)) { command.Transaction = tx; command.CommandTimeout = 60 * 60; // a hour var dialect = DbRegistry.GetSqlDialect(Constants.FeedDbId); command.ExecuteNonQuery(new SqlDelete("feed_users").Where("feed_id", id), dialect); command.ExecuteNonQuery(new SqlDelete("feed_aggregate").Where("id", id), dialect); tx.Commit(); } }
public DbFeedStorageTest() { var dbType = DbType.SQLite; if (dbType == DbType.MySQL) { DbRegistry.RegisterDatabase("news", "MySql.Data.MySqlClient", "Server=teamlab;Database=Test;UserID=dev;Pwd=dev"); //new DbManager("news").ExecuteNonQuery(NewsResource.DbSchema_MySQL); } if (dbType == DbType.SQLite) { DbRegistry.RegisterDatabase("news", "System.Data.SQLite", "Data Source=feed.sqlite;Version=3"); //new DbManager("news").ExecuteNonQuery(NewsResource.DbSchema_SQLite); } feedStorage = new DbFeedStorage(10); }
public static void Configure() { XmlConfigurator.Configure(); DbRegistry.Configure(); PrepareRedisSessionProvider(); if (HttpContext.Current != null && HttpContext.Current.Request != null) { var url = HttpContext.Current.Request.GetUrlRewriter(); CommonLinkUtility.Initialize(new UriBuilder(url.Scheme, url.Host, url.Port).Uri.ToString()); } ConfigureWebApi(); if (ConfigurationManager.AppSettings["resources.from-db"] == "true") { DBResourceManager.PatchAssemblies(); } AjaxSecurityChecker.Instance.CheckMethodPermissions += AjaxCheckMethodPermissions; try { AmiPublicDnsSyncService.Synchronize(); } catch { } NotifyConfiguration.Configure(); WebItemManager.Instance.LoadItems(); SearchHandlerManager.Registry(new StudioSearchHandler()); StorageFactory.InitializeHttpHandlers(); (new S3UploadGuard()).DeleteExpiredUploads(TimeSpan.FromDays(1)); BundleConfig.Configure(); if (CoreContext.Configuration.Standalone) { WarmUp.Instance.Start(); } }
public void SetAccessToTest() { if (!DbRegistry.IsDatabaseRegistered(CRMConstants.DatabaseId)) { DbRegistry.RegisterDatabase(CRMConstants.DatabaseId, "Server=teamlab;Database=Test;UserID=dev;Pwd=dev;pooling=True;Character Set=utf8"); } ASC.Core.CoreContext.TenantManager.SetCurrentTenant(0); var deal = Global.DaoFactory.GetDealDao().GetByID(17); CRMSecurity.SetAccessTo(deal, new List <Guid>() { ASC.Core.SecurityContext.CurrentAccount.ID }); }
public override List <UsageSpaceStatItem> GetStatData() { if (!DbRegistry.IsDatabaseRegistered(PROJECTS_DBID)) { DbRegistry.RegisterDatabase(PROJECTS_DBID, ConfigurationManager.ConnectionStrings[PROJECTS_DBID]); } if (!DbRegistry.IsDatabaseRegistered(FileConstant.DatabaseId)) { DbRegistry.RegisterDatabase(FileConstant.DatabaseId, ConfigurationManager.ConnectionStrings[FileConstant.DatabaseId]); } using (var filedb = new DbManager(FileConstant.DatabaseId)) using (var projdb = new DbManager(PROJECTS_DBID)) { var q = new SqlQuery("files_file f") .Select("b.right_node") .SelectSum("f.content_length") .InnerJoin("files_folder_tree t", Exp.EqColumns("f.folder_id", "t.folder_id")) .InnerJoin("files_bunch_objects b", Exp.EqColumns("t.parent_id", "b.left_node")) .Where("b.tenant_id", TenantProvider.CurrentTenantID) .Where(Exp.Like("b.right_node", "projects/project/", SqlLike.StartWith)) .GroupBy(1); var sizes = filedb.ExecuteList(q) .Select(r => new { ProjectId = Convert.ToInt32(((string)r[0]).Substring(17)), Size = Convert.ToInt64(r[1]) }) .GroupBy(r => r.ProjectId) .ToDictionary(g => g.Key, g => g.Sum(a => a.Size)); q = new SqlQuery("projects_projects") .Select("id", "title") .Where("tenant_id", TenantProvider.CurrentTenantID) .Where(Exp.In("id", sizes.Keys)); return(projdb.ExecuteList(q) .Select(r => new UsageSpaceStatItem { Name = Convert.ToString(r[1]), SpaceUsage = sizes[Convert.ToInt32(r[0])], Url = String.Concat(PathProvider.BaseAbsolutePath, "projects.aspx?prjID=" + Convert.ToInt32(r[0])) }) .OrderByDescending(i => i.SpaceUsage) .ToList()); } }
public override void Init(ProductContext productContext) { if (!DbRegistry.IsDatabaseRegistered(Global.DB_ID)) { DbRegistry.RegisterDatabase(Global.DB_ID, WebConfigurationManager.ConnectionStrings[Global.DB_ID]); } new SearchHandler(); ConfigurationManager.Configure(ID, PathProvider.BaseVirtualPath, String.Empty, Global.FileStorageModule); productContext.ThemesFolderVirtualPath = String.Concat(PathProvider.BaseVirtualPath, "App_Themes"); productContext.ImageFolder = "images"; productContext.MasterPageFile = String.Concat(PathProvider.BaseVirtualPath, "Masters/BasicTemplate.Master"); productContext.DisabledIconFileName = "product_disabled_logo.png"; productContext.IconFileName = "product_logo.png"; productContext.LargeIconFileName = "product_logolarge.png"; productContext.SubscriptionManager = new ProductSubscriptionManager(); productContext.UserActivityControlLoader = new ProjectActivity(); productContext.WhatsNewHandler = new WhatsNewHandler(); productContext.UserActivityPublishers = new List <IUserActivityPublisher>() { new TimeLinePublisher() }; productContext.DefaultSortOrder = 10; productContext.SpaceUsageStatManager = new ProjectsSpaceUsageStatManager(); productContext.AdminOpportunities = GetAdminOpportunities; productContext.UserOpportunities = GetUserOpportunities; productContext.HasComplexHierarchyOfAccessRights = true; context = productContext; NotifyClient.Instance.Client.RegisterSendMethod(SendMsgMilestoneDeadline, TimeSpan.FromDays(1), DateTime.UtcNow.Date.AddHours(7)); NotifyClient.Instance.Client.RegisterSendMethod(ReportHelper.SendAutoReports, TimeSpan.FromHours(1), DateTime.UtcNow.Date.AddHours(DateTime.UtcNow.Hour)); NotifyClient.Instance.Client.RegisterSendMethod(TaskHelper.SendAutoReminderAboutTask, TimeSpan.FromHours(1), DateTime.UtcNow.Date.AddHours(DateTime.UtcNow.Hour)); NotifyClient.Instance.Client.AddInterceptor(InterceptorSecurity); UserActivityManager.AddFilter(new WhatsNewHandler()); FilesIntegration.RegisterFileSecurityProvider("projects", "project", new SecurityAdapterProvider()); SearchHandlerManager.Registry(new SearchHandler()); }
public MailServiceHelper( UserManager userManager, AuthContext authContext, IConfiguration configuration, DbRegistry dbRegistry, CoreBaseSettings coreBaseSettings, MailServiceHelperStorage mailServiceHelperStorage, DbOptionsManager dbOptions) { UserManager = userManager; AuthContext = authContext; Configuration = configuration; DbRegistry = dbRegistry; CoreBaseSettings = coreBaseSettings; MailServiceHelperStorage = mailServiceHelperStorage; DbOptions = dbOptions; Cache = mailServiceHelperStorage.Cache; DefaultDatabase = GetDefaultDatabase(); }
protected override Type ResolveConnectionType() { if (!string.IsNullOrEmpty(ConnectionStringName) && string.IsNullOrEmpty(ConnectionString)) { try { ConnectionString = DbRegistry.GetConnectionString(ConnectionStringName).ConnectionString; using (var connection = DbRegistry.CreateDbConnection(ConnectionStringName)) { ConnectionType = connection.GetType().AssemblyQualifiedName; } } catch (Exception exception) { ErrorHandler.Error("Failed to load resolve connection [" + ConnectionStringName + "]", exception); throw; } } return(base.ResolveConnectionType()); }
public static void RemoveFeedAggregate(DateTime fromTime) { using var db = new DbManager(Constants.FeedDbId); using var command = db.Connection.CreateCommand(); using var tx = db.Connection.BeginTransaction(IsolationLevel.ReadUncommitted); command.Transaction = tx; command.CommandTimeout = 60 * 60; // a hour var dialect = DbRegistry.GetSqlDialect(Constants.FeedDbId); if (dialect.SupportMultiTableUpdate) { command.ExecuteNonQuery("delete from feed_aggregate, feed_users using feed_aggregate, feed_users where id = feed_id and aggregated_date < @date", new { date = fromTime }); } else { command.ExecuteNonQuery(new SqlDelete("feed_users").Where(Exp.In("feed_id", new SqlQuery("feed_aggregate").Select("id").Where(Exp.Lt("aggregated_date", fromTime)))), dialect); command.ExecuteNonQuery(new SqlDelete("feed_aggregate").Where(Exp.Lt("aggregated_date", fromTime)), dialect); } tx.Commit(); }
public void Configure() { if (!DbRegistry.IsDatabaseRegistered(ProjectApiBase.DbId)) { DbRegistry.RegisterDatabase(ProjectApiBase.DbId, WebConfigurationManager.ConnectionStrings[ProjectApiBase.DbId]); } if (!DbRegistry.IsDatabaseRegistered(FileConstant.DatabaseId)) { DbRegistry.RegisterDatabase(FileConstant.DatabaseId, WebConfigurationManager.ConnectionStrings[FileConstant.DatabaseId]); } ConfigurationManager.Configure(ProductEntryPoint.ID, PathProvider.BaseVirtualPath, String.Empty, ProjectApiBase.DbId); FilesIntegration.RegisterFileSecurityProvider("projects", "project", new SecurityAdapterProvider()); //Register user activity ProductManager.RegisterUserActivityPublisher(new TimeLinePublisher());//That shit adds themselve in publisher list in constructor //Register prodjects' calendar events CalendarManager.Instance.RegistryCalendarProvider(ProjectApi.GetUserCalendars); }
protected SqlUpdate GetRecalculateFilesCountUpdate(object folderId) { if (DbRegistry.GetSqlDialect("default").SupportMultiTableUpdate) { return(new SqlUpdate("files_folder d, files_folder_tree t") .Set( "d.filesCount = (select count(distinct f.id) from files_file f, files_folder_tree t2 where f.tenant_id = d.tenant_id and f.folder_id = t2.folder_id and t2.parent_id = d.id)") .Where(Exp.EqColumns("d.id", "t.parent_id") & Exp.Eq("t.folder_id", folderId) & Exp.Eq("d.tenant_id", TenantID))); } else { return(new SqlUpdate("files_folder") .Set( "filesCount = (select count(distinct f.id) from files_file f, files_folder_tree t2 where f.tenant_id = files_folder.tenant_id and f.folder_id = t2.folder_id and t2.parent_id = files_folder.id)") .Where(Exp.Eq("files_folder.tenant_id", TenantID) & Exp.In("files_folder.id", new SqlQuery("files_folder_tree t").Select("t.parent_id").Where("t.folder_id", folderId)))); } }
public MultiRegionHostedSolution(string dbid, IConfiguration configuraion, TenantDomainValidator tenantDomainValidator, TimeZoneConverter timeZoneConverter, CookieStorage cookieStorage, DbRegistry dbRegistry, DbOptionsManager dbOptions, TariffServiceStorage tariffServiceStorage, IOptionsMonitor <ILog> options) { this.dbid = dbid; Configuraion = configuraion; TenantDomainValidator = tenantDomainValidator; TimeZoneConverter = timeZoneConverter; CookieStorage = cookieStorage; DbRegistry = dbRegistry; DbOptions = dbOptions; TariffServiceStorage = tariffServiceStorage; Options = options; Initialize(); }
protected AbstractDao(int tenantID, String storageKey) { TenantID = tenantID; DbManager = new DbManager(storageKey); if (!DbRegistry.IsDatabaseRegistered(CRMConstants.DatabaseId)) { DbRegistry.RegisterDatabase(CRMConstants.DatabaseId, WebConfigurationManager.ConnectionStrings[CRMConstants.DatabaseId]); } _supportedEntityType.Add(EntityType.Company); _supportedEntityType.Add(EntityType.Person); _supportedEntityType.Add(EntityType.Contact); _supportedEntityType.Add(EntityType.Opportunity); _supportedEntityType.Add(EntityType.Case); _contactCacheKey = String.Concat(TenantID, "/contact"); _dealCacheKey = String.Concat(TenantID, "/deal"); _caseCacheKey = String.Concat(TenantID, "/case"); _taskCacheKey = String.Concat(TenantID, "/task"); }
//TODO:fix public HostedSolution( IConfiguration configuration, TenantDomainValidator tenantDomainValidator, TimeZoneConverter timeZoneConverter, DbRegistry dbRegistry, ConnectionStringSettings connectionString, TariffServiceStorage tariffServiceStorage, IOptionsMonitor <ILog> options, string region) { tenantService = new DbTenantService(null, null, null); var baseSettings = new CoreBaseSettings(configuration); coreSettings = new CoreSettings(tenantService, baseSettings, configuration); userService = new DbUserService(null); quotaService = new DbQuotaService(null); tariffService = new TariffService(quotaService, tenantService, baseSettings, coreSettings, configuration, null, tariffServiceStorage, options); clientTenantManager = new TenantManager(tenantService, quotaService, tariffService, null, baseSettings, coreSettings); settingsManager = new DbSettingsManager(connectionString); Region = region ?? string.Empty; DbId = connectionString.Name; }
private static void ConfigureCoreContextByDefault() { var cs = DbRegistry.GetConnectionString("core"); if (cs == null) { throw new ConfigurationErrorsException("Can not configure CoreContext: connection string with name core not found."); } var tenantService = new CachedTenantService(new DbTenantService(cs)); var userService = new CachedUserService(new DbUserService(cs)); var azService = new CachedAzService(new DbAzService(cs)); var quotaService = new CachedQuotaService(new DbQuotaService(cs)); var subService = new CachedSubscriptionService(new DbSubscriptionService(cs)); var tariffService = new TariffService(cs, quotaService, tenantService); Configuration = new CoreConfiguration(tenantService); TenantManager = new TenantManager(tenantService, quotaService, tariffService); PaymentManager = new PaymentManager(Configuration, quotaService, tariffService); UserManager = new UserManager(userService); Authentication = new AuthManager(userService); AuthorizationManager = new AuthorizationManager(azService); SubscriptionManager = new SubscriptionManager(subService); }
private static FullTextSearchSettings InitConnectionSettings(TextIndexCfgSectionHandler cfg) { var connectionString = ConfigurationManager.ConnectionStrings[cfg.ConnectionStringName]; ConnectionStringName = cfg.ConnectionStringName; var settings = CoreContext.Configuration.GetSection <FullTextSearchSettings>(Tenant.DEFAULT_TENANT); if (connectionString == null) { if (settings == null) { throw new Exception("connection string can not be empty"); } DbRegistry.RegisterDatabase(ConnectionStringName, new ConnectionStringSettings { Name = cfg.ConnectionStringName, ConnectionString = settings.ConnectionString, ProviderName = "MySql.Data.MySqlClient" }); } else { var parsed = ParseConnectionString(connectionString.ConnectionString); settings = new FullTextSearchSettings { Host = parsed.ContainsKey("Server") ? parsed["Server"] : "localhost", Port = Convert.ToInt32(parsed.ContainsKey("Port") ? parsed["Port"] : "9306") }; CoreContext.Configuration.SaveSection(Tenant.DEFAULT_TENANT, settings); } return(settings); }
public override void HandleMessage(XmppStream stream, Message message, XmppHandlerContext context) { if (!message.HasTo || message.To.IsServer) { context.Sender.SendTo(stream, XmppStanzaError.ToServiceUnavailable(message)); return; } var sessions = context.SessionManager.GetBareJidSessions(message.To); if (0 < sessions.Count) { foreach (var s in sessions) { try { context.Sender.SendTo(s, message); } catch { context.Sender.SendToAndClose(s.Stream, message); } } } else { pushStore = new DbPushStore(); var properties = new Dictionary <string, string>(1); properties.Add("connectionStringName", "default"); pushStore.Configure(properties); if (message.HasTag("active")) { var fromFullName = message.HasAttribute("username") ? message.GetAttribute("username") : message.From.ToString(); var messageToDomain = message.To.ToString().Split(new char[] { '@' })[1]; var tenant = CoreContext.TenantManager.GetTenant(messageToDomain); var tenantId = tenant != null ? tenant.TenantId : -1; var userPushList = new List <UserPushInfo>(); userPushList = pushStore.GetUserEndpoint(message.To.ToString().Split(new char[] { '@' })[0]); var firebaseAuthorization = ""; try { CallContext.SetData(TenantManager.CURRENT_TENANT, new Tenant(tenantId, "")); firebaseAuthorization = FireBase.Instance.Authorization; } catch (Exception exp) { log.DebugFormat("firebaseAuthorizationERROR: {0}", exp); } foreach (var user in userPushList) { try { var from = message.From.ToString().Split(new char[] { '@' })[0]; List <string> userId; string photoPath = ""; using (var db = new DbManager("core")) using (var command = db.Connection.CreateCommand()) { var q = new SqlQuery("core_user").Select("id").Where(Exp.Like("username", from)).Where("tenant", tenantId); userId = command.ExecuteList(q, DbRegistry.GetSqlDialect(db.DatabaseId)) .ConvertAll(r => Convert.ToString(r[0])) .ToList(); } if (userId.Count != 0) { var guid = new Guid(userId[0]); photoPath = UserPhotoManager.GetBigPhotoURL(guid); } var tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send"); tRequest.Method = "post"; tRequest.ContentType = "application/json"; var data = new { to = user.endpoint, data = new { msg = message.Body, fromFullName = fromFullName, photoPath = photoPath } }; var serializer = new JavaScriptSerializer(); var json = serializer.Serialize(data); var byteArray = Encoding.UTF8.GetBytes(json); tRequest.Headers.Add(string.Format("Authorization: key={0}", firebaseAuthorization)); tRequest.ContentLength = byteArray.Length; using (var dataStream = tRequest.GetRequestStream()) { dataStream.Write(byteArray, 0, byteArray.Length); using (var tResponse = tRequest.GetResponse()) { using (var dataStreamResponse = tResponse.GetResponseStream()) { using (var tReader = new StreamReader(dataStreamResponse)) { var sResponseFromServer = tReader.ReadToEnd(); var str = sResponseFromServer; } } } } } catch (Exception ex) { var str = ex.Message; log.DebugFormat("PushRequestERROR: {0}", str); } } } StoreOffline(message, context.StorageManager.OfflineStorage); } }
public List <string> SearchCRMContacts(int tenant_id, string user_id, string search_text) { var contacts = new List <string>(); if (!string.IsNullOrEmpty(search_text)) { #region Set up connection to CRM sequrity try { CoreContext.TenantManager.SetCurrentTenant(tenant_id); SecurityContext.AuthenticateMe(CoreContext.Authentication.GetAccountByID(new Guid(user_id))); if (!DbRegistry.IsDatabaseRegistered("crm")) { DbRegistry.RegisterDatabase("crm", ConfigurationManager.ConnectionStrings["crm"]); } } catch (Exception e) { _log.Error("Error connecting to CRM database", e); return(contacts); } #endregion using (var db = new DbManager("crm")) { SqlQuery q; if (FullTextSearch.SupportModule(FullTextSearch.CRMEmailsModule)) { var ids = FullTextSearch.Search(search_text + "*", FullTextSearch.CRMEmailsModule) .GetIdentifiers() .Select(id => int.Parse(id)); q = new SqlQuery("crm_contact c") .Select("c.id", "c.is_company", "trim(concat(c.first_name, ' ', c.last_name, ' ', c.company_name))", "i.data") .InnerJoin("crm_contact_info i", Exp.EqColumns("c.tenant_id", "i.tenant_id") & Exp.EqColumns("c.id", "i.contact_id")) .Where(Exp.In("i.id", ids.Take(FULLTEXTSEARCH_IDS_COUNT).ToList())) .Where("i.type", (int)ContactInfoType.Email); } else { search_text = search_text.Replace("\"", "\\\""); q = new SqlQuery("crm_contact c") .Select("c.id", "c.is_company", "trim(concat(c.first_name, ' ', c.last_name, ' ', c.company_name))", "i.data") .InnerJoin("crm_contact_info i", Exp.EqColumns("c.tenant_id", "i.tenant_id") & Exp.EqColumns("c.id", "i.contact_id")) .Where("c.tenant_id", tenant_id) .Where("i.type", (int)ContactInfoType.Email) .Where("(concat(c.display_name, ' ', i.data) like '%" + search_text + "%')"); } var result = db.ExecuteList(q) .ConvertAll(r => new { Id = Convert.ToInt32(r[0]), Company = Convert.ToBoolean(r[1]), DisplayName = Convert.ToString(r[2]), Email = Convert.ToString(r[3]) }); foreach (var r in result) { var contact = r.Company ? (Contact) new Company() : new Person(); contact.ID = r.Id; if (CRMSecurity.CanAccessTo(contact)) { contacts.Add("\"" + r.DisplayName + "\" <" + r.Email + ">"); } } } } return(contacts); }
internal static List <BaseCalendar> GetUserCalendars(Guid userId) { if (!DbRegistry.IsDatabaseRegistered(DbId)) { DbRegistry.RegisterDatabase(DbId, WebConfigurationManager.ConnectionStrings[DbId]); } var tenantId = CoreContext.TenantManager.GetCurrentTenant().TenantId; var engineFactory = new EngineFactory(DbId, tenantId); var cals = new List <BaseCalendar>(); var engine = engineFactory.GetProjectEngine(); var projects = engine.GetByParticipant(userId); if (projects != null) { var team = engine.GetTeam(projects.Select(r => r.ID).ToList()); foreach (var p in projects) { var sharingOptions = new SharingOptions(); foreach (var participant in team.Where(r => r.ProjectID == p.ID)) { sharingOptions.PublicItems.Add(new SharingOptions.PublicItem { Id = participant.ID, IsGroup = false }); } var index = p.ID % CalendarColors.BaseColors.Count; cals.Add(new ProjectCalendar(engineFactory, userId, p, CalendarColors.BaseColors[index].BackgroudColor, CalendarColors.BaseColors[index].TextColor, sharingOptions, false)); } } var folowingProjects = engine.GetFollowing(userId); if (folowingProjects != null) { var team = engine.GetTeam(folowingProjects.Select(r => r.ID).ToList()); foreach (var p in folowingProjects) { if (projects != null && projects.Exists(proj => proj.ID == p.ID)) { continue; } var sharingOptions = new SharingOptions(); sharingOptions.PublicItems.Add(new SharingOptions.PublicItem { Id = userId, IsGroup = false }); foreach (var participant in team.Where(r => r.ProjectID == p.ID)) { sharingOptions.PublicItems.Add(new SharingOptions.PublicItem { Id = participant.ID, IsGroup = false }); } var index = p.ID % CalendarColors.BaseColors.Count; cals.Add(new ProjectCalendar(engineFactory, userId, p, CalendarColors.BaseColors[index].BackgroudColor, CalendarColors.BaseColors[index].TextColor, sharingOptions, true)); } } return(cals); }
private void Initialize() { if (!initialized) { lock (locker) { if (!initialized) { initialized = true; if (Convert.ToBoolean(ConfigurationManager.AppSettings["core.multi-hosted.config-only"] ?? "false")) { foreach (ConnectionStringSettings cs in ConfigurationManager.ConnectionStrings) { if (cs.Name.StartsWith(dbid + ".")) { var name = cs.Name.Substring(dbid.Length + 1); regions[name] = new HostedSolution(cs, name); } } regions[dbid] = new HostedSolution(ConfigurationManager.ConnectionStrings[dbid]); if (!regions.ContainsKey(string.Empty)) { regions[string.Empty] = new HostedSolution(ConfigurationManager.ConnectionStrings[dbid]); } } else { var find = false; foreach (ConnectionStringSettings cs in ConfigurationManager.ConnectionStrings) { if (cs.Name.StartsWith(dbid + ".")) { var name = cs.Name.Substring(dbid.Length + 1); regions[name] = new HostedSolution(cs, name); find = true; } } if (find) { regions[dbid] = new HostedSolution(ConfigurationManager.ConnectionStrings[dbid]); if (!regions.ContainsKey(string.Empty)) { regions[string.Empty] = new HostedSolution(ConfigurationManager.ConnectionStrings[dbid]); } } else { try { using (var db = new DbManager(dbid)) { var q = new SqlQuery("regions") .Select("region") .Select("connection_string") .Select("provider"); db.ExecuteList(q) .ForEach(r => { var cs = new ConnectionStringSettings((string)r[0], (string)r[1], (string)r[2]); if (!DbRegistry.IsDatabaseRegistered(cs.Name)) { DbRegistry.RegisterDatabase(cs.Name, cs); } regions[cs.Name] = new HostedSolution(cs, cs.Name); }); } } catch (DbException) { } } } } } } }
public ConnectionStringSettings GetRegionConnectionString(string region) { return(DbRegistry.GetConnectionString(GetRegionService(region).DbId)); }
private void Initialize() { var connectionStrings = Configuraion.GetConnectionStrings(); var dbConnectionStrings = Configuraion.GetConnectionStrings(dbid); if (Convert.ToBoolean(Configuraion["core.multi-hosted.config-only"] ?? "false")) { foreach (var cs in Configuraion.GetConnectionStrings()) { if (cs.Name.StartsWith(dbid + ".")) { var name = cs.Name.Substring(dbid.Length + 1); regions[name] = new HostedSolution(Configuraion, TenantDomainValidator, TimeZoneConverter, DbRegistry, cs, TariffServiceStorage, Options, name); } } regions[dbid] = new HostedSolution(Configuraion, TenantDomainValidator, TimeZoneConverter, DbRegistry, dbConnectionStrings, TariffServiceStorage, Options); if (!regions.ContainsKey(string.Empty)) { regions[string.Empty] = new HostedSolution(Configuraion, TenantDomainValidator, TimeZoneConverter, DbRegistry, dbConnectionStrings, TariffServiceStorage, Options); } } else { var find = false; foreach (var cs in connectionStrings) { if (cs.Name.StartsWith(dbid + ".")) { var name = cs.Name.Substring(dbid.Length + 1); regions[name] = new HostedSolution(Configuraion, TenantDomainValidator, TimeZoneConverter, DbRegistry, cs, TariffServiceStorage, Options, name); find = true; } } if (find) { regions[dbid] = new HostedSolution(Configuraion, TenantDomainValidator, TimeZoneConverter, DbRegistry, dbConnectionStrings, TariffServiceStorage, Options); if (!regions.ContainsKey(string.Empty)) { regions[string.Empty] = new HostedSolution(Configuraion, TenantDomainValidator, TimeZoneConverter, DbRegistry, dbConnectionStrings, TariffServiceStorage, Options); } } else { foreach (var connectionString in connectionStrings) { try { using var db = DbOptions.Get(connectionString.Name); var q = new SqlQuery("regions") .Select("region") .Select("connection_string") .Select("provider"); db.ExecuteList(q) .ForEach(r => { var cs = new System.Configuration.ConnectionStringSettings((string)r[0], (string)r[1], (string)r[2]); if (!DbRegistry.IsDatabaseRegistered(cs.Name)) { DbRegistry.RegisterDatabase(cs.Name, cs); } if (!regions.ContainsKey(string.Empty)) { regions[string.Empty] = new HostedSolution(Configuraion, TenantDomainValidator, TimeZoneConverter, DbRegistry, cs, TariffServiceStorage, Options, cs.Name); } regions[cs.Name] = new HostedSolution(Configuraion, TenantDomainValidator, TimeZoneConverter, DbRegistry, cs, TariffServiceStorage, Options, cs.Name); }); } catch (DbException) { } } } } }
public void SendBirthdayReminders(DateTime scheduleDate) { try { scheduleDate = scheduleDate.AddDays(1); List <Tenant> tenants; using (var db = new DbManager("core")) using (var command = db.Connection.CreateCommand()) { command.CommandTimeout = 30 * 10; var q = new SqlQuery("core_user") .Select("tenant") .Where(!Exp.Eq("bithdate", null)) .Where("date_format(bithdate, '%m%d')", scheduleDate.ToString("MMdd")) .Where("removed", 0) .Where("status", EmployeeStatus.Active) .GroupBy(1); tenants = command.ExecuteList(q, DbRegistry.GetSqlDialect(db.DatabaseId)) .ConvertAll(r => Convert.ToInt32(r[0])) .Select(id => CoreContext.TenantManager.GetTenant(id)) .ToList(); } foreach (var tenant in tenants) { if (tenant == null || tenant.Status != TenantStatus.Active || TariffState.NotPaid <= CoreContext.PaymentManager.GetTariff(tenant.TenantId).State) { continue; } CoreContext.TenantManager.SetCurrentTenant(tenant); if (!WebItemSecurity.GetSecurityInfo(WebItemManager.CommunityProductID.ToString()).Enabled || !WebItemSecurity.GetSecurityInfo(WebItemManager.BirthdaysProductID.ToString()).Enabled) { continue; } var users = CoreContext.UserManager.GetUsers(EmployeeStatus.Active, EmployeeType.User); var birthdays = users.Where(u => u.BirthDate.HasValue && u.BirthDate.Value.Month == scheduleDate.Month && u.BirthDate.Value.Day == scheduleDate.Day); var subscriptionProvider = NotifySource.GetSubscriptionProvider(); foreach (var user in users) { if (WebItemManager.Instance[WebItemManager.CommunityProductID].IsDisabled(user.ID)) { continue; } var allSubscription = subscriptionProvider.IsSubscribed(Event_BirthdayReminder, user, null); foreach (var birthday in birthdays) { if (user.Equals(birthday)) { continue; } if ((allSubscription && !subscriptionProvider.IsUnsubscribe(user, Event_BirthdayReminder, birthday.ID.ToString())) || (!allSubscription && subscriptionProvider.IsSubscribed(Event_BirthdayReminder, user, birthday.ID.ToString()))) { client.SendNoticeToAsync( Event_BirthdayReminder, birthday.ID.ToString(), new[] { user }, true, new TagValue("BirthdayUserName", birthday.DisplayUserName(false)), new TagValue("BirthdayUserUrl", CommonLinkUtility.GetUserProfile(birthday.ID)), new TagValue("BirthdayDate", birthday.BirthDate.Value.ToShortDayMonth()), new TagValue(CommonTags.Priority, 1)); } } } } } catch (Exception ex) { LogManager.GetLogger("ASC").Error(ex); } }
public System.Configuration.ConnectionStringSettings GetRegionConnectionString(string region) { return(DbRegistry.GetConnectionString(GetRegionService(region).DbId)); }
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { return(DbRegistry.GetConnectionString((string)value)); }
public static void Configure() { DbRegistry.Configure(); PrepareRedisSessionProvider(); if (HttpContext.Current != null && HttpContext.Current.Request != null) { var url = HttpContext.Current.Request.GetUrlRewriter(); CommonLinkUtility.Initialize(new UriBuilder(url.Scheme, url.Host, url.Port).Uri.ToString()); } ConfigureWebApi(); DBResourceManager.PatchAssemblies(); AjaxSecurityChecker.Instance.CheckMethodPermissions += AjaxCheckMethodPermissions; AppDomain.CurrentDomain.AssemblyResolve += CurrentDomainOnAssemblyResolve; //try //{ // AmiPublicDnsSyncService.Synchronize(); //} //catch { } NotifyConfiguration.Configure(); WebItemManager.Instance.LoadItems(); SearchHandlerManager.Registry(new StudioSearchHandler()); StorageFactory.InitializeHttpHandlers(); BundleConfig.Configure(); WhiteLabelHelper.ApplyPartnerWhiteLableSettings(); if (SetupInfo.IsVisibleSettings(nameof(LdapSettings))) { LdapNotifyHelper.RegisterAll(); } try { new S3UploadGuard().DeleteExpiredUploadsAsync(TimeSpan.FromDays(1));//todo: } catch (Exception) { } try { if (CoreContext.Configuration.Standalone) { Core.WarmUp.Instance.Start(); } } catch (Exception ex) { LogManager.GetLogger("ASC").Error("Start Warmup", ex); } }
public void RegistryTest() { Assert.AreEqual(cs, DbRegistry.GetConnectionString(dbId)); Assert.IsTrue(DbRegistry.IsDatabaseRegistered(dbId)); Assert.IsNotNull(DbRegistry.CreateDbConnection(dbId)); }
public DataTest() { DbRegistry.RegisterDatabase(dbId, new SQLiteFactory(), cs); }