Beispiel #1
0
 public ListJson <DBItem> ExecuteRead(IDbCommand command, Tabloid tabloid)
 {
     using (DBReader reader = ExecuteCommand(command))
     {
         ListJson <DBItem> result = Read(reader, tabloid);
         return(result);
     }
 }
    /// <summary>
    /// Updates the <see cref="SecurePlayerPrefs"/> with the new values of the <see cref="SecurePlayerPrefList"/>.
    /// </summary>
    private void UpdatePlayerPrefs()
    {
        ListJson array = new ListJson(itemList.ToArray());

        SerializedList = JsonUtils.Serialize(array);

        SecurePlayerPrefs.SetString(GetFullKeyName(), SerializedList);
    }
Beispiel #3
0
        public ListJson <DBItem> Read(DBReader reader, Tabloid tabloid)
        {
            ListJson <DBItem> items = new ListJson <DBItem>();

            while (reader.Read())
            {
                DBItem newItem = new DBItem(this, tabloid);

                for (int i = 0; i < reader.FieldCount; i++)
                {
                    string columnName = reader.GetName(i);
                    newItem[columnName] = reader[columnName];
                }

                items.Add(newItem);
            }

            return(items);
        }
Beispiel #4
0
        protected override ListJson <DBItem> Read(SqlDataReader reader)
        {
            ListJson <DBItem> items = new ListJson <DBItem>();

            while (reader.Read())
            {
                DBItem newItem = new DBItem();

                for (int i = 0; i < reader.FieldCount; i++)
                {
                    string columnName = reader.GetName(i);
                    // sloupec, kt. není součástí tabulky (as, count, ...)
                    DBColumn column   = tabloid.columns.SingleOrDefault(x => x.Name == columnName);
                    int      columnId = column != null ? column.ColumnId : -1;
                    newItem.createProperty(columnId, columnName, reader[columnName]);
                }

                items.Add(newItem);
            }

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

            string tableName      = vars.ContainsKey("TableName") ? (string)vars["TableName"] : (string)vars["__TableName__"];
            bool   searchInShared = vars.ContainsKey("SearchInShared") ? (bool)vars["SearchInShared"] : false;
            string orderBy        = vars.ContainsKey("OrderBy") ? (string)vars["OrderBy"] : null;
            bool   isDescending   = vars.ContainsKey("Descending") ? (bool)vars["Descending"] : false;

            ListJson <DBItem> columns = db.ExecuteRead(db.CommandSet.LIST_column(db, tableName), new DBTable(db)
            {
                Name = tableName
            });

            //
            var delete    = db.Table(tableName).Delete();
            int CondCount = vars.Keys.Where(k => k.StartsWith("CondColumn[") && k.EndsWith("]")).Count();

            // setConditions
            for (int i = 0; i < CondCount; i++)
            {
                string condOperator = vars.ContainsKey($"CondOperator[{i}]") ? (string)vars[$"CondOperator[{i}]"] : "Equal";
                string condColumn   = (string)vars[$"CondColumn[{i}]"];
                object condValue    = vars[$"CondValue[{i}]"];

                DBItem column = columns.Single(c => (string)c["name"] == condColumn);
                object value  = condOperator != "IsIn"
                    ? DataType.ConvertTo(DataType.FromDBName((string)column["typeName"], db.Type), condValue)
                    : column["typeName"];

                switch (condOperator)
                {
                case "Less":
                    delete.Where(c => c.Column(condColumn).Less(value));
                    break;

                case "LessOrEqual":
                    delete.Where(c => c.Column(condColumn).LessOrEqual(value));
                    break;

                case "Greater":
                    delete.Where(c => c.Column(condColumn).Greater(value));
                    break;

                case "GreaterOrEqual":
                    delete.Where(c => c.Column(condColumn).GreaterOrEqual(value));
                    break;

                case "Equal":
                    delete.Where(c => c.Column(condColumn).Equal(value));
                    break;

                case "IsIn":
                    // string, multiple values
                    if ((condValue is string) && ((string)condValue).Contains(","))
                    {
                        delete.Where(c => c.Column(condColumn).In((condValue as string).Split(',')));
                    }
                    // Enumerable
                    else
                    {
                        delete.Where(c => c.Column(condColumn).In((IEnumerable <object>)condValue));
                    }
                    break;

                default:     // ==
                    delete.Where(c => c.Column(condColumn).Equal(value));
                    break;
                }
            }

            // order
            delete.Run();
        }
