private void ValidateDefinition(CustomiseReportModel model) { if (!String.IsNullOrWhiteSpace(model.ReportName)) { if (Regex.Matches(model.ReportName, @"[a-zA-Z ']").Count < model.ReportName.Length) { ModelState.AddModelError("ReportName", "Report Name contains invalid characters(Enter A-Z, a-z, space)."); } } if (!String.IsNullOrWhiteSpace(model.ReportDefinition)) { if (Regex.Matches(model.ReportDefinition, @"[a-zA-Z'!,]").Count < model.ReportDefinition.Length) { ModelState.AddModelError("ReportName", "Definition contains invalid characters (Enter A-Z, a-z, '!,)."); } } if (model.ReportType == 0) { ModelState.AddModelError("ReportType", "Please select a valid report type."); } if (model.CoreEntity == 0) { ModelState.AddModelError("CoreEntity", "Please select a valid core entity."); } if (model.ReportStatus == 0) { ModelState.AddModelError("ReportStatus", "Please select a valid report status."); } }
private void SaveDefinition(CustomiseReportModel model, MetaReport metaReport) { try { // Prepare XML XmlDocument meta = new XmlDocument(); var ns = ""; // urn:pvims-org:v3 XmlNode rootNode = null; XmlAttribute attrib; XmlDeclaration xmlDeclaration = meta.CreateXmlDeclaration("1.0", "UTF-8", null); meta.AppendChild(xmlDeclaration); rootNode = meta.CreateElement("MetaReport", ns); attrib = meta.CreateAttribute("Type"); attrib.InnerText = model.ReportType.ToString(); rootNode.Attributes.Append(attrib); attrib = meta.CreateAttribute("CoreEntity"); attrib.InnerText = model.CoreEntity.ToString(); rootNode.Attributes.Append(attrib); meta.AppendChild(rootNode); var encodedName = System.Web.Security.AntiXss.AntiXssEncoder.HtmlEncode(model.ReportName, false); var encodedDefinition = System.Web.Security.AntiXss.AntiXssEncoder.HtmlEncode(model.ReportDefinition, false); metaReport.MetaDefinition = meta.InnerXml; metaReport.ReportDefinition = encodedDefinition; metaReport.ReportName = encodedName; metaReport.ReportStatus = (MetaReportStatus)model.ReportStatus; if (model.MetaReportId == 0) { _unitOfWork.Repository <MetaReport>().Save(metaReport); } else { _unitOfWork.Repository <MetaReport>().Update(metaReport); } _unitOfWork.Complete(); } catch (Exception ex) { ModelState.AddModelError("ReportName", String.Format("<li>ERROR: {0}...</li>", ex.Message)); } }
private void ExtractMetaDataForCustom(MetaReport metaReport, CustomiseReportModel model) { int tempi; XmlDocument meta = new XmlDocument(); meta.LoadXml(metaReport.MetaDefinition); // Unpack structures XmlNode rootNode = meta.SelectSingleNode("//MetaReport"); XmlAttribute typeAttr = rootNode.Attributes["Type"]; XmlAttribute entityAttr = rootNode.Attributes["CoreEntity"]; model.CoreEntity = entityAttr != null?int.TryParse(entityAttr.Value, out tempi) ? Convert.ToInt32(entityAttr.Value) : 0 : 0; model.ReportType = typeAttr != null?int.TryParse(typeAttr.Value, out tempi) ? Convert.ToInt32(typeAttr.Value) : 0 : 0; model.ViewType = model.ReportType == 1 ? Models.ViewType.List : Models.ViewType.Summary; }
public ActionResult CustomiseReport(int metaReportId) { ViewBag.MenuItem = CurrentMenuItem; var metaReport = _unitOfWork.Repository <MetaReport>() .Queryable() .SingleOrDefault(r => r.Id == metaReportId); // Prepare model var model = new CustomiseReportModel { MetaReportId = metaReportId, ReportName = metaReport != null ? metaReport.ReportName : string.Empty, ReportDefinition = metaReport != null ? metaReport.ReportDefinition : string.Empty, ReportStatus = metaReport != null?Convert.ToInt32(metaReport.ReportStatus) : 2, AllowDeletion = System.Web.HttpContext.Current.User.IsInRole(Constants.Role.ReporterAdministrator) }; if (metaReport != null) { ExtractMetaDataForCustom(metaReport, model); } ViewBag.CoreEntities = new List <SelectListItem> { new SelectListItem { Value = "0", Text = "", Selected = true } }; ViewBag.CoreEntities.AddRange(_unitOfWork.Repository <MetaTable>().Queryable() .OrderBy(mt => mt.FriendlyName).Select(mt => new SelectListItem { Value = mt.Id.ToString(), Text = mt.FriendlyName }).ToList()); ViewBag.ReportTypes = new[] { new SelectListItem { Value = "0", Text = "" }, new SelectListItem { Value = "1", Text = "List", Selected = true }, new SelectListItem { Value = "2", Text = "Summary" } }; ViewBag.ReportStatuses = new[] { new SelectListItem { Value = "0", Text = "" }, new SelectListItem { Value = "2", Text = "Unpublished", Selected = true }, new SelectListItem { Value = "1", Text = "Published" } }; return(View(model)); }
public ActionResult CustomiseReport(CustomiseReportModel model) { ViewBag.MenuItem = CurrentMenuItem; var metaReport = _unitOfWork.Repository <MetaReport>() .Queryable() .SingleOrDefault(r => r.Id == model.MetaReportId); if (metaReport == null) { metaReport = new MetaReport(); } ValidateDefinition(model); if (ModelState.IsValid) { SaveDefinition(model, metaReport); HttpCookie cookie = new HttpCookie("PopUpMessage"); cookie.Value = "Report saved successfully"; Response.Cookies.Add(cookie); return(Redirect("/Reports/Index")); } ViewBag.CoreEntities = new List <SelectListItem> { new SelectListItem { Value = "0", Text = "", Selected = true } }; ViewBag.CoreEntities.AddRange(_unitOfWork.Repository <MetaTable>().Queryable() .OrderBy(mt => mt.FriendlyName).Select(mt => new SelectListItem { Value = mt.Id.ToString(), Text = mt.FriendlyName }).ToList()); ViewBag.ReportTypes = new[] { new SelectListItem { Value = "0", Text = "" }, new SelectListItem { Value = "1", Text = "List", Selected = true }, new SelectListItem { Value = "2", Text = "Summary" } }; ViewBag.ReportStatuses = new[] { new SelectListItem { Value = "0", Text = "" }, new SelectListItem { Value = "2", Text = "Unpublished", Selected = true }, new SelectListItem { Value = "1", Text = "Published" } }; return(View(model)); }