Пример #1
0
        public async Task Show(String Base, String Rep, String id)
        {
            _reportHelper.SetupLicense();
            try
            {
                var          url = $"/_report/{Base.RemoveHeadSlash()}/{Rep}/{id}";
                RequestModel rm  = await RequestModel.CreateFromBaseUrl(_baseController.Host, false, url);

                var rep = rm.GetReport();

                MvcHtmlString result = null;
                using (var pr = Profiler.CurrentRequest.Start(ProfileAction.Report, $"render: {Rep}"))
                {
                    var view = new EmptyView();
                    var vc   = new ViewContext(ControllerContext, view, ViewData, TempData, Response.Output);
                    var hh   = new HtmlHelper(vc, view);
                    result = hh.Stimulsoft().StiMvcViewer("A2v10StiMvcViewer", ViewerOptions);
                }

                var sb = new StringBuilder(ResourceHelper.StiReportHtml);
                sb.Replace("$(StiReport)", result.ToHtmlString());
                sb.Replace("$(Lang)", _baseController.CurrentLang);
                sb.Replace("$(Title)", _baseController.Localize(rep.name ?? Rep));

                Response.Output.Write(sb.ToString());
            }
            catch (Exception ex)
            {
                if (ex.InnerException != null)
                {
                    ex = ex.InnerException;
                }
                Response.Write(ex.Message);
            }
        }
Пример #2
0
        void ShowStimulsoft(RequestReport rep, String repName)
        {
            ReportHelper.SetupLicense();
            try
            {
                rep.CheckPermissions(_baseController.UserStateManager.GetUserPermissions(), _baseController.Host.IsDebugConfiguration);

                MvcHtmlString result = null;
                using (var pr = Profiler.CurrentRequest.Start(ProfileAction.Report, $"render: {repName}"))
                {
                    result = ReportHelper.ShowViewer(this);
                }

                var sb = new StringBuilder(ResourceHelper.StiReportHtml);
                sb.Replace("$(StiReport)", result.ToHtmlString());
                sb.Replace("$(Lang)", _baseController.CurrentLang);
                sb.Replace("$(Title)", _baseController.Localize(rep.name ?? repName));

                Response.Output.Write(sb.ToString());
            }
            catch (Exception ex)
            {
                if (ex.InnerException != null)
                {
                    ex = ex.InnerException;
                }
                Response.Write(ex.Message);
            }
        }
Пример #3
0
 async Task Render(String pathInfo, RequestUrlKind kind)
 {
     /*
      * PARAMS:
      * 1. initial = [queryString, controller]
      * 2. real = [model.json, id, initial]
      */
     //  Ajax
     if (IsNotAjax())
     {
         return;
     }
     try
     {
         Response.ContentType = "text/html";
         ExpandoObject loadPrms = new ExpandoObject();
         // query string
         loadPrms.Append(_baseController.CheckPeriod(Request.QueryString), toPascalCase: true);
         if (pathInfo.StartsWith("app/"))
         {
             // controller after query string
             SetUserTenantToParams(loadPrms);                     // without claims
             await _baseController.RenderApplicationKind(kind, pathInfo, loadPrms, Response.Output);
         }
         else
         {
             // controller after query string
             SetSqlQueryParams(loadPrms);
             await _baseController.RenderElementKind(kind, pathInfo, loadPrms, Response.Output);
         }
     }
     catch (Exception ex)
     {
         if (ex.Message.StartsWith("UI:", StringComparison.OrdinalIgnoreCase))
         {
             var error = _baseController.Localize(ex.Message.Substring(3));
             _baseController.WriteExceptionStatus(ex, Response);
         }
         else
         {
             _baseController.WriteHtmlException(ex, Response.Output);
         }
     }
 }
