public string GetBaseViewListObjectByAttribute(string baseviewname, string synapseattributename, string attributevalue, string filter)
        {
            //string fieldList = SynapseEntityHelperServices.GetBaseViewAttributes(baseviewname);
            //if (string.IsNullOrEmpty(fieldList))
            //{
            //    fieldList = " * ";
            //}

            //Stub for later use
            string filterString = "";

            if (!string.IsNullOrEmpty(filter))
            {
                filterString = " AND " + filter;
            }

            string sql       = "SELECT * FROM baseview." + baseviewname + " WHERE " + synapseattributename + " = @p_keyAttributeValue" + filterString + " LIMIT 1; ";
            var    paramList = new List <KeyValuePair <string, object> >()
            {
                new KeyValuePair <string, object>("p_keyAttributeValue", attributevalue)
            };

            DataSet ds = new DataSet();

            ds = DataServices.DataSetFromSQL(sql, paramList);
            DataTable dt   = ds.Tables[0];
            var       json = DataServices.ConvertDataTabletoJSONObject(dt);

            return(json);
        }
        public string GetObject(string synapsenamespace, string synapseentityname, string id, string returnsystemattributes)
        {
            if (string.IsNullOrWhiteSpace(returnsystemattributes))
            {
                returnsystemattributes = "0";
            }

            string fieldList = SynapseEntityHelperServices.GetEntityAttributes(synapsenamespace, synapseentityname, returnsystemattributes);

            if (string.IsNullOrEmpty(fieldList))
            {
                fieldList = " * ";
            }

            string keyAttribute = SynapseEntityHelperServices.GetEntityKeyAttribute(synapsenamespace, synapseentityname);


            if (string.IsNullOrWhiteSpace(keyAttribute))
            {
                throw new InterneuronBusinessException(errorCode: 400, errorMessage: "Invalid Parameters supplied - unable to retrieve key attribute column: " + keyAttribute, "Client Error");
            }



            string sql       = "SELECT " + fieldList + " FROM entitystorematerialised." + synapsenamespace + "_" + synapseentityname + " WHERE " + keyAttribute + " = @p_keyAttributeValue" + " LIMIT 1;";
            var    paramList = new List <KeyValuePair <string, object> >()
            {
                new KeyValuePair <string, object>("p_keyAttributeValue", id)
            };



            DataSet ds = new DataSet();

            ds = DataServices.DataSetFromSQL(sql, paramList);
            DataTable dt   = ds.Tables[0];
            var       json = DataServices.ConvertDataTabletoJSONObject(dt);

            return(json);
        }
        public string GetObjectWithInsert(string synapsenamespace, string synapseentityname, string synapseattributename, string attributevalue, string keyvalue, string returnsystemattributes)
        {
            if (string.IsNullOrWhiteSpace(returnsystemattributes))
            {
                returnsystemattributes = "0";
            }


            if (string.IsNullOrWhiteSpace(keyvalue))
            {
                keyvalue = System.Guid.NewGuid().ToString();
            }


            string sqlCount       = "SELECT COUNT(*) AS entityRecords FROM entitystorematerialised." + synapsenamespace + "_" + synapseentityname + " WHERE " + synapseattributename + " = @p_keyAttributeValue;";
            var    paramListCount = new List <KeyValuePair <string, object> >()
            {
                new KeyValuePair <string, object>("p_keyAttributeValue", attributevalue)
            };


            int iCount = 0;

            DataSet dsCount = new DataSet();

            try
            {
                dsCount = DataServices.DataSetFromSQL(sqlCount, paramListCount);
                DataTable dt1 = dsCount.Tables[0];
                iCount = System.Convert.ToInt32(dt1.Rows[0]["entityRecords"].ToString());
            }
            catch (Exception ex)
            {
                iCount = 0;
            }

            if (iCount == 0)
            {
                //insert to return row
                string keyAttribute = SynapseEntityHelperServices.GetEntityKeyAttribute(synapsenamespace, synapseentityname);

                StringBuilder sb = new StringBuilder();
                StringBuilder sb_materialised = new StringBuilder();

                var paramListInsert = new List <KeyValuePair <string, object> >();
                var paramListInsert_materialised = new List <KeyValuePair <string, object> >();

                if (keyAttribute == synapseattributename)  //Only insert attributevalue
                {
                    sb.Append("INSERT INTO entitystore." + synapsenamespace + "_" + synapseentityname);
                    sb.Append(" (" + keyAttribute + ")");
                    sb.Append(" VALUES (@keyvalue)");
                    paramListInsert = new List <KeyValuePair <string, object> >()
                    {
                        new KeyValuePair <string, object>("keyvalue", attributevalue)
                    };

                    sb_materialised.Append("INSERT INTO entitystorematerialised." + synapsenamespace + "_" + synapseentityname);
                    sb_materialised.Append(" (" + keyAttribute + ")");
                    sb_materialised.Append(" VALUES (@keyvalue)");
                    paramListInsert_materialised = new List <KeyValuePair <string, object> >()
                    {
                        new KeyValuePair <string, object>("keyvalue", attributevalue)
                    };
                }
                else
                {
                    sb.Append("INSERT INTO entitystore." + synapsenamespace + "_" + synapseentityname);
                    sb.Append(" (" + keyAttribute + "," + synapseattributename + ")");
                    sb.Append(" VALUES (@keyvalue, @synapseattributevalue)");
                    paramListInsert = new List <KeyValuePair <string, object> >()
                    {
                        new KeyValuePair <string, object>("keyvalue", keyvalue),
                        new KeyValuePair <string, object>("synapseattributevalue", attributevalue)
                    };


                    sb_materialised.Append("INSERT INTO entitystorematerialised." + synapsenamespace + "_" + synapseentityname);
                    sb_materialised.Append(" (" + keyAttribute + "," + synapseattributename + ")");
                    sb_materialised.Append(" VALUES (@keyvalue, @synapseattributevalue)");
                    paramListInsert_materialised = new List <KeyValuePair <string, object> >()
                    {
                        new KeyValuePair <string, object>("keyvalue", keyvalue),
                        new KeyValuePair <string, object>("synapseattributevalue", attributevalue)
                    };
                }
                DataServices.executeSQLStatement(sb.ToString(), paramListInsert);
                DataServices.executeSQLStatement(sb_materialised.ToString(), paramListInsert_materialised);
            }

            string fieldList = SynapseEntityHelperServices.GetEntityAttributes(synapsenamespace, synapseentityname, returnsystemattributes);

            if (string.IsNullOrEmpty(fieldList))
            {
                fieldList = " * ";
            }


            string sql       = "SELECT " + fieldList + " FROM entitystorematerialised." + synapsenamespace + "_" + synapseentityname + " WHERE " + synapseattributename + " = @p_keyAttributeValue LIMIT 1;";
            var    paramList = new List <KeyValuePair <string, object> >()
            {
                new KeyValuePair <string, object>("p_keyAttributeValue", attributevalue)
            };



            DataSet ds = new DataSet();

            ds = DataServices.DataSetFromSQL(sql, paramList);
            DataTable dt   = ds.Tables[0];
            var       json = DataServices.ConvertDataTabletoJSONObject(dt);

            return(json);
        }