public override void InnerRun(Dictionary <string, object> vars, Dictionary <string, object> outputVars, Dictionary <string, object> InvertedInputVars, Message message)
        {
            COREobject   core = COREobject.i;
            DBConnection db   = core.Entitron;

            string tableName            = (string)vars["TableName"];
            bool   searchInShared       = vars.ContainsKey("SearchInShared") ? (bool)vars["SearchInShared"] : false;
            var    inputData            = (List <DBItem>)vars["InputData"];
            string keyMappingString     = (string)vars["KeyMapping"];
            var    keyMappingDictionary = new Dictionary <string, string>();

            foreach (var segment in keyMappingString.Split(','))
            {
                var pair = segment.Split(':');
                if (pair.Length == 2)
                {
                    keyMappingDictionary.Add(pair[0], pair[1]);
                }
            }

            DBTable  table     = db.Table(tableName, searchInShared);
            DateTime timestamp = DateTime.Now;

            foreach (var inputRow in inputData)
            {
                var newRowItem = new DBItem(db, table);
                foreach (DBColumn column in table.Columns)
                {
                    if (keyMappingDictionary.ContainsKey(column.Name))
                    {
                        string dictionaryValue = keyMappingDictionary[column.Name];
                        if (dictionaryValue.Substring(0, 2) == "$$")
                        {
                            newRowItem[column.Name] = inputRow[dictionaryValue.Substring(2)];
                        }
                        else
                        {
                            newRowItem[column.Name] = KeyValueString.ParseValue(dictionaryValue, vars);
                        }
                    }
                }
                if (table.Columns.Any(c => c.Name == "id_user_insert"))
                {
                    int userId = core.User.Id;
                    newRowItem["id_user_insert"]  = userId;
                    newRowItem["id_user_change"]  = userId;
                    newRowItem["datetime_insert"] = timestamp;
                    newRowItem["datetime_change"] = timestamp;
                }
                table.Add(newRowItem);
            }
            db.SaveChanges();
        }
 public DocumentStoreConnectionString init(
     string connectionString,
     string name   = null,
     string folder = null,
     Environment.SpecialFolder?folderOption = null)
 {
     this.raw = string.IsNullOrWhiteSpace(connectionString)
                         ? LibOptions.Current.DocumentStoreDefaultFileName
                         : connectionString;
     if (!this.raw.Contains("="))
     {
         this.raw = $"Filename={this.raw}";
     }
     this.keyValues = new KeyValueString(this.raw);
     this.Name      = name ?? "noname";
     if (folderOption.HasValue)
     {
         folder = Environment.GetFolderPath(folderOption.Value);
     }
     this.FileName = GetPath(folder);
     return(this);
 }
        private static bool matchCondition(TapestryDesignerCondition condition, DBItem entitronRow, Dictionary <string, object> tapestryVars)
        {
            object leftOperand;

            if (condition.Variable[0] == '#')
            {
                var parsedObjectLeft = KeyValueString.ParseValue(condition.Variable.Substring(1), tapestryVars);
                if (parsedObjectLeft == null)
                {
                    return(false);
                }
                leftOperand = parsedObjectLeft;
            }
            else
            {
                leftOperand = entitronRow[condition.Variable];
            }

            var parsedObjectRight = KeyValueString.ParseValue(condition.Value, tapestryVars);

            if (parsedObjectRight == null)
            {
                return(false);
            }
            object value = parsedObjectRight;

            switch (condition.Operator)
            {
            case "==":
                if (leftOperand is bool && value is bool)
                {
                    return((bool)leftOperand == (bool)value);
                }
                else if (leftOperand is bool)
                {
                    return(((bool)leftOperand ? "true" : "false") == value.ToString());
                }
                else
                {
                    return(leftOperand.ToString() == value.ToString());
                }

            case "!=":
                if (leftOperand is bool && value is bool)
                {
                    return((bool)leftOperand != (bool)value);
                }
                else if (leftOperand is bool)
                {
                    return(((bool)leftOperand ? "true" : "false") != value.ToString());
                }
                else
                {
                    return(leftOperand.ToString() != value.ToString());
                }

            case ">":
                return(Convert.ToInt64(leftOperand) > Convert.ToInt64(value));

            case ">=":
                return(Convert.ToInt64(leftOperand) >= Convert.ToInt64(value));

            case "<":
                return(Convert.ToInt64(leftOperand) < Convert.ToInt64(value));

            case "<=":
                return(Convert.ToInt64(leftOperand) <= Convert.ToInt64(value));

            case "is empty":
                return(value.ToString().Length == 0);

            case "is not empty":
                return(value.ToString().Length > 0);

            case "contains":
                return(((string)leftOperand).Contains(value.ToString()));

            case "is in":
                return(((List <object>)value).Contains(leftOperand));
            }
            return(true);
        }
        private static bool matchCondition(TapestryDesignerCondition condition, Dictionary <string, object> vars)
        {
            switch (condition.Operator)
            {
            case "exists":
                return(vars.ContainsKey(condition.Variable));
            }
            object leftOperand = KeyValueString.ParseValue(condition.Variable, vars);

            switch (condition.Operator)
            {
            case "is empty":
                return(leftOperand == null || leftOperand == DBNull.Value || leftOperand.ToString().Length == 0);

            case "is not empty":
                return(leftOperand != null && leftOperand != DBNull.Value && leftOperand.ToString().Length > 0);
            }

            object value = KeyValueString.ParseValue(condition.Value, vars);

            if (leftOperand == null || value == null)
            {
                return(false);
            }
            switch (condition.Operator)
            {
            case "==":
                if (leftOperand is bool)
                {
                    return((bool)leftOperand == (bool)value);
                }
                else
                {
                    return(leftOperand.ToString() == value.ToString());
                }

            case "!=":
                if (leftOperand is bool)
                {
                    return((bool)leftOperand != (bool)value);
                }
                else
                {
                    return(leftOperand.ToString() != value.ToString());
                }

            case ">":
                if (leftOperand is DateTime && value is DateTime)
                {
                    return((DateTime)leftOperand > (DateTime)value);
                }
                else
                {
                    return(Convert.ToDecimal(leftOperand) > Convert.ToDecimal(value));
                }

            case ">=":
                if (leftOperand is DateTime && value is DateTime)
                {
                    return((DateTime)leftOperand >= (DateTime)value);
                }
                else
                {
                    return(Convert.ToDecimal(leftOperand) >= Convert.ToDecimal(value));
                }

            case "<":
                if (leftOperand is DateTime && value is DateTime)
                {
                    return((DateTime)leftOperand < (DateTime)value);
                }
                else
                {
                    return(Convert.ToDecimal(leftOperand) < Convert.ToDecimal(value));
                }

            case "<=":
                if (leftOperand is DateTime && value is DateTime)
                {
                    return((DateTime)leftOperand <= (DateTime)value);
                }
                else
                {
                    return(Convert.ToDecimal(leftOperand) <= Convert.ToDecimal(value));
                }

            case "contains":
                return(((string)leftOperand).Contains(value.ToString()));

            case "is in":
                return(((List <object>)value).Contains(leftOperand));
            }
            return(true);
        }