Пример #4
0
        async Task DownloadImpl(String Base, String id, Boolean raw, HttpResponseBase Response, Action <ExpandoObject> setParams, String suffix, String token)
        {
            try
            {
                var url = $"/_attachment{Base}/{id}";
                var ai  = await _baseController.DownloadAttachment(url, setParams, suffix);

                if (ai == null)
                {
                    throw new RequestModelException($"Attachment not found. (Id:{id})");
                }

                if (!_baseController.IsTokenValid(Response, ai.Token, token))
                {
                    return;
                }

                if (raw)
                {
                    Response.ContentType = "application/octet-stream";
                }
                else
                {
                    Response.ContentType = raw ? "application/octet-stream" : ai.Mime;
                    String repName = ai.Name;
                    if (String.IsNullOrEmpty(repName))
                    {
                        repName = "Attachment";
                    }
                    var cdh = new ContentDispositionHeaderValue("attachment")
                    {
                        FileNameStar = _baseController.Localize(repName) + Mime2Extension(ai.Mime)
                    };
                    Response.Headers.Add("Content-Disposition", cdh.ToString());
                }
                if (ai.Stream != null)
                {
                    Response.BinaryWrite(ai.Stream);
                }
            }
            catch (Exception ex)
            {
                if (raw)
                {
                    _baseController.WriteExceptionStatus(ex, Response);
                }
                else
                {
                    _baseController.WriteHtmlException(ex, Response.Output);
                }
            }
        }
Пример #5
0
 async Task Render(String pathInfo, RequestUrlKind kind)
 {
     //  Ajax
     if (IsNotAjax())
     {
         return;
     }
     try
     {
         Response.ContentType = "text/html";
         ExpandoObject loadPrms = new ExpandoObject();
         loadPrms.Append(_baseController.CheckPeriod(Request.QueryString), toPascalCase: true);
         if (pathInfo.StartsWith("app/"))
         {
             SetUserTenantToParams(loadPrms);                     // without claims
             await _baseController.RenderApplicationKind(kind, pathInfo, loadPrms, Response.Output);
         }
         else
         {
             SetSqlQueryParams(loadPrms);
             await _baseController.RenderElementKind(kind, pathInfo, loadPrms, Response.Output);
         }
     }
     catch (Exception ex)
     {
         if (ex.Message.StartsWith("UI:"))
         {
             var error = _baseController.Localize(ex.Message.Substring(3));
             _baseController.WriteExceptionStatus(ex, Response);
         }
         else
         {
             _baseController.WriteHtmlException(ex, Response.Output);
         }
     }
 }
Пример #6
0
        public async Task <ViewInfo> Dialog(String pathInfo, Int64 userId)
        {
            var requestModel = await RequestModel.CreateFromBaseUrl(_baseController.Host, pathInfo);

            var      rw       = requestModel.CurrentDialog;
            ViewInfo viewInfo = new ViewInfo()
            {
                View   = $"{rw.Path}/{rw.GetView(_baseController.Host.Mobile)}",
                PageId = $"el{Guid.NewGuid()}",
                Id     = rw.Id
            };

            var modelParams = new ExpandoObject();

            if (userId != 0)
            {
                modelParams.Set("UserId", userId);
            }

            var modelScript = new StringBuilder();

            using (var strWriter = new StringWriter(modelScript))
            {
                //rw.view = BaseController.NO_VIEW; // no view here
                //await _baseController.Render(rw, strWriter, modelParams);
            }

            var ctrlScriptSb = new StringBuilder(_baseController.Localize(Resources.standaloneDialogScript));

            ctrlScriptSb.Replace("$(PageGuid)", viewInfo.PageId);

            var scriptSb = new StringBuilder();

            scriptSb.Append("<script type=\"text/javascript\">")
            .AppendLine(modelScript.ToString())
            .AppendLine(ctrlScriptSb.ToString())
            .AppendLine("</script>");

            viewInfo.Scripts = new ScriptInfo()
            {
                Script = scriptSb.ToString()
            };
            return(viewInfo);
        }