Пример #1
0
        public static ReportTaskState RunGenareteReport(ReportType reportType, ReportTimePeriod timePeriod,
                                                        Guid[] managers)
        {
            var state = new ReportTaskState
            {
                Id          = GetCacheKey(),
                Status      = ReportTaskStatus.Queued,
                ReportType  = reportType,
                Percentage  = 0,
                IsCompleted = false,
                ErrorText   = null,
                FileName    = GetFileName(reportType),
                FileId      = 0
            };

            SetCacheValue(state);

            var th = new Thread(StartGenareteReport);

            th.Start(new ReportTaskParameters
            {
                TaskState   = state,
                TenantId    = TenantProvider.CurrentTenantID,
                CurrentUser = SecurityContext.CurrentAccount.ID,
                ReportType  = reportType,
                TimePeriod  = timePeriod,
                Managers    = managers,
                Url         = HttpContext.Current != null ? HttpContext.Current.Request.GetUrlRewriter().ToString() : null
            });

            return(state);
        }
Пример #2
0
        public 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 reportStateData = new ReportStateData(
                GetFileName(reportType),
                tmpFileName,
                script,
                (int)reportType,
                ReportOrigin.CRM,
                SaveReportFile,
                null,
                _tenantManager.GetCurrentTenant().TenantId,
                _securityContext.CurrentAccount.ID);

            var state = new ReportState(_serviceProvider, reportStateData, _httpContext);

            _docbuilderReportsUtilityHelper.Enqueue(state);

            return(state);
        }
Пример #3
0
        public bool CheckReportData(ReportType reportType, ReportTimePeriod timePeriod, Guid[] managers)
        {
            var reportDao = _daoFactory.GetReportDao();

            throw new NotImplementedException();

            //switch (reportType)
            //{
            //    case ReportType.SalesByManagers:
            //        return reportDao.CheckSalesByManagersReportData(timePeriod, managers);
            //    case ReportType.SalesForecast:
            //        return reportDao.CheckSalesForecastReportData(timePeriod, managers);
            //    case ReportType.SalesFunnel:
            //        return reportDao.CheckSalesFunnelReportData(timePeriod, managers);
            //    case ReportType.WorkloadByContacts:
            //        return reportDao.CheckWorkloadByContactsReportData(timePeriod, managers);
            //    case ReportType.WorkloadByTasks:
            //        return reportDao.CheckWorkloadByTasksReportData(timePeriod, managers);
            //    case ReportType.WorkloadByDeals:
            //        return reportDao.CheckWorkloadByDealsReportData(timePeriod, managers);
            //    case ReportType.WorkloadByInvoices:
            //        return reportDao.CheckWorkloadByInvoicesReportData(timePeriod, managers);
            //    case ReportType.WorkloadByVoip:
            //        return reportDao.CheckWorkloadByViopReportData(timePeriod, managers);
            //    case ReportType.SummaryForThePeriod:
            //        return reportDao.CheckSummaryForThePeriodReportData(timePeriod, managers);
            //    case ReportType.SummaryAtThisMoment:
            //        return reportDao.CheckSummaryAtThisMomentReportData(timePeriod, managers);
            //    default:
            //        return false;
            //}
        }
 public void OutputReportTimePeriod(ReportTimePeriod valueSet)
 {
     OutputStatusMessage(string.Format("Values in {0}", valueSet.GetType()));
     foreach (var value in Enum.GetValues(typeof(ReportTimePeriod)))
     {
         OutputStatusMessage(value.ToString());
     }
 }
Пример #5
0
        public ReportState GenerateReport(ReportType type, ReportTimePeriod timePeriod, Guid[] managers)
        {
            if (!Global.CanCreateReports)
            {
                throw CRMSecurity.CreateSecurityException();
            }

            return(ReportHelper.RunGenareteReport(type, timePeriod, managers));
        }
Пример #6
0
        public ReportTaskState GenerateReport(ReportType type, ReportTimePeriod timePeriod, Guid[] managers)
        {
            if (!Global.CanCreateReports)
            {
                throw CRMSecurity.CreateSecurityException();
            }

            var state = ReportHelper.GetCurrentState();

            return(state ?? ReportHelper.RunGenareteReport(type, timePeriod, managers));
        }
Пример #7
0
        public object CheckReportData(ReportType type, ReportTimePeriod timePeriod, Guid[] managers)
        {
            if (!Global.CanCreateReports)
            {
                throw CRMSecurity.CreateSecurityException();
            }

            return(new
            {
                hasData = ReportHelper.CheckReportData(type, timePeriod, managers),
                missingRates = ReportHelper.GetMissingRates(type)
            });
        }
