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); } }
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); } }
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); } } }
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); } } }
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); } } }
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); }