Esempio n. 1
0
        private List <Item> SearchFor(string parameters, string chatterName)
        {
            Character       searchCharacter = null;
            DBSearchItemsBy searchBy        = DBSearchItemsBy.Substring;

            if (parameters.Contains(","))
            {
                string searchForCharOrTag = parameters.Substring(0, parameters.IndexOf(",")).Trim();
                if (string.IsNullOrEmpty(searchForCharOrTag))
                {
                    SendChatCommand($"/t {chatterName}, incorrect char specific retrieval, use: /t {Core.CharacterFilter.Name}, retrieve <char name or tag>,itemname");
                    SendChatCommand($"/t {chatterName}, example: /t {Core.CharacterFilter.Name}, retrieve misc, argenory");
                    return(null);
                }
                searchCharacter = DBSearchChars(searchForCharOrTag);
                if (searchCharacter == null)
                {
                    CharacterTag tag = DBGetTag(searchForCharOrTag);
                    if (tag != null)
                    {
                        searchCharacter = DBSearchChars(tag.CharacterId);
                    }
                }
                if (searchCharacter == null)
                {
                    SendChatCommand($"/t {chatterName}, char specific retrieval failed: did not find character by name or tag: {searchForCharOrTag}");
                    return(null);
                }
                parameters = parameters.Substring(parameters.IndexOf(",") + 1).Trim();
                searchBy   = DBSearchItemsBy.SubstringCharId;
            }
            return(DBSearchItems(parameters, (searchCharacter != null) ? searchCharacter.Id : 0, searchBy)
                   .Where(k => WarehouseFilterGlobals.Characters.Any(g => g.Id == k.CharId))
                   .OrderBy(k => k.ItemName).ToList());
        }
Esempio n. 2
0
        private List <Item> DBSearchItems(string search, int charId, DBSearchItemsBy searchBy)
        {
            string cmdStr = "";

            switch (searchBy)
            {
            case DBSearchItemsBy.Substring:
                cmdStr = "select * from item WHERE item_name LIKE @Search";
                break;

            case DBSearchItemsBy.SubstringCharId:
                cmdStr = "select * from item WHERE item_name LIKE @Search AND char_id = @CharId";
                break;
            }
            using (SQLiteConnection connection = new SQLiteConnection(ConnectionString))
            {
                connection.Open();
                using (SQLiteCommand command = new SQLiteCommand(cmdStr, connection))
                {
                    switch (searchBy)
                    {
                    case DBSearchItemsBy.Substring:
                        search = $"%{search}%";
                        command.Parameters.AddWithValue("@Search", search);
                        break;

                    case DBSearchItemsBy.SubstringCharId:
                        search = $"%{search}%";
                        command.Parameters.AddWithValue("@Search", search);
                        command.Parameters.AddWithValue("@CharId", charId);
                        break;
                    }
                    SQLiteDataReader reader = command.ExecuteReader();
                    List <Item>      items  = new List <Item>();
                    while (reader.Read())
                    {
                        items.Add(DBReadItem(reader));
                    }
                    return(items);
                }
            }
        }