public string BuildResponse(NVAATS_PARAMS _pars, IAxCommon context) { //var 1 = (1) var proc = new Resp <(NVAATS_PARAMS prs, IAxCommon ctx)>(0, (_pars, context)) .Step <(NVAATS_PARAMS prs, IAxCommon ctx, NVAATS_SETTING stng)>( x => x.ctx.NvaAtsSetting.Access.Reader.GetAll().Count() > 0, 1, // Не вижу сеттинга x => (x.prs, x.ctx, x.ctx.NvaAtsSetting.Access.Reader.GetAll().First(r => true)), (null, null, null) ) .Step( x => x.stng.ISAUTHONLY == 0 || (x.prs.uid != null && (( x.prs.pwd != null && x.prs.pwd == x.stng.PASS && x.prs.uid == x.stng.LOGIN ) || ( x.prs.pwd != null && x.prs.pwd == x.stng.PASS2 && x.prs.uid == x.stng.LOGIN2 ) )), 3, // Auth false x => x ) .Step( x => x.prs.aNumber != null, 105, x => x ) .Step <(NVAATS_PARAMS prs, IAxCommon ctx, NVAATS_SETTING stng, NVAATS_PHONES phn)>( x => x.ctx.NvaAtsPhones.Access.Reader.Find(x.prs.aNumber) != null, 4, // Phone not found x => (x.prs, x.ctx, x.stng, x.ctx.NvaAtsPhones.Access.Reader.Find(x.prs.aNumber)), (null, null, null, null) ) .Step <string>( x => true, 0, x => this.buildBody(x.prs, x.ctx, x.stng, x.phn), (null) ) .Step( x => x != null, 2, x => x ); return(this.BuildWrap(proc.Err, proc.Body)); }
private string buildBody(NVAATS_PARAMS prs, IAxCommon ctx, NVAATS_SETTING stng, NVAATS_PHONES phn) { try { var dev = ctx.NvaAtsDevice.Access.Reader.Find(phn.DEVICEID); var devid = (dev == null) ? Guid.Empty.ToString() : dev.GUID.ToString(); var bld = ctx.NvaAtsBuilding.Access.Reader.Find(phn.BUILDINGID); var bldid = (bld == null) ? Guid.Empty.ToString() : bld.GUID.ToString(); var doc = new XmlDocument(); XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration("1.0", "UTF-8", null); XmlElement root = doc.DocumentElement; doc.InsertBefore(xmlDeclaration, root); //(2) string.Empty makes cleaner code XmlElement element1 = doc.CreateElement(string.Empty, "presence", "urn:ietf:params:xml:ns:pidf"); //slide2XmlWriter.WriteAttributeString("xmlns", "a", null, "http://schemas.openxmlformats.org/drawingml/2006/main"); var ns_dm = "urn:ietf:params:xml:ns:pidf:data-model"; var ns_gp = "urn:ietf:params:xml:ns:pidf:geopriv10"; var ns_cl = "urn:ietf:params:xml:ns:pidf:geopriv10:civicLoc"; element1.SetAttribute("xmlns:dm", ns_dm); element1.SetAttribute("xmlns:gp", ns_gp); element1.SetAttribute("xmlns:cl", ns_cl); element1.SetAttribute("entity", phn.PHONE); doc.AppendChild(element1); XmlElement element2 = doc.CreateElement("dm", "device", ns_dm); element2.SetAttribute("id", devid); element1.AppendChild(element2); XmlElement element3 = doc.CreateElement("gp", "geopriv", ns_gp); element2.AppendChild(element3); XmlElement element4 = doc.CreateElement("gp", "location-info", ns_gp); element3.AppendChild(element4); XmlElement element5 = doc.CreateElement("cl", "civicAddress", ns_cl); element4.AppendChild(element5); var el = doc.CreateElement("cl", "HOUSEGUID", ns_cl); el.InnerText = bldid; element5.AppendChild(el); el = doc.CreateElement("cl", "ENTRANCE", ns_cl); el.InnerText = phn.ENTRANCE; element5.AppendChild(el); el = doc.CreateElement("cl", "LEVEL", ns_cl); el.InnerText = phn.LEVEL_; element5.AppendChild(el); el = doc.CreateElement("cl", "ROOM", ns_cl); el.InnerText = phn.ROOM; element5.AppendChild(el); element3 = doc.CreateElement("dm", "deviceID", ns_dm); element3.InnerText = phn.PHONE; element2.AppendChild(element3); element3 = doc.CreateElement("dm", "timestamp", ns_dm); element3.InnerText = DateTime.Now.ToString(); //DateTime.Now.fo.ToLongDateString()+ "T"+DateTime.Now.ToLongTimeString()+"Z"; element2.AppendChild(element3); using (var stringWriter = new StringWriter()) using (var xmlTextWriter = XmlWriter.Create(stringWriter)) { doc.WriteTo(xmlTextWriter); xmlTextWriter.Flush(); return(stringWriter.GetStringBuilder().ToString()); } } catch (Exception e) { return(null); } }