private void LoadFromFile(string file)
        {
            var res = JsonConvert.DeserializeObject <dynamic>(File.ReadAllText(file));

            var allnodes = new Dictionary <string, NodeSchema>();

            foreach (var n in res.Nodes)
            {
                var nodeName = n.Name.ToString();
                var nodeDef  = new NodeSchema()
                {
                    Name       = nodeName,
                    Properties = (n.Properties?.ToObject <List <dynamic> >() as List <dynamic> ?? Enumerable.Empty <dynamic>())
                                 .Select(s => (new EntityProperty()
                    {
                        PropertyName = s.PropertyName.ToString(),
                        DataType = Type.GetType(s.PropertyType.ToString()),
                        PropertyType = EntityProperty.PropertyDefinitionType.RegularProperty
                    })).ToList(),
                    NodeIdProperty = new EntityProperty()
                    {
                        PropertyName = n.IdProperty.PropertyName.ToString(),
                        DataType     = Type.GetType(n.IdProperty.PropertyType.ToString()),
                        PropertyType = EntityProperty.PropertyDefinitionType.NodeJoinKey
                    },
                };
                allnodes.Add(nodeName, nodeDef);
            }
            _allNodeDefinions = allnodes.Values.ToList();

            _allEdgeDefinions = new List <EdgeSchema>();
            foreach (var e in res.Edges)
            {
                _allEdgeDefinions.Add(new EdgeSchema()
                {
                    Name         = e.Name.ToString(),
                    SourceNodeId = e.FromNode.ToString(),
                    SinkNodeId   = e.ToNode.ToString(),
                    Properties   = (e.Properties?.ToObject <List <dynamic> >() as List <dynamic> ?? Enumerable.Empty <dynamic>())
                                   .Select(s => (new EntityProperty()
                    {
                        PropertyName = s.PropertyName.ToString(),
                        DataType = Type.GetType(s.PropertyType.ToString()),
                        PropertyType = EntityProperty.PropertyDefinitionType.RegularProperty
                    })).ToList(),
                    SourceIdProperty = new EntityProperty()
                    {
                        PropertyName = e.SourceIdProperty.PropertyName.ToString(),
                        DataType     = Type.GetType(e.SourceIdProperty.PropertyType.ToString()),
                        PropertyType = EntityProperty.PropertyDefinitionType.NodeJoinKey
                    },
                    SinkIdProperty = new EntityProperty()
                    {
                        PropertyName = e.SinkIdProperty.PropertyName.ToString(),
                        DataType     = Type.GetType(e.SinkIdProperty.PropertyType.ToString()),
                        PropertyType = EntityProperty.PropertyDefinitionType.NodeJoinKey
                    },
                });
            }
        }
        public void Node_Create_Person()
        {
            NodeSchema n = new NodeSchema(name: "person");

            n.Attributes.Add(new Attribute(name: "FirstName", type: new AttributeText()));
            n.Attributes.Add(new Attribute(name: "LastName", type: new AttributeText()));
            n.Attributes.Add(new Attribute(name: "DateOfBirth", new AttributeDatum()));
            n.Edges.Add(new EdgeSchema(name: "likes"));
            n.Edges.Add(new EdgeSchema(name: "married"));
            n.Edges.Add(new EdgeSchema(name: "friend"));

            n.Edges[0].Constraints.Add(new Constraint(name: "person"));
            n.Edges[1].Constraints.Add(new Constraint(name: "person"));
            n.Edges[2].Constraints.Add(new Constraint(name: "person"));

            n.Edges[0].Attributes.Add(new Attribute(name: "rating", type: new AttributeEuro()));

            //object p1 = from p in n select p;
            NodeSchemaScript script = new NodeSchemaScript();
            var serializer          = new SerializerBuilder().Build();
            var sw = new StringWriter();

            serializer.Serialize(sw, n);
            var yaml         = sw.ToString();
            var deserializer = new DeserializerBuilder().IgnoreUnmatchedProperties().Build();
            var r            = deserializer.Deserialize <NodeSchema>(yaml);
            var sql          = script.CreateScript(n);
        }
        public string Serialize(NodeSchema schema)
        {
            var serializer = new SerializerBuilder().Build();
            var sw         = new StringWriter();

            serializer.Serialize(sw, schema);
            return(sw.ToString());
        }
        public string CreateCode <T>(NodeSchema schema, string nameSpace) where T : IGraphEntity
        {
            if (typeof(T) == typeof(IGraphEntity))
            {
                throw new Exception("Please specify an interface that inherits from IGraphEntity");
            }
            StringBuilder sb = new StringBuilder();

            sb.AppendLine($@"// -----------------------------------------------------------------
// Automatically generated with Virtual Society Graph Code Generator
// Please do not modify this file
// Generation date: {DateTime.Now}
// -----------------------------------------------------------------");
            sb.AppendLine("using System;");
            sb.AppendLine("using Itenso.TimePeriod;");
            sb.AppendLine("using Vs.Graph.Core.Data;");
            sb.AppendLine($"namespace {nameSpace}");
            sb.AppendLine("{");
            sb.AppendLine($"\tpartial class {schema.Name.ToPascalCase()} : {typeof(T).Name}");
            sb.AppendLine("\t{");
            foreach (var attribute in schema.Attributes)
            {
                // Resolve AttributeType from types that inherit from IAttributeType
                switch (((AttributeTypeAttribute)attribute.Type.GetType().GetCustomAttributes(typeof(AttributeTypeAttribute), true)[0]).Name)
                {
                case "int":
                    sb.AppendLine($"\t\tpublic int {attribute.Name.ToPascalCase()} {{get;set;}}");
                    break;

                case "datum":
                    sb.AppendLine($"\t\tpublic DateTime {attribute.Name.ToPascalCase()} {{get;set;}}");
                    break;

                case "elfproef":
                    sb.AppendLine($"\t\tpublic string {attribute.Name.ToPascalCase()} {{get;set;}}");
                    break;

                case "euro":
                    sb.AppendLine($"\t\tpublic double {attribute.Name.ToPascalCase()} {{get;set;}}");
                    break;

                case "periode":
                    sb.AppendLine($"\t\tpublic TimeRange {attribute.Name.ToPascalCase()} {{get;set;}}");
                    break;

                case "text":
                    sb.AppendLine($"\t\tpublic string {attribute.Name.ToPascalCase()} {{get;set;}}");
                    break;

                default:
                    throw new AttributeNotSupportedException();
                }
            }
            sb.AppendLine("\t}");
            sb.AppendLine("}");
            return(sb.ToString());
        }
Exemple #5
0
        public void Node_Create_Person()
        {
            NodeSchema n = new NodeSchema(name: "person");

            n.Attributes.Add(new Attribute(name: "FirstName", type: new AttributeText()));
            n.Attributes.Add(new Attribute(name: "LastName", type: new AttributeText()));
            n.Attributes.Add(new Attribute(name: "DateOfBirth", new AttributeDatum()));
            n.Edges.Add(new EdgeSchema(name: "likes"));
            n.Edges.Add(new EdgeSchema(name: "married"));
            n.Edges.Add(new EdgeSchema(name: "friend"));

            n.Edges[0].Constraints.Add(new Constraint(name: "person"));
            n.Edges[1].Constraints.Add(new Constraint(name: "person"));
            n.Edges[2].Constraints.Add(new Constraint(name: "person"));

            n.Edges[0].Attributes.Add(new Attribute(name: "rating", type: new AttributeEuro()));

            SchemaController controller = new SchemaController(new MsSqlGraphSchemaService());
            var yaml = controller.Serialize(n);
            var r    = controller.Deserialize(yaml);
            var sql  = controller.Service.CreateScript(r);

            Assert.True(sql == @"CREATE TABLE node.person (
ID INTEGER PRIMARY KEY,
FirstName  NTEXT,LastName  NTEXT,DateOfBirth DATETIME,
) AS NODE;
CREATE TABLE edge.likes (
rating DECIMAL,CONSTRAINT EC_LIKES CONNECTION (
node.person TO node.person
)
) AS EDGE;

CREATE TABLE edge.married (
CONSTRAINT EC_MARRIED CONNECTION (
node.person TO node.person
)
) AS EDGE;

CREATE TABLE edge.friend (
CONSTRAINT EC_FRIEND CONNECTION (
node.person TO node.person
)
) AS EDGE;

");
        }
Exemple #6
0
        public string CreateMigrationScript(string migrationUrn)
        {
            StringBuilder    sb         = new StringBuilder();
            SchemaController controller = new SchemaController(_graphSchemaService);
            var files = _schemaPackageStorageService.GetFiles(migrationUrn);
            var f     = (from p in files
                         where p.Key.EndsWith("schema-package.yaml")
                         select p).SingleOrDefault();

            if (string.IsNullOrEmpty(f.Value))
            {
                throw new Exception($"schema-package.yaml was not found at migration urn. {migrationUrn}");
            }
            // get sequence of schemas from package to be converted.
            var        sequence   = controller.SchemaSequence(f.Value);
            NodeSchema nodeSchema = null;

            foreach (var nodeSequence in sequence.Schemas)
            {
                var schemaFile = (from p in files
                                  where p.Key.EndsWith($"{nodeSequence.Name}.yaml")
                                  select p).SingleOrDefault();
                if (string.IsNullOrEmpty(schemaFile.Value))
                {
                    throw new Exception($"{nodeSequence.Name}.yaml wat not found at migration urn {migrationUrn}");
                }
                try
                {
                    nodeSchema = controller.Deserialize(schemaFile.Value);
                }
                catch (Exception ex)
                {
                    throw new Exception($"can't deserialize schema ${schemaFile.Key}", ex);
                }

                sb.AppendLine(_graphSchemaService.CreateScript(nodeSchema));
            }
            return(sb.ToString());
        }
        private void GenerateDocument()
        {
            DataSet data = parseXML(file);

            string eConnectConnectionString = string.Format("Integrated Security=SSPI;Persist Security Info=False;Initial Catalog={1};Data Source={0};", this.server, this.db);

            string DOCID = GPHelper.InvoiceDOCID(this.StringConnection).Trim();


            //Now we create the eConnect XML Document
            XmlDocument eConnectXMLDocument = new XmlDocument();
            XmlNode     NodeeConnect;
            XmlNode     NodeSchema;
            XmlNode     taSopHdrNode;
            XmlNode     taSopLine_ItemsNode;
            XmlNode     taSopLineNode;
            XmlNode     taCreateSopPaymentInsertRecord_Items;
            XmlNode     taCreateSopPaymentInsertRecord;

            XmlNode NodeElement;

            if (data.Tables["HEADER"].Rows.Count > 0 && data.Tables["LINES"].Rows.Count > 0)
            {
                DataRow header = data.Tables["HEADER"].Rows[0];


                if (header["DOCID"].ToString().Length <= 0)
                {
                    DOCID = GPHelper.returnDOCID(this.StringConnection).Trim();
                }
                else
                {
                    DOCID = header["DOCID"].ToString();
                }

                if (header["DOCNUMBE"].ToString() == "")
                {
                    IEvent w = new WarningEvent("", "", "El documento no posee código, se intentará generar uno para proceder con el mismo.");
                    w.Publish();


                    header["DOCNUMBE"] = "";
                }
                NodeeConnect = eConnectXMLDocument.CreateElement("eConnect");
                NodeSchema   = eConnectXMLDocument.CreateElement("SOPTransactionType");

                //Header
                taSopHdrNode = eConnectXMLDocument.CreateElement("taSopHdrIvcInsert");

                NodeElement           = eConnectXMLDocument.CreateElement("SOPTYPE");
                NodeElement.InnerText = "3"; // INVOICE
                taSopHdrNode.AppendChild(NodeElement);

                NodeElement           = eConnectXMLDocument.CreateElement("DOCID");
                NodeElement.InnerText = DOCID;
                taSopHdrNode.AppendChild(NodeElement);

                NodeElement           = eConnectXMLDocument.CreateElement("DEFPRICING");
                NodeElement.InnerText = "1";
                taSopHdrNode.AppendChild(NodeElement);

                NodeElement           = eConnectXMLDocument.CreateElement("CREATETAXES");
                NodeElement.InnerText = "1";
                taSopHdrNode.AppendChild(NodeElement);

                NodeElement           = eConnectXMLDocument.CreateElement("DEFTAXSCHDS");
                NodeElement.InnerText = "1";
                taSopHdrNode.AppendChild(NodeElement);

                NodeElement           = eConnectXMLDocument.CreateElement("BACHNUMB");
                NodeElement.InnerText = DOCID + DateTime.Now.Day + "-" + DateTime.Now.Month + "-" + DateTime.Now.Year;
                taSopHdrNode.AppendChild(NodeElement);

                NodeElement           = eConnectXMLDocument.CreateElement("SOPNUMBE");
                NodeElement.InnerText = header["DOCNUMBE"].ToString();
                taSopHdrNode.AppendChild(NodeElement);

                NodeElement           = eConnectXMLDocument.CreateElement("ORIGNUMB");
                NodeElement.InnerText = header["ORIGNUMB"].ToString();
                taSopHdrNode.AppendChild(NodeElement);

                NodeElement           = eConnectXMLDocument.CreateElement("ORIGTYPE");
                NodeElement.InnerText = header["ORIGTYPE"].ToString();
                taSopHdrNode.AppendChild(NodeElement);

                if (header["TAXSCHID"].ToString().Length <= 0)
                {
                    NodeElement           = eConnectXMLDocument.CreateElement("TAXSCHID");
                    NodeElement.InnerText = this.ITBMS;
                    taSopHdrNode.AppendChild(NodeElement);
                }
                else
                {
                    NodeElement           = eConnectXMLDocument.CreateElement("TAXSCHID");
                    NodeElement.InnerText = header["TAXSCHID"].ToString();
                    taSopHdrNode.AppendChild(NodeElement);
                }


                NodeElement           = eConnectXMLDocument.CreateElement("FRTSCHID");
                NodeElement.InnerText = header["FRTSCHID"].ToString();
                taSopHdrNode.AppendChild(NodeElement);

                NodeElement           = eConnectXMLDocument.CreateElement("MSCSCHID");
                NodeElement.InnerText = header["MSCSCHID"].ToString();
                taSopHdrNode.AppendChild(NodeElement);

                NodeElement           = eConnectXMLDocument.CreateElement("SHIPMTHD");
                NodeElement.InnerText = header["SHIPMTHD"].ToString();
                taSopHdrNode.AppendChild(NodeElement);

                //if ((Decimal)header["TAXAMNT"] > 0)
                //{
                //    NodeElement = eConnectXMLDocument.CreateElement("TAXAMNT");
                //    NodeElement.InnerText = header["TAXAMNT"].ToString();
                //    taSopHdrNode.AppendChild(NodeElement);
                //}


                NodeElement           = eConnectXMLDocument.CreateElement("LOCNCODE");
                NodeElement.InnerText = header["LOCNCODE"].ToString();
                taSopHdrNode.AppendChild(NodeElement);

                NodeElement           = eConnectXMLDocument.CreateElement("DOCDATE");
                NodeElement.InnerText = DateTime.Parse(header["DOCDATE"].ToString()).Year + "-" + DateTime.Parse(header["DOCDATE"].ToString()).Month + "-" + DateTime.Parse(header["DOCDATE"].ToString()).Day;
                taSopHdrNode.AppendChild(NodeElement);

                NodeElement           = eConnectXMLDocument.CreateElement("FREIGHT");
                NodeElement.InnerText = header["FREIGHT"].ToString();
                taSopHdrNode.AppendChild(NodeElement);

                NodeElement           = eConnectXMLDocument.CreateElement("MISCAMNT");
                NodeElement.InnerText = header["MISCAMNT"].ToString();
                taSopHdrNode.AppendChild(NodeElement);

                NodeElement           = eConnectXMLDocument.CreateElement("TRDISAMT");
                NodeElement.InnerText = header["TRDISAMT"].ToString();
                taSopHdrNode.AppendChild(NodeElement);

                NodeElement           = eConnectXMLDocument.CreateElement("CUSTNMBR");
                NodeElement.InnerText = header["CUSTOMER"].ToString();
                taSopHdrNode.AppendChild(NodeElement);

                NodeElement           = eConnectXMLDocument.CreateElement("CSTPONBR");
                NodeElement.InnerText = header["CSTPONBR"].ToString();
                taSopHdrNode.AppendChild(NodeElement);

                NodeElement           = eConnectXMLDocument.CreateElement("SUBTOTAL");
                NodeElement.InnerText = header["SUBTOTAL"].ToString();
                taSopHdrNode.AppendChild(NodeElement);

                NodeElement           = eConnectXMLDocument.CreateElement("DOCAMNT");
                NodeElement.InnerText = header["DOCAMNT"].ToString();
                taSopHdrNode.AppendChild(NodeElement);

                NodeElement           = eConnectXMLDocument.CreateElement("SALSTERR");
                NodeElement.InnerText = header["SALSTERR"].ToString();
                taSopHdrNode.AppendChild(NodeElement);

                NodeElement           = eConnectXMLDocument.CreateElement("SLPRSNID");
                NodeElement.InnerText = header["SLPRSNID"].ToString();
                taSopHdrNode.AppendChild(NodeElement);


                #region Lines
                // Details

                taSopLine_ItemsNode = eConnectXMLDocument.CreateElement("taSopLineIvcInsert_Items");

                foreach (DataRow item in data.Tables["LINES"].Rows)
                {
                    taSopLineNode         = eConnectXMLDocument.CreateElement("taSopLineIvcInsert");
                    NodeElement           = eConnectXMLDocument.CreateElement("SOPTYPE");
                    NodeElement.InnerText = "3"; //return
                    taSopLineNode.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("DEFPRICING");
                    NodeElement.InnerText = "1";
                    taSopHdrNode.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("SOPNUMBE");
                    NodeElement.InnerText = header["DOCNUMBE"].ToString();
                    taSopLineNode.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("CUSTNMBR");
                    NodeElement.InnerText = header["CUSTOMER"].ToString();
                    taSopLineNode.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("DOCDATE");
                    NodeElement.InnerText = DateTime.Parse(header["DOCDATE"].ToString()).Year + "-" + DateTime.Parse(header["DOCDATE"].ToString()).Month + "-" + DateTime.Parse(header["DOCDATE"].ToString()).Day;
                    taSopLineNode.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("LOCNCODE");
                    NodeElement.InnerText = item["LOCNCODE"].ToString();
                    taSopLineNode.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("ITEMNMBR");
                    NodeElement.InnerText = item["ITEMNMBR"].ToString();
                    taSopLineNode.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("UNITPRCE");
                    NodeElement.InnerText = item["UNITPRCE"].ToString();
                    taSopLineNode.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("XTNDPRCE");
                    NodeElement.InnerText = item["XTNDPRCE"].ToString();
                    taSopLineNode.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("QUANTITY");
                    NodeElement.InnerText = item["QUANTITY"].ToString();
                    taSopLineNode.AppendChild(NodeElement);

                    //NodeElement = eConnectXMLDocument.CreateElement("QTYONHND");
                    //NodeElement.InnerText = item["QUANTITY"].ToString();
                    //taSopLineNode.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("MRKDNAMT");
                    NodeElement.InnerText = item["MRKDNAMT"].ToString();
                    taSopLineNode.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("UOFM");
                    NodeElement.InnerText = item["UOFM"].ToString();
                    taSopLineNode.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("USERDEF1");
                    NodeElement.InnerText = item["USERDEF1"].ToString();
                    taSopLineNode.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("USERDEF2");
                    NodeElement.InnerText = item["USERDEF2"].ToString();
                    taSopLineNode.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("USERDEF3");
                    NodeElement.InnerText = item["USERDEF3"].ToString();
                    taSopLineNode.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("USERDEF4");
                    NodeElement.InnerText = item["USERDEF4"].ToString();
                    taSopLineNode.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("USERDEF5");
                    NodeElement.InnerText = item["USERDEF5"].ToString();
                    taSopLineNode.AppendChild(NodeElement);

                    taSopLine_ItemsNode.AppendChild(taSopLineNode);
                }
                #endregion
                // Payments
                // Details
                Decimal totalPaid = 0;

                taCreateSopPaymentInsertRecord_Items = eConnectXMLDocument.CreateElement("taCreateSopPaymentInsertRecord_Items");

                foreach (DataRow item in data.Tables["PAYMENTS"].Rows)
                {
                    taCreateSopPaymentInsertRecord = eConnectXMLDocument.CreateElement("taCreateSopPaymentInsertRecord");
                    NodeElement           = eConnectXMLDocument.CreateElement("SOPTYPE");
                    NodeElement.InnerText = "3"; //return
                    taCreateSopPaymentInsertRecord.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("SOPNUMBE");
                    NodeElement.InnerText = header["DOCNUMBE"].ToString();
                    taCreateSopPaymentInsertRecord.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("CUSTNMBR");
                    NodeElement.InnerText = header["CUSTOMER"].ToString();
                    taCreateSopPaymentInsertRecord.AppendChild(NodeElement);


                    NodeElement           = eConnectXMLDocument.CreateElement("DOCDATE");
                    NodeElement.InnerText = DateTime.Parse(item["DOCDATE"].ToString()).Year + "-" + DateTime.Parse(header["DOCDATE"].ToString()).Month + "-" + DateTime.Parse(header["DOCDATE"].ToString()).Day;
                    taCreateSopPaymentInsertRecord.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("DOCAMNT");
                    NodeElement.InnerText = item["DOCAMNT"].ToString();
                    taCreateSopPaymentInsertRecord.AppendChild(NodeElement);

                    totalPaid += (Decimal)item["DOCAMNT"];

                    NodeElement           = eConnectXMLDocument.CreateElement("CHEKBKID");
                    NodeElement.InnerText = item["CHEKBKID"].ToString();
                    taCreateSopPaymentInsertRecord.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("CARDNAME");
                    NodeElement.InnerText = item["CARDNAME"].ToString();
                    taCreateSopPaymentInsertRecord.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("CHEKNMBR");
                    NodeElement.InnerText = item["CHEKNMBR"].ToString();
                    taCreateSopPaymentInsertRecord.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("RCTNCCRD");
                    NodeElement.InnerText = item["RCTNCCRD"].ToString();
                    taCreateSopPaymentInsertRecord.AppendChild(NodeElement);

                    //NodeElement = eConnectXMLDocument.CreateElement("QTYONHND");
                    //NodeElement.InnerText = item["QUANTITY"].ToString();
                    //taCreateSopPaymentInsertRecord.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("AUTHCODE");
                    NodeElement.InnerText = item["AUTHCODE"].ToString();
                    taCreateSopPaymentInsertRecord.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("EXPNDATE");
                    NodeElement.InnerText = ((DateTime)item["EXPNDATE"]).ToString("yyyy-MM-dd");
                    taCreateSopPaymentInsertRecord.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("PYMTTYPE");
                    NodeElement.InnerText = item["PYMTTYPE"].ToString();
                    taCreateSopPaymentInsertRecord.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("DOCNUMBR");
                    NodeElement.InnerText = item["DOCNUMBR"].ToString();
                    taCreateSopPaymentInsertRecord.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("USRDEFND1");
                    NodeElement.InnerText = item["USERDEF1"].ToString();
                    taCreateSopPaymentInsertRecord.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("USERDEF2");
                    NodeElement.InnerText = item["USERDEF2"].ToString();
                    taCreateSopPaymentInsertRecord.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("USERDEF3");
                    NodeElement.InnerText = item["USERDEF3"].ToString();
                    taCreateSopPaymentInsertRecord.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("USERDEF4");
                    NodeElement.InnerText = item["USERDEF4"].ToString();
                    taCreateSopPaymentInsertRecord.AppendChild(NodeElement);

                    NodeElement           = eConnectXMLDocument.CreateElement("USERDEF5");
                    NodeElement.InnerText = item["USERDEF5"].ToString();
                    taCreateSopPaymentInsertRecord.AppendChild(NodeElement);

                    taCreateSopPaymentInsertRecord_Items.AppendChild(taCreateSopPaymentInsertRecord);
                }

                NodeElement           = eConnectXMLDocument.CreateElement("PYMTRCVD");
                NodeElement.InnerText = totalPaid.ToString().Replace(",", ".").Replace(".", ".");
                taSopHdrNode.AppendChild(NodeElement);

                NodeSchema.AppendChild(taSopLine_ItemsNode);
                NodeSchema.AppendChild(taCreateSopPaymentInsertRecord_Items);
                NodeSchema.AppendChild(taSopHdrNode);

                // Document
                NodeeConnect.AppendChild(NodeSchema);
                eConnectXMLDocument.AppendChild(NodeeConnect);

                //Dim eConnectXMLDocString As String = eConnectXMLDocument.OuterXml;
                //MsgBox(eConnectXMLDocString)


                if (!GPHelper.eConnectSendToGP(eConnectXMLDocument.OuterXml, eConnectConnectionString))
                {
                    ((IEvent)(new ErrorEvent("", "", "Se detectó un error en la transacción e connect, se procederá con el rollback de la transación."))).Publish();
                    if (File.Exists(this.HistPathIn + "\\ERR_" + this.fname.Replace("\\", "")))
                    {
                        File.Delete(this.HistPathIn + "\\ERR_" + this.fname.Replace("\\", ""));
                    }
                    File.Move(this.file, this.HistPathIn + "\\ERR_" + this.fname.Replace("\\", ""));
                }
                else
                {
                    ((IEvent)(new InfoEvent("", "", "La transacción culminó satisfactoriamente."))).Publish();
                    if (File.Exists(this.HistPathIn + "\\OK_" + this.fname.Replace("\\", "")))
                    {
                        File.Delete(this.HistPathIn + "\\OK_" + this.fname.Replace("\\", ""));
                    }
                    File.Move(this.file, this.HistPathIn + "\\OK_" + this.fname.Replace("\\", ""));

                    /* FALTA AHCER LA CONSULTA PARA AÑADIR LA INFORMACIÓN FISCAL */
                    GPHelper.insertFiscalInfo(header["DOCNUMBE"].ToString(),
                                              header["COO"].ToString(),
                                              header["DATEGEN"].ToString(),
                                              header["SERIALPRINTER"].ToString(),
                                              StringConnection);
                    /* FALTA AHCER LA CONSULTA PARA AÑADIR LA INFORMACIÓN FISCAL */
                }
            }
        }
Exemple #8
0
        public string CreateScript(NodeSchema nodeSchema)
        {
            NodeSchemaScript script = new NodeSchemaScript();

            return(script.CreateScript(nodeSchema));
        }
        /// <summary>
        /// This function bind the data source to a given graph definitions
        /// </summary>
        /// <param name="graphDefinition"></param>
        public void Bind(IGraphSchemaProvider graphDefinition)
        {
            // During binding, we read graph definition of the entity
            // and populate the EntityField object in the output
            // with the list of fields that the node/edge definition can expose
            var        properties = new List <ValueField>();
            string     entityUniqueName;
            string     sourceEntityName = null;
            string     sinkEntityName   = null;
            ValueField nodeIdField      = null;
            ValueField edgeSrcIdField   = null;
            ValueField edgeSinkIdField  = null;

            try
            {
                if (Entity is NodeEntity)
                {
                    NodeSchema nodeDef = graphDefinition.GetNodeDefinition(Entity.EntityName);
                    entityUniqueName = nodeDef.Id;
                    nodeIdField      = new ValueField(nodeDef.NodeIdProperty.PropertyName, nodeDef.NodeIdProperty.DataType);

                    properties.AddRange(nodeDef.Properties.Select(p => new ValueField(p.PropertyName, p.DataType)));
                    properties.Add(nodeIdField);
                }
                else
                {
                    var        edgeEnt = Entity as RelationshipEntity;
                    EdgeSchema edgeDef = null;

                    switch (edgeEnt.RelationshipDirection)
                    {
                    case RelationshipEntity.Direction.Forward:
                        edgeDef = graphDefinition.GetEdgeDefinition(edgeEnt.EntityName, edgeEnt.LeftEntityName, edgeEnt.RightEntityName);
                        break;

                    case RelationshipEntity.Direction.Backward:
                        edgeDef = graphDefinition.GetEdgeDefinition(edgeEnt.EntityName, edgeEnt.RightEntityName, edgeEnt.LeftEntityName);
                        break;

                    default:
                        // either direction
                        // TODO: we don't handle 'both' direction yet
                        Debug.Assert(edgeEnt.RelationshipDirection == RelationshipEntity.Direction.Both);
                        edgeDef = graphDefinition.GetEdgeDefinition(edgeEnt.EntityName, edgeEnt.LeftEntityName, edgeEnt.RightEntityName);
                        if (edgeDef == null)
                        {
                            edgeDef = graphDefinition.GetEdgeDefinition(edgeEnt.EntityName, edgeEnt.RightEntityName, edgeEnt.LeftEntityName);
                        }
                        break;
                    }

                    entityUniqueName = edgeDef.Id;
                    sourceEntityName = edgeDef.SourceNodeId;
                    sinkEntityName   = edgeDef.SinkNodeId;
                    edgeSrcIdField   = new ValueField(edgeDef.SourceIdProperty.PropertyName, edgeDef.SourceIdProperty.DataType);
                    edgeSinkIdField  = new ValueField(edgeDef.SinkIdProperty.PropertyName, edgeDef.SinkIdProperty.DataType);

                    properties.AddRange(edgeDef.Properties.Select(p => new ValueField(p.PropertyName, p.DataType)));
                    properties.Add(edgeSrcIdField);
                    properties.Add(edgeSinkIdField);
                }
            }
            catch (KeyNotFoundException e)
            {
                throw new TranspilerBindingException($"Failed to binding entity with alias '{Entity.Alias}' of type '{Entity.EntityName}' to graph definition. Inner error: {e.GetType().Name}: {e.Message}");
            }

            Debug.Assert(OutputSchema.Count == 1 &&
                         OutputSchema.First() is EntityField &&
                         (OutputSchema.First() as EntityField).EntityName == Entity.EntityName);

            var field = OutputSchema.First() as EntityField;

            field.BoundEntityName       = entityUniqueName;
            field.BoundSourceEntityName = sourceEntityName;
            field.BoundSinkEntityName   = sinkEntityName;
            field.EncapsulatedFields    = properties;
            field.NodeJoinField         = nodeIdField;
            field.RelSourceJoinField    = edgeSrcIdField;
            field.RelSinkJoinField      = edgeSinkIdField;
        }