private static void SendByTenant(DateTime now, IGrouping <int, ReportTemplate> tGrouped)
        {
            var tenant = CoreContext.TenantManager.GetTenant(tGrouped.Key);

            if (tenant == null || tenant.Status != TenantStatus.Active || CoreContext.PaymentManager.GetTariff(tenant.TenantId).State >= TariffState.NotPaid)
            {
                return;
            }

            CoreContext.TenantManager.SetCurrentTenant(tenant);
            DocbuilderReportsUtility.Terminate(ReportOrigin.ProjectsAuto);

            var timeZone = CoreContext.TenantManager.GetCurrentTenant().TimeZone;

            foreach (var t in tGrouped)
            {
                try
                {
                    SendReport(now, timeZone, t);
                }
                catch (System.Security.SecurityException se)
                {
                    logger.Error("SendAutoReports", se);
                }
                catch (Exception ex)
                {
                    logger.ErrorFormat("TemplateId: {0}, Temaplate: {1}\r\n{2}", t.Id, t.Filter.ToXml(), ex);
                }
            }
        }
Пример #2
0
        public void Terminate()
        {
            if (!Global.CanCreateReports)
            {
                throw CRMSecurity.CreateSecurityException();
            }

            DocbuilderReportsUtility.Terminate(ReportOrigin.CRM);
        }
Пример #3
0
        public ReportState GetStatus()
        {
            if (!Global.CanCreateReports)
            {
                throw CRMSecurity.CreateSecurityException();
            }

            return(DocbuilderReportsUtility.Status(ReportOrigin.CRM));
        }
Пример #4
0
        public static bool TryCreateReportFromTemplate(ReportTemplate template, Action <ReportState, string> callback, object obj, out ReportState state, bool auto = false)
        {
            var report = CreateNewReport(template.ReportType, template.Filter);

            template.Name = report.FileName;

            var data = report.GetDocbuilderData(template.Id);

            var dataJson    = JsonConvert.SerializeObject(data);
            var columnsJson = JsonConvert.SerializeObject(report.ExtendedReportType.ColumnsName);
            var filterJson  = JsonConvert.SerializeObject(template.Filter);

            var userCulture    = CoreContext.UserManager.GetUsers(template.CreateBy).GetCulture();
            var timeInterval   = GetIntervarl(template.Filter);
            var reportInfoJson = JsonConvert.SerializeObject(new Dictionary <string, object>
            {
                { "Title", report.ReportInfo.Title },
                { "CreatedText", ReportResource.ReportCreated },
                { "CreatedAt", TenantUtil.DateTimeNow().ToString("M/d/yyyy", CultureInfo.InvariantCulture) },
                { "CreatedBy", ProjectsFilterResource.By + " " + CoreContext.UserManager.GetUsers(template.CreateBy).DisplayUserName(false) },
                { "DateFormat", userCulture.DateTimeFormat.ShortDatePattern },
                { "TimeInterval", timeInterval }
            });

            var tmpFileName = DocbuilderReportsUtility.TmpFileName;

            var script = GetDocbuilderMasterTemplate
                         .Replace("${outputFilePath}", tmpFileName)
                         .Replace("${reportData}", dataJson)
                         .Replace("${reportColumn}", columnsJson)
                         .Replace("${reportFilter}", filterJson)
                         .Replace("${reportInfo}", reportInfoJson.Replace("\"", "\\\""))
                         .Replace("${templateBody}", GetDocbuilderTemplate(report.ReportType.ToString(), report.Filter.ViewType));

            state = new ReportState(report.FileName, tmpFileName, script, (int)template.ReportType, auto ? ReportOrigin.ProjectsAuto : ReportOrigin.Projects, callback, obj);

            if (data.Count == 0)
            {
                state.Exception = ReportResource.ErrorEmptyData;
                state.Status    = ReportStatus.Failed;
                return(false);
            }

            DocbuilderReportsUtility.Enqueue(state);

            return(true);
        }
Пример #5
0
        public static ReportState RunGenareteReport(ReportType reportType, ReportTimePeriod timePeriod, Guid[] managers)
        {
            var reportData = GetReportData(reportType, timePeriod, managers);

            if (reportData == null)
            {
                throw new Exception(CRMReportResource.ErrorNullReportData);
            }

            var tmpFileName = DocbuilderReportsUtility.TmpFileName;

            var script = GetReportScript(reportData, reportType, tmpFileName);

            if (string.IsNullOrEmpty(script))
            {
                throw new Exception(CRMReportResource.ErrorNullReportScript);
            }

            var state = new ReportState(GetFileName(reportType), tmpFileName, script, (int)reportType, ReportOrigin.CRM, SaveReportFile, null);

            DocbuilderReportsUtility.Enqueue(state);

            return(state);
        }
Пример #6
0
        public void TerminateReport()
        {
            ChechDocBuilder();

            DocbuilderReportsUtility.Terminate(ReportOrigin.Projects);
        }
Пример #7
0
        public ReportState GetReportStatus()
        {
            ChechDocBuilder();

            return(DocbuilderReportsUtility.Status(ReportOrigin.Projects));
        }