Ejemplo n.º 1
0
        private static void TimerCallback(object obj)
        {
            lock (Locker)
            {
                var keys = Queue.Keys.ToList();

                foreach (var key in keys)
                {
                    try
                    {
                        Dictionary <string, string> urls;
                        var builderKey = DocumentServiceConnector.DocbuilderRequest(Queue[key].BuilderKey, null, true, out urls);

                        if (builderKey == null)
                        {
                            throw new Exception(CRMReportResource.ErrorNullDocbuilderResponse);
                        }

                        Queue[key].BuilderKey = builderKey;
                        SetCacheValue(Queue[key]);

                        if (urls != null && urls.ContainsKey(TmpFileName))
                        {
                            SaveReportFile(Queue[key], urls[TmpFileName]);
                            Queue.Remove(key);
                        }
                    }
                    catch (Exception ex)
                    {
                        Queue[key].IsCompleted = true;
                        Queue[key].Percentage  = 100;
                        Queue[key].Status      = ReportTaskStatus.Failed;
                        Queue[key].ErrorText   = ex.Message;
                        SetCacheValue(Queue[key]);
                        Queue.Remove(key);
                    }
                }

                if (Queue.Any())
                {
                    RunTimer(1000);
                }
            }
        }
Ejemplo n.º 2
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);
        }