Esempio n. 5
0
 public Category(String key, String value)
 {
     Value = new KeyValueString(key, value);
 }
Esempio n. 6
0
        public override void InnerRun(Dictionary <string, object> vars, Dictionary <string, object> outputVars, Dictionary <string, object> InvertedInputVars, Message message)
        {
            var dictionary = vars.ContainsKey("Dictionary")
                ? (Dictionary <string, object>)vars["Dictionary"]
                : new Dictionary <string, object>();

            DBItem rowData     = null;
            bool   useRowData  = true;
            bool   skipMapping = false;

            if (!vars.ContainsKey("RowData"))
            {
                useRowData = false;
            }
            else if (vars["RowData"] is string)
            {
                rowData = (DBItem)vars[(string)vars["RowData"]];
            }
            else if (vars["RowData"] is DBItem)
            {
                rowData = (DBItem)vars["RowData"];
            }
            else if (vars["RowData"] is IEnumerable <DBItem> )
            {
                rowData = (vars["RowData"] as IEnumerable <DBItem>).FirstOrDefault();
            }

            var autoMapping = (vars.ContainsKey("AutoMapping") && Convert.ToBoolean(vars["AutoMapping"]));

            List <string> mappingStringList = null;

            if (autoMapping)
            {
                mappingStringList = rowData.getColumnNames().Select(a => $"{a}:{a}").ToList();
            }
            else if (!vars.ContainsKey("KeyMapping"))
            {
                skipMapping = true;
            }
            else
            {
                mappingStringList = ((string)vars["KeyMapping"]).Split(',').ToList();
            }

            if (!skipMapping)
            {
                foreach (string mappingString in mappingStringList)
                {
                    List <string> tokens = mappingString.Split(':').ToList();
                    if (tokens.Count != 2)
                    {
                        continue;
                    }
                    string columnName = tokens[1];
                    object value;
                    if (useRowData)
                    {
                        value = rowData[columnName];
                    }
                    else
                    {
                        value = KeyValueString.ParseValue(columnName, vars);
                    }

                    if (value == null)
                    {
                        dictionary[tokens[0]] = "";
                    }
                    else if (value is List <object> )
                    {
                        dictionary[tokens[0]] = value;
                    }
                    else
                    {
                        dictionary[tokens[0]] = value.ToString();
                    }
                }
            }

            outputVars["Result"] = dictionary;
        }