Пример #8
0
        private static object GetReportData(ReportType reportType, ReportTimePeriod timePeriod, Guid[] managers)
        {
            using (var scope = DIHelper.Resolve())
            {
                var reportDao = scope.Resolve <DaoFactory>().ReportDao;

                var defaultCurrency = Global.TenantSettings.DefaultCurrency.Abbreviation;

                switch (reportType)
                {
                case ReportType.SalesByManagers:
                    return(reportDao.GetSalesByManagersReportData(timePeriod, managers, defaultCurrency));

                case ReportType.SalesForecast:
                    return(reportDao.GetSalesForecastReportData(timePeriod, managers, defaultCurrency));

                case ReportType.SalesFunnel:
                    return(reportDao.GetSalesFunnelReportData(timePeriod, managers, defaultCurrency));

                case ReportType.WorkloadByContacts:
                    return(reportDao.GetWorkloadByContactsReportData(timePeriod, managers));

                case ReportType.WorkloadByTasks:
                    return(reportDao.GetWorkloadByTasksReportData(timePeriod, managers));

                case ReportType.WorkloadByDeals:
                    return(reportDao.GetWorkloadByDealsReportData(timePeriod, managers, defaultCurrency));

                case ReportType.WorkloadByInvoices:
                    return(reportDao.GetWorkloadByInvoicesReportData(timePeriod, managers));

                case ReportType.WorkloadByVoip:
                    return(reportDao.GetWorkloadByViopReportData(timePeriod, managers));

                case ReportType.SummaryForThePeriod:
                    return(reportDao.GetSummaryForThePeriodReportData(timePeriod, managers, defaultCurrency));

                case ReportType.SummaryAtThisMoment:
                    return(reportDao.GetSummaryAtThisMomentReportData(timePeriod, managers, defaultCurrency));

                default:
                    return(null);
                }
            }
        }
Пример #9
0
        public static bool CheckReportData(ReportType reportType, ReportTimePeriod timePeriod, Guid[] managers)
        {
            using (var scope = DIHelper.Resolve())
            {
                var reportDao = scope.Resolve <DaoFactory>().ReportDao;

                switch (reportType)
                {
                case ReportType.SalesByManagers:
                    return(reportDao.CheckSalesByManagersReportData(timePeriod, managers));

                case ReportType.SalesForecast:
                    return(reportDao.CheckSalesForecastReportData(timePeriod, managers));

                case ReportType.SalesFunnel:
                    return(reportDao.CheckSalesFunnelReportData(timePeriod, managers));

                case ReportType.WorkloadByContacts:
                    return(reportDao.CheckWorkloadByContactsReportData(timePeriod, managers));

                case ReportType.WorkloadByTasks:
                    return(reportDao.CheckWorkloadByTasksReportData(timePeriod, managers));

                case ReportType.WorkloadByDeals:
                    return(reportDao.CheckWorkloadByDealsReportData(timePeriod, managers));

                case ReportType.WorkloadByInvoices:
                    return(reportDao.CheckWorkloadByInvoicesReportData(timePeriod, managers));

                case ReportType.WorkloadByVoip:
                    return(reportDao.CheckWorkloadByViopReportData(timePeriod, managers));

                case ReportType.SummaryForThePeriod:
                    return(reportDao.CheckSummaryForThePeriodReportData(timePeriod, managers));

                case ReportType.SummaryAtThisMoment:
                    return(reportDao.CheckSummaryAtThisMomentReportData(timePeriod, managers));

                default:
                    return(false);
                }
            }
        }
Пример #10
0
        private object GetReportData(ReportType reportType, ReportTimePeriod timePeriod, Guid[] managers)
        {
            var crmSettings = _settingsManager.Load <CrmSettings>();

            var reportDao       = _daoFactory.GetReportDao();
            var defaultCurrency = _currencyProvider.Get(crmSettings.DefaultCurrency).Abbreviation;

            switch (reportType)
            {
            case ReportType.SalesByManagers:
                return(reportDao.GetSalesByManagersReportData(timePeriod, managers, defaultCurrency));

            case ReportType.SalesForecast:
                return(reportDao.GetSalesForecastReportData(timePeriod, managers, defaultCurrency));

            case ReportType.SalesFunnel:
                return(reportDao.GetSalesFunnelReportData(timePeriod, managers, defaultCurrency));

            case ReportType.WorkloadByContacts:
                return(reportDao.GetWorkloadByContactsReportData(timePeriod, managers));

            case ReportType.WorkloadByTasks:
                return(reportDao.GetWorkloadByTasksReportData(timePeriod, managers));

            case ReportType.WorkloadByDeals:
                return(reportDao.GetWorkloadByDealsReportData(timePeriod, managers, defaultCurrency));

            case ReportType.WorkloadByInvoices:
                return(reportDao.GetWorkloadByInvoicesReportData(timePeriod, managers));

            case ReportType.WorkloadByVoip:
                return(reportDao.GetWorkloadByViopReportData(timePeriod, managers));

            case ReportType.SummaryForThePeriod:
                return(reportDao.GetSummaryForThePeriodReportData(timePeriod, managers, defaultCurrency));

            case ReportType.SummaryAtThisMoment:
                return(reportDao.GetSummaryAtThisMomentReportData(timePeriod, managers, defaultCurrency));

            default:
                return(null);
            }
        }
