private ge_transform_parameters getTransformParameters(Guid transformId, Guid?Id, Guid?projectId, Guid?groupId, string[] projects, string[] holes, string[] tables, string[] geols, string[] options, string arg_vals, string flwor, string xpath, string version) { ge_transform_parameters transform_params = new ge_transform_parameters(); if (!String.IsNullOrEmpty(transform.parameters)) { try { transform_params = Newtonsoft.Json.JsonConvert.DeserializeObject <ge_transform_parameters>(transform.parameters); } catch (Newtonsoft.Json.JsonReaderException e) { Console.WriteLine(e.Message); } } /* Incase all parameters are passed in first element of parameters array purgeArray for delimiters*/ string[] delims = new string[] { ",", ";" }; if (projects.Any()) { projects = projects.purgeArray(delims); transform_params.projects = projects; } if (holes.Any()) { holes = holes.purgeArray(delims); xml_data = getHoles(xml_data, holes); transform_params.holes = holes; } if (tables.Any()) { tables = tables.purgeArray(delims); transform_params.tables = tables; } if (geols.Any()) { geols = geols.purgeArray(delims); xml_data = getGeols(xml_data, geols); transform_params.geols = geols; } if (options.Any()) { options = options.purgeArray(delims); transform_params.options = options; } if (!String.IsNullOrEmpty(arg_vals)) { /* To be added process FLO string */ transform_params.arg_vals = arg_vals; } if (!String.IsNullOrEmpty(flwor)) { /* To be added process FLO string */ transform_params.flwor = flwor; } if (!String.IsNullOrEmpty(xpath)) { xml_data = getXPath(xml_data, xpath); transform_params.xpath = xpath; } if (transformId != null & transformId != Guid.Empty) { transform_params.transformId = transformId.ToString(); } if (Id != null & Id != Guid.Empty) { transform_params.Id = Id.ToString(); } if (projectId != null & projectId != Guid.Empty) { transform_params.projectId = projectId.ToString(); } if (groupId != null & groupId != Guid.Empty) { transform_params.groupId = groupId.ToString(); } /* Add current local parameters for passing to stylesheet */ transform_params.host = getHostHref(); transform_params.host_view = getHostHref() + constHref_transform; transform_params.host_file = getHostHref() + constHref_dataVIEW; transform_params.host_download = getHostHref() + constHref_dataDOWNLOAD; transform_params.host_esri = getHostHref() + constHref_esriFEATURE; transform_params.host_logger = getHostHref() + constHref_Logger; transform_params.host_gint = getHostHref() + constHref_gINT; transform_params.host_tablefile = getHostHref() + constHref_TableFile; transform_params.host_ags = getHostHref() + constHref_AGS; transform_params.version = version; // transform_params.sessionid = this.Session.Id; var user = GetUserAsync(); if (user != null) { ge_user u = user.Result as ge_user; transform_params.user = u.FirstName + ' ' + u.LastName + '(' + u.Email + ')'; } return(transform_params); }
public async Task <ActionResult> View(Guid transformId, Guid?Id, Guid?projectId, Guid?groupId, string[] projects, string[] holes, string[] tables, string[] geols, string[] options, string[] args, string[] vals, string flwor, string xpath, string version) { if (transformId == Guid.Empty) { return(new EmptyResult()); } transform = _context.ge_transform. Include(t => t.project). Where(t => t.Id == transformId).FirstOrDefault(); if (transform == null) { return(new EmptyResult()); } string arg_val = ""; for (int i = 0; i < args.Length; i++) { if (arg_val.Length > 0) { arg_val += "&"; } arg_val += args[i] + "=" + vals[i]; } if (projectId == null) { projectId = transform.projectId; } if (groupId == null) { groupId = transform.project.groupId; } ge_transform_parameters transform_params = getTransformParameters(transformId, Id, projectId, groupId, projects, holes, tables, geols, options, arg_val, flwor, xpath, version); /* Convert JSON back to string to pass via ViewBag */ string parameters = JsonConvert.SerializeObject(transform_params); if (transform.service_endpoint != null) { string endpoint = getEndPointURL(transform.service_endpoint); var resp = await getServiceEndPointData(endpoint, transform_params); var xmlResult = resp as XmlActionResult; if (xmlResult != null) { xml_data = xmlResult.Value(); } var okResult = resp as OkObjectResult; if (okResult != null) { if (okResult.StatusCode == 200) { xml_data = okResult.Value as string; } } } if (transform.dataId != null && transform.storedprocedure == null) { xml_data = await new ge_dataController(_context, _authorizationService, _userManager, _env, _ge_config).getDataAsParsedXmlString(transform.dataId.Value); } if (transform.styleId != null) { xsl_data = await new ge_dataController(_context, _authorizationService, _userManager, _env, _ge_config).getDataAsParsedXmlString(transform.styleId.Value); } if (transform.queryId != null) { qry_data = await new ge_dataController(_context, _authorizationService, _userManager, _env, _ge_config).getDataAsString(transform.queryId.Value, false); } if (transform.dataId != null && transform.storedprocedure != null) { string dataId = transform.dataId.ToString(); if (!String.IsNullOrEmpty(transform.add_data)) { dataId = dataId + ";" + transform.add_data; } string[] data_all = dataId.Split(";"); string rawSQL = getSQLCommand(constSELECTALLFROM, data_all, holes, tables, version); ge_data_file task_xml_data_big = await _context.ge_data_file.FromSql(rawSQL).SingleOrDefaultAsync(); xml_data = task_xml_data_big.getParsedXMLstring(null); } if (!String.IsNullOrEmpty(qry_data)) { string res = XQuery(xml_data, qry_data); if (!String.IsNullOrEmpty(res)) { xml_data = res; } } if (xml_data == null || xsl_data == null) { new EmptyResult(); } ViewBag.xml_data = xml_data; ViewBag.xsl_stylesheet = xsl_data; ViewBag.xlt_arguments = parameters; return(View("View")); }
public async Task <IActionResult> getServiceEndPointData(string url, ge_transform_parameters transform_params) { Guid?Id = null; Guid?projectId = null; Guid?groupId = null; if (transform_params.Id != null) { Id = new Guid(transform_params.Id); } if (transform_params.projectId != null) { projectId = new Guid(transform_params.projectId); } if (transform_params.groupId != null) { groupId = new Guid(transform_params.groupId); } if (url == ge_gis_xmlGet_Endpoint) { var res = await new ge_gisController(_context, _authorizationService, _userManager, _env, _ge_config).xmlGet(projectId); if (res == null) { return(NotFound()); } return(res); } if (url == ge_data_xmlGetData_Endpoint) { var res = await new ge_dataController(_context, _authorizationService, _userManager, _env, _ge_config).xmlGetData(Id, projectId, groupId); if (res == null) { return(UnprocessableEntity("data is null for projectid {} groupid {}")); } // var emptyNamespaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty }); // var settings = new XmlWriterSettings(); // settings.Indent = true; // settings.OmitXmlDeclaration = true; // var serializer = new XmlSerializer(typeof(List<ge_data>), // new XmlRootAttribute("ge_root")); // using (var stream = new StringWriter()) // using (var writer = XmlWriter.Create(stream, settings)) // { // serializer.Serialize(writer, res, emptyNamespaces); // return Ok(stream.ToString()); // } string s1 = XmlSerialiseList <ge_data>(res, "ge_root"); return(Ok(s1)); } if (url == ge_data_xmlGetProjects_Endpoint) { var res = await new ge_dataController(_context, _authorizationService, _userManager, _env, _ge_config).xmlGetProjects(groupId); if (res == null) { return(UnprocessableEntity("ge_project is null for groupid {}")); } //to prevent circular reference in xml serialisation; foreach (ge_project p in res) { p.transform = null; } string s1 = XmlSerialiseList <ge_project>(res, "ge_root"); return(Ok(s1)); // var emptyNamespaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty }); // var settings = new XmlWriterSettings(); // settings.Indent = true; // settings.OmitXmlDeclaration = true; // var serializer = new XmlSerializer(typeof(List<ge_project>), // new XmlRootAttribute("ge_root")); // using (var stream = new StringWriter()) // using (var writer = XmlWriter.Create(stream, settings)) // { // serializer.Serialize(writer, res, emptyNamespaces); // return Ok(stream.ToString()); // } } if (url.Contains("ge_LTC2/ViewSurvey123")) { string hole_id = null; if (!String.IsNullOrEmpty(transform_params.arg_vals)) { string[] args = transform_params.arg_vals.Split("&"); foreach (string arg in args) { if (arg.Contains("hole_id")) { string[] arg_val = arg.Split("="); hole_id = arg_val[1]; } } } var res = await new ge_LTC2Controller(_context, _authorizationService, _userManager, _env, _ge_config).ViewSurvey123(projectId.Value, hole_id); return(res); } string url2 = transform_params.host + "/" + url; if (!String.IsNullOrEmpty(transform_params.arg_vals)) { url2 += "\\?" + transform_params.arg_vals; } var resp = Redirect(url2); return(resp); // HttpClient _httpClient = new HttpClient(); // var response = await _httpClient.PostAsync(url2, null); // var result = await response.Content.ReadAsStringAsync(); // return StatusCode((int)response.StatusCode, response);; }
public async Task <IActionResult> OnGetAsync(Guid dataId) { if (dataId == null) { return(NotFound()); } var data = await _context.ge_data.Include(d => d.project) .Where(d => d.Id == dataId) .Where(d => d.fileext == AGS.FileExtension.XML) .FirstOrDefaultAsync(); if (data == null) { return(NotFound()); } var task_ags_version = await getAGSVersion(dataId); string ags_version = task_ags_version.Value; if (String.IsNullOrEmpty(ags_version)) { return(RedirectToPageMessage(msgCODE.TRANSFORM_AGS_NONE)); } // Create a new transform to check authorisations transform = new ge_transform(); transform.dataId = dataId; transform.project = data.project; transform.projectId = data.projectId; var UserAuthorised = await IsUserCreateAuthorised(); if (IsCreateAllowed() != geOPSResp.Allowed) { return(RedirectToPageMessage(msgCODE.TRANSFORM_CREATE_PROHIBITED)); } if (!UserAuthorised.Succeeded) { return(RedirectToPageMessage(msgCODE.TRANSFORM_CREATE_USER_PROHIBITED)); } ge_transform_parameters ags_transforms = getAGSTransforms(ags_version); if (ags_transforms == null) { return(RedirectToPageMessage(msgCODE.TRANSFORM_AGS_NONE)); } project = new ge_transform(); project.Id = Guid.NewGuid(); project.projectId = data.projectId; project.name = "Project Summaries for " + data.filename; project.description = "HTML transforms for AGSML Project (" + GetTimestamp(DateTime.Now) + ")"; project.styleId = Guid.Parse(ags_transforms.project); project.operations = data.project.data_operations; hole = new ge_transform(); hole.Id = Guid.NewGuid(); hole.projectId = data.projectId; hole.name = "Hole Summaries for " + data.filename; hole.description = "HTML transforms for AGSML Hole (" + GetTimestamp(DateTime.Now) + ")"; hole.styleId = Guid.Parse(ags_transforms.hole); hole.operations = data.project.data_operations; table = new ge_transform(); table.Id = Guid.NewGuid(); table.projectId = data.projectId; table.name = "Table Summaries for " + data.filename; table.description = "HTML transforms for AGSML Tables (" + GetTimestamp(DateTime.Now) + ")"; table.styleId = Guid.Parse(ags_transforms.table); table.operations = data.project.data_operations; ge_transform_parameters tparams = new ge_transform_parameters(); tparams.project = project.Id.ToString(); tparams.hole = hole.Id.ToString(); tparams.table = table.Id.ToString(); string json_tparams = JsonConvert.SerializeObject(tparams); transform.parameters = json_tparams; // /*Add prospective transforms to list incase user wants to rebuilds json string */ // ge_transform[] Addtransforms = {project, hole, table}; // var Alltransforms = transforms.Concat(Addtransforms); // ViewData["styleId"] = new SelectList(xlt_data, "Id", "filename"); // ViewData["transformId"] = new SelectList(Alltransforms, "Id", "name"); // string[] p = new [] {"project","hole","table","geol"}; // ViewData["selectparameter"] = new SelectList(p); setViewData(); return(Page()); }