Beispiel #6
0
        public static JToken DataTableResponse(COREobject core, List <DBItem> Data, int BootstrapPageId, string Columns, string Search, string Order, int draw, int start = -1, int length = -1)
        {
            // Init
            DBEntities    context         = core.Context;
            List <DBItem> ds              = new List <DBItem>();
            string        orderColumnName = null;

            if (Data.Count() > 0)
            {
                /**********************************************************************************/
                /* Vytvoříme si datasource - všechny sloupce jako string, přidáme hiddenId a akce */
                /**********************************************************************************/
                // Musíme znovu vytvořit sloupec s akcema
                string actionIcons           = "";
                MozaicBootstrapComponent uic = context.MozaicBootstrapComponents.Where(c => c.ElmId == core.Executor && c.MozaicBootstrapPageId == BootstrapPageId).FirstOrDefault();

                if (uic != null)
                {
                    JToken attributes = JToken.Parse(uic.Attributes);
                    foreach (JToken attr in attributes)
                    {
                        if ((string)attr["name"] == "data-actions")
                        {
                            string actionsString = ((string)attr["value"]).Replace('\'', '"');
                            JToken actions       = JToken.Parse(actionsString);

                            List <string> actionsIconsList = new List <string>();
                            foreach (JToken a in actions)
                            {
                                actionsIconsList.Add($"<i title=\"{(string)a["title"]}\" class=\"{(string)a["icon"]}\" data-action=\"{(string)a["action"]}\" data-idparam=\"{(string)a["idParam"]}\" data-confirm=\"{(string)a["confirm"]}\"></i>");
                            }
                            if (actionsIconsList.Count() > 0)
                            {
                                actionIcons = "<span class=\"text-nowrap\">" + string.Join(" ", actionsIconsList) + "</span>";
                            }
                            break;
                        }
                    }
                }

                List <string> displayNames = new List <string>();
                List <string> columnsNames = Data[0].getColumnNames();
                try
                {
                    displayNames = Data[0].getColumnDisplayNames().ToList();
                }
                catch (NullReferenceException)
                {
                    displayNames = columnsNames;
                }

                foreach (DBItem row in Data)
                {
                    DBItem newRow = new DBItem(null, null);
                    int    i      = 0;

                    foreach (string prop in columnsNames)
                    {
                        var value       = row[prop];
                        var displayName = displayNames[columnsNames.IndexOf(prop)];
                        if (i == 0)
                        {
                            orderColumnName = displayName;
                        }

                        // Převedeme všechny hodnoty na string
                        if (value is bool)
                        {
                            newRow[displayName] = (bool)value ? "Ano" : "Ne";
                        }
                        else if (value is DateTime)
                        {
                            newRow[displayName] = ((DateTime)value).ToString("d. M. yyyy H:mm:ss");
                        }
                        else if (value is string)
                        {
                            newRow[displayName] = (string)value;
                        }
                        else
                        {
                            newRow[displayName] = value.ToString();
                        }

                        // pokud je sloupec id nebo Id nastavíme hiddenId
                        if (prop == "id" || prop == "Id")
                        {
                            i++;
                            newRow["hiddenId"] = value.ToString();
                        }
                        i++;
                    }
                    // Pokud existují akce, přidáme je
                    if (!string.IsNullOrEmpty(actionIcons))
                    {
                        newRow["Akce"] = actionIcons;
                    }

                    ds.Add(newRow);
                }
            }

            /**********************************************************************************/
            /* Filtr dat                                                                      */
            /**********************************************************************************/
            List <DBItem> filteredData  = new List <DBItem>();
            JToken        columnsSearch = JToken.Parse(Columns);
            JToken        search        = JToken.Parse(Search);

            filteredData.AddRange(ds);

            foreach (JToken cs in JToken.Parse(Columns))
            {
                string searchFor = (string)cs["search"]["value"];
                if (!string.IsNullOrEmpty(searchFor))
                {
                    string columnName = (string)cs["data"];
                    filteredData = filteredData.Where(r => ((string)r[columnName]).ToLowerInvariant().Contains(searchFor.ToLowerInvariant())).ToList();
                }
            }
            string globalSearchFor = (string)search["value"];

            if (!string.IsNullOrEmpty(globalSearchFor))
            {
                filteredData.Clear();

                foreach (DBItem row in ds)
                {
                    foreach (string prop in row.getColumnNames())
                    {
                        if (prop == "id" || prop == "Id" || prop == "hiddenId" || prop == "Akce")
                        {
                            continue;
                        }

                        List <DBItem> found = ds.Where(r => ((string)r[prop]).ToLowerInvariant().Contains(globalSearchFor.ToLowerInvariant())).ToList();
                        if (found.Count() > 0)
                        {
                            foreach (DBItem item in found)
                            {
                                if (!filteredData.Contains(item))
                                {
                                    filteredData.Add(item);
                                }
                            }
                        }
                    }
                }
            }

            /**********************************************************************************/
            /* Zpracujeme řazení                                                              */
            /**********************************************************************************/
            JToken order = JToken.Parse(Order);
            int    j     = 0;
            IOrderedEnumerable <DBItem> tmpData = filteredData.OrderBy(r => r[r.getColumnNames().First()]);
            var comparer = new NaturalComparer <string>(CompareNatural);

            foreach (JToken by in order)
            {
                string columnName = (string)columnsSearch[(int)by["column"]]["data"];
                string dir        = (string)by["dir"];

                if (j == 0)
                {
                    tmpData = dir == "desc" ?
                              filteredData.OrderByDescending(r => (string)r[columnName], comparer) :
                              filteredData.OrderBy(r => (string)r[columnName], comparer);
                }
                else
                {
                    tmpData = dir == "desc" ?
                              tmpData.ThenByDescending(r => (string)r[columnName], comparer) :
                              tmpData.ThenBy(r => (string)r[columnName], comparer);
                }
                j++;
            }
            filteredData = tmpData.ToList();

            /**********************************************************************************/
            /* Zpracujeme stránkování                                                         */
            /**********************************************************************************/

            var pagedData = length == -1 ? filteredData.ToList() : filteredData.Skip(start).Take(length).ToList();

            /**********************************************************************************/
            /* Vrátíme výsledek                                                               */
            /**********************************************************************************/
            ListJson <DBItem> finalDS = new ListJson <DBItem>();

            finalDS.AddRange(pagedData);

            JToken response = new JObject();

            response["draw"]            = draw;
            response["recordsTotal"]    = Data.Count();
            response["recordsFiltered"] = filteredData.Count();
            response["data"]            = finalDS.ToJson();

            return(response);
        }