Пример #11
0
        public static bool CheckReportData(ReportType reportType, ReportTimePeriod timePeriod, Guid[] managers)
        {
            var reportDao = Global.DaoFactory.GetReportDao();

            switch (reportType)
            {
            case ReportType.SalesByManagers:
                return(reportDao.CheckSalesByManagersReportData(timePeriod, managers));

            case ReportType.SalesForecast:
                return(reportDao.CheckSalesForecastReportData(timePeriod, managers));

            case ReportType.SalesFunnel:
                return(reportDao.CheckSalesFunnelReportData(timePeriod, managers));

            case ReportType.WorkloadByContacts:
                return(reportDao.CheckWorkloadByContactsReportData(timePeriod, managers));

            case ReportType.WorkloadByTasks:
                return(reportDao.CheckWorkloadByTasksReportData(timePeriod, managers));

            case ReportType.WorkloadByDeals:
                return(reportDao.CheckWorkloadByDealsReportData(timePeriod, managers));

            case ReportType.WorkloadByInvoices:
                return(reportDao.CheckWorkloadByInvoicesReportData(timePeriod, managers));

            case ReportType.WorkloadByVoip:
                return(reportDao.CheckWorkloadByViopReportData(timePeriod, managers));

            case ReportType.SummaryForThePeriod:
                return(reportDao.CheckSummaryForThePeriodReportData(timePeriod, managers));

            case ReportType.SummaryAtThisMoment:
                return(reportDao.CheckSummaryAtThisMomentReportData(timePeriod, managers));

            default:
                return(false);
            }
        }
Пример #12
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);
        }
Пример #13
0
        private static void GenareteReport(ReportTaskState state, ReportType reportType, ReportTimePeriod timePeriod,
                                           Guid[] managers)
        {
            state.Status     = ReportTaskStatus.Started;
            state.Percentage = 10;
            SetCacheValue(state);

            var reportData = GetReportData(reportType, timePeriod, managers);

            if (reportData != null)
            {
                state.Percentage = 50;
            }
            else
            {
                state.Percentage  = 100;
                state.IsCompleted = true;
                state.ErrorText   = CRMReportResource.ErrorNullReportData;
                state.Status      = ReportTaskStatus.Failed;
            }

            SetCacheValue(state);

            if (state.Status == ReportTaskStatus.Failed)
            {
                return;
            }

            var script = GetReportScript(reportData, reportType);

            if (!string.IsNullOrEmpty(script))
            {
                state.Percentage = 60;
            }
            else
            {
                state.Percentage  = 100;
                state.IsCompleted = true;
                state.ErrorText   = CRMReportResource.ErrorNullReportScript;
                state.Status      = ReportTaskStatus.Failed;
            }

            SetCacheValue(state);

            if (state.Status == ReportTaskStatus.Failed)
            {
                return;
            }

            try
            {
                Dictionary <string, string> urls;
                state.BuilderKey = DocumentServiceConnector.DocbuilderRequest(null, script, true, out urls);

                state.Percentage = 80;
            }
            catch (Exception ex)
            {
                state.Percentage  = 100;
                state.IsCompleted = true;
                state.ErrorText   = ex.Message;
                state.Status      = ReportTaskStatus.Failed;
            }

            SetCacheValue(state);

            if (state.Status == ReportTaskStatus.Failed)
            {
                return;
            }

            InsertItem(state);
        }
Пример #14
0
        private static void GenareteReport(ReportTaskState state, ReportType reportType, ReportTimePeriod timePeriod,
                                           Guid[] managers)
        {
            state.Status     = ReportTaskStatus.Started;
            state.Percentage = 10;
            SetCacheValue(state);

            var reportData = GetReportData(reportType, timePeriod, managers);

            if (reportData != null)
            {
                state.Percentage = 50;
            }
            else
            {
                state.Percentage  = 100;
                state.IsCompleted = true;
                state.ErrorText   = CRMReportResource.ErrorNullReportData;
                state.Status      = ReportTaskStatus.Failed;
            }

            SetCacheValue(state);

            if (state.Status == ReportTaskStatus.Failed)
            {
                return;
            }

            var script = GetReportScript(reportData, reportType);

            if (!string.IsNullOrEmpty(script))
            {
                state.Percentage = 60;
            }
            else
            {
                state.Percentage  = 100;
                state.IsCompleted = true;
                state.ErrorText   = CRMReportResource.ErrorNullReportScript;
                state.Status      = ReportTaskStatus.Failed;
            }

            SetCacheValue(state);

            if (state.Status == ReportTaskStatus.Failed)
            {
                return;
            }

            state.Response = DocumentService.DocbuilderRequest(FilesLinkUtility.DocServiceDocbuilderUrl, null,
                                                               script, true, FileUtility.SignatureSecret);

            if (state.Response != null && state.Response.Error == 0)
            {
                state.Percentage = 80;
            }
            else
            {
                state.Percentage  = 100;
                state.IsCompleted = true;
                state.ErrorText   = state.Response == null
                                      ? CRMReportResource.ErrorNullDocbuilderResponse
                                      : state.Response.GetErrorText();
                state.Status = ReportTaskStatus.Failed;
            }

            SetCacheValue(state);

            if (state.Status == ReportTaskStatus.Failed)
            {
                return;
            }

            InsertItem(state);
        }