Beispiel #1
0
        async Task <SearchResult> query_item_by_name()
        {
            string itemName = null;

            while (string.IsNullOrEmpty(itemName))
            {
                using (InputBox input = new InputBox("Please enter the item name", false))
                    if (input.ShowDialog(this) == DialogResult.OK)
                    {
                        itemName = input.Value;
                    }

                if (string.IsNullOrEmpty(itemName))
                {
                    if (MessageBox.Show("You must enter an item name to continue!", "Empty Name", MessageBoxButtons.OKCancel, MessageBoxIcon.Hand) == DialogResult.Cancel)
                    {
                        break;
                    }
                }
            }

            string selectedName = null;

            if (string.IsNullOrEmpty(itemName))
            {
                MessageBox.Show("You have entered an invalid item name!", "Invalid Item Name", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                List <SearchResult> searchResults = await queryDBForItems(itemName);

                if (searchResults.Count == 0)
                {
                    MessageBox.Show("Failed to query items from the database!", "SQL Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    List <string> resultNames = searchResults.Select(r => r.Name).ToList();

                    if (resultNames.Count == 0)
                    {
                        MessageBox.Show("Failed to query item names from search results!", "Result Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        using (ListSelect listSelect = new ListSelect("Please select an item", resultNames))
                            if (listSelect.ShowDialog(this) == DialogResult.OK)
                            {
                                selectedName = listSelect.SelectedText;
                            }

                        if (string.IsNullOrEmpty(selectedName))
                        {
                            MessageBox.Show("Invalid selected name!", "Invalid Selection", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        else
                        {
                            return(searchResults.Find(r => r.Name == selectedName));
                        }
                    }
                }
            }

            return(null);
        }