Esempio n. 7
0
		public bool ReceiveHeaders(out KeyValueString[] headers)
		{
			headers = _EmptyHeaders;

			var buffer = _EmptyBuffer;
			var length = 0;

			if (Stream.CanRead)
			{
				VitaNexCore.WaitWhile(() => !Stream.DataAvailable, TimeSpan.FromMilliseconds(1000));

				if (Stream.DataAvailable)
				{
					buffer = new byte[Client.ReceiveBufferSize];

					using (var ms = new MemoryStream())
					{
						int idx = 0, seq = 0;

						while (Stream.DataAvailable)
						{
							var r = Stream.ReadByte();

							if (r > -1)
							{
								if (++length > WebAPI.CSOptions.MaxReceiveBufferSizeBytes)
								{
									throw new InternalBufferOverflowException(
										String.Format("Received data exceeded {0:#,0} bytes", WebAPI.CSOptions.MaxReceiveBufferSizeBytes));
								}

								var b = (byte)r;

								buffer[idx++] = b;

								if (Sequence(b, ref seq) && seq >= 4)
								{
									break;
								}

								if (idx >= buffer.Length)
								{
									ms.Write(buffer, 0, idx);
									idx = 0;
								}
							}
						}

						if (idx > 0)
						{
							ms.Write(buffer, 0, idx);
						}

						buffer = ms.ToArray();
						length = buffer.Length;
					}
				}
			}

			WebAPI.CSOptions.ToConsole(
				"Received {0:#,0} bytes ({1:#,0} bytes/read)",
				length,
				Math.Min(length, Client.ReceiveBufferSize));

			if (length <= 0)
			{
				return false;
			}

			var raw = Encoding.ASCII.GetString(buffer, 0, length);

			if (String.IsNullOrWhiteSpace(raw))
			{
				return false;
			}

			var h = raw.Split(_Separators, StringSplitOptions.RemoveEmptyEntries);

			if (h.Length == 0)
			{
				return false;
			}

			headers = ParseHeaders(h).ToArray();

			return headers.Length > 0;
		}