Exemplo n.º 1
0
        public void Execute(TaskExecutionContext ctx)
        {
            var profileId = ctx.ScheduleTask.Alias.ToInt();
            var profile   = _exportProfileService.GetExportProfileById(profileId);

            // load provider
            var provider = _exportProfileService.LoadProvider(profile.ProviderSystemName);

            if (provider == null)
            {
                throw new SmartException(T("Admin.Common.ProviderNotLoaded", profile.ProviderSystemName.NaIfEmpty()));
            }

            // build export request
            var request = new DataExportRequest(profile, provider);

            request.ProgressValueSetter = delegate(int val, int max, string msg)
            {
                ctx.SetProgress(val, max, msg, true);
            };

            if (ctx.Parameters.ContainsKey("SelectedIds"))
            {
                request.EntitiesToExport = ctx.Parameters["SelectedIds"]
                                           .SplitSafe(",")
                                           .Select(x => x.ToInt())
                                           .ToList();
            }

            // process!
            _exporter.Export(request, ctx.CancellationToken);
        }
        public int GetDataCount(DataExportRequest request)
        {
            var cancellation = new CancellationTokenSource(TimeSpan.FromMinutes(5.0));

            var ctx = new DataExporterContext(request, cancellation.Token, true);

            var unused = Init(ctx);

            var totalCount = ctx.RecordsPerStore.First().Value;

            return totalCount;
        }
        public IList<dynamic> Preview(DataExportRequest request, int pageIndex, int? totalRecords = null)
        {
            var resultData = new List<dynamic>();
            var cancellation = new CancellationTokenSource(TimeSpan.FromMinutes(5.0));

            var ctx = new DataExporterContext(request, cancellation.Token, true);

            var unused = Init(ctx, totalRecords);

            if (!HasPermission(ctx))
                throw new SmartException(T("Admin.AccessDenied"));

            using (var segmenter = CreateSegmenter(ctx, pageIndex))
            {
                if (segmenter == null)
                {
                    throw new SmartException(T("Admin.Common.UnsupportedEntityType", ctx.Request.Provider.Value.EntityType.ToString()));
                }

                while (segmenter.HasData)
                {
                    segmenter.RecordPerSegmentCount = 0;

                    while (segmenter.ReadNextSegment())
                    {
                        resultData.AddRange(segmenter.CurrentSegment);
                    }
                }

                DetachAllEntitiesAndClear(ctx);
            }

            if (ctx.Result.LastError.HasValue())
            {
                _services.Notifier.Error(ctx.Result.LastError);
            }

            return resultData;
        }
        public DataExportResult Export(DataExportRequest request, CancellationToken cancellationToken)
        {
            var ctx = new DataExporterContext(request, cancellationToken);

            ExportCoreOuter(ctx);

            cancellationToken.ThrowIfCancellationRequested();

            return ctx.Result;
        }