Exemplo n.º 1
0
        private Task <object> GetPrintView(IHttpRequest request)
        {
            string formString = request.Form.Form;

            dynamic form = null;

            if (!string.IsNullOrWhiteSpace(formString))
            {
                formString = Uri.UnescapeDataString(formString);
                form       = JsonObjectSerializer.Default.Deserialize(formString);
            }

            if (form != null)
            {
                string documentType  = form.DocumentId;
                string printViewName = form.PrintViewId;
                string actionId      = form.ActionId;

                object filterObject = form.Query;
                int    pageNumber   = form.PageNumber;
                int    pageSize     = form.PageSize;

                FilterCriteria[] filter = null;

                if (filterObject != null)
                {
                    filter = JsonObjectSerializer.Default.ConvertFromDynamic <FilterCriteria[]>(filterObject);
                }

                pageNumber = Math.Max(pageNumber, 0);
                pageSize   = Math.Min(pageSize, 1000);

                var printViewSource = _documentApi.GetDocuments(documentType, filter, pageNumber, pageSize);

                if (!string.IsNullOrEmpty(actionId))
                {
                    var context = new ActionContext {
                        Item = new DynamicWrapper()
                    };
                    context.Item.Parameters      = form;
                    context.Item.PrintViewSource = printViewSource;

                    _scriptProcessor.InvokeScriptByType(actionId, context);

                    printViewSource = context.Result;
                }

                var printView = _printViewApi.Build(documentType, printViewName, printViewSource);

                Task.FromResult <object>(new StreamHttpResponse(printView ?? new byte[] { }, HttpConstants.PdfContentType));
            }

            return(Task.FromResult <object>(null));
        }