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()); }
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); } } }