public string GetAutugeneratedTime(string cronString) { ProjectSecurity.DemandAuthentication(); var cron = new CronExpression(cronString) { TimeZone = CoreContext.TenantManager.GetCurrentTenant().TimeZone }; var date = cron.GetTimeAfter(DateTime.UtcNow); return date.HasValue ? string.Format("@ {0}", TenantUtil.DateTimeFromUtc(date.Value).ToShortString()) : string.Empty; }
public static void SendAutoReports(DateTime datetime) { try { var now = DateTime.UtcNow.Date.AddHours(DateTime.UtcNow.Hour); foreach (var t in new DaoFactory(Global.DbID, -1).GetReportDao().GetAutoTemplates()) { try { var tenant = CoreContext.TenantManager.GetTenant(t.Tenant); if (tenant != null && tenant.Status == TenantStatus.Active && CoreContext.PaymentManager.GetTariff(tenant.TenantId).State < TariffState.NotPaid) { CoreContext.TenantManager.SetCurrentTenant(tenant); var cron = new CronExpression(t.Cron) { TimeZone = CoreContext.TenantManager.GetCurrentTenant().TimeZone }; var date = cron.GetTimeAfter(now.AddTicks(-1)); LogManager.GetLogger("ASC.Web.Projects.Reports").DebugFormat("Find auto report: {0} - {1}, now: {2}, date: {3}", t.Name, t.Cron, now, date); if (date == now) { var user = CoreContext.UserManager.GetUsers(t.CreateBy); if (user.ID != Constants.LostUser.ID && user.Status == EmployeeStatus.Active) { SecurityContext.AuthenticateMe(user.ID); Thread.CurrentThread.CurrentCulture = user.GetCulture(); Thread.CurrentThread.CurrentUICulture = user.GetCulture(); var result = ReportHelper.BuildReport(t.ReportType, t.Filter, ReportViewType.EMail, t.Id); var message = new NoticeMessage(user, HttpUtility.HtmlDecode(t.Name), result, "html"); message.AddArgument(new TagValue(CommonTags.SendFrom, CoreContext.TenantManager.GetCurrentTenant().Name)); message.AddArgument(new TagValue(CommonTags.Priority, 1)); LogManager.GetLogger("ASC.Web.Projects.Reports").DebugFormat("Send auto report: {0} to {1}, tenant: {2}", t.Name, user, CoreContext.TenantManager.GetCurrentTenant()); WorkContext.NotifyContext.DispatchEngine.Dispatch(message, "email.sender"); } } } } catch (System.Security.SecurityException se) { LogManager.GetLogger("ASC.Web.Projects.Reports").Info("SendAutoReports", se); } catch (Exception ex) { LogManager.GetLogger("ASC.Web.Projects.Reports").ErrorFormat("TemplateId: {0}, Temaplate: {1}\r\n{2}", t.Id, t.Filter.ToXml(), ex); } } } catch (Exception ex) { LogManager.GetLogger("ASC.Web.Projects.Reports").Error("SendAutoReports", ex); } }
public static void SendAutoReports(DateTime datetime) { try { var now = DateTime.UtcNow.Date.AddHours(DateTime.UtcNow.Hour); foreach (var t in new DaoFactory(Global.DB_ID, -1).GetReportDao().GetAutoTemplates()) { try { var tenant = CoreContext.TenantManager.GetTenant(t.Tenant); if (tenant != null && tenant.Status == TenantStatus.Active) { CoreContext.TenantManager.SetCurrentTenant(tenant); var cron = new CronExpression(t.Cron) { TimeZone = CoreContext.TenantManager.GetCurrentTenant().TimeZone }; var date = cron.GetTimeAfter(now.AddTicks(-1)); log4net.LogManager.GetLogger("ASC.Web.Projects.Reports").DebugFormat("Find auto report: {0} - {1}, now: {2}, date: {3}", t.Name, t.Cron, now, date); if (date == now) { var user = CoreContext.UserManager.GetUsers(new Guid(t.CreateBy)); if (user.ID != ASC.Core.Users.Constants.LostUser.ID /*&& user.Status*/) { SecurityContext.AuthenticateMe(user.Email, CoreContext.Authentication.GetUserPasswordHash(user.ID)); var result = BuildReport(t.ReportType, t.Filter, ReportViewType.EMail); if (!string.IsNullOrEmpty(result)) { var message = new NoticeMessage(user, HtmlUtil.SanitizeFragment(HttpUtility.HtmlDecode(t.Name)), result, "html"); log4net.LogManager.GetLogger("ASC.Web.Projects.Reports").DebugFormat("Send auto report: {0} to {1}, tenant: {2}", t.Name, user, CoreContext.TenantManager.GetCurrentTenant()); WorkContext.NotifyContext.DispatchEngine.Dispatch(message, "email.sender"); } else { SendEmptyAutoReports(t); } } } } } catch (System.Security.SecurityException se) { LogManager.GetLogger("ASC.Web.Projects.Reports").Info("SendAutoReports", se); } catch (Exception ex) { LogManager.GetLogger("ASC.Web.Projects.Reports").Error("SendAutoReports", ex); } } } catch (Exception ex) { LogManager.GetLogger("ASC.Web.Projects.Reports").Error("SendAutoReports", ex); } }