private void SearchExpense(SearchExpenseBy searchExpenseBy) { string searchString = Utility.GetStringFromConsole("Enter phrase to search for", "Phrase canot be empty", 4, "Phrase is too short"); Tuple <MessageType, string, HashSet <Expense> > expenses = Client.SearchExpenses(searchString, searchExpenseBy); if (expenses.Item1 == MessageType.None) { DisplayExpenses(expenses.Item3); } else { ShowMessageOrError(new Tuple <MessageType, string>(expenses.Item1, expenses.Item2)); Return(); } }
internal string SearchExpenses(XDocument requestXML) { if (requestXML.Root.Element("search") != null && requestXML.Root.Element("searchby") != null) { string search = requestXML.Root.Element("search").Value; SearchExpenseBy searchExpenseBy = Enum.Parse <SearchExpenseBy>(requestXML.Root.Element("searchby").Value); HashSet <Tuple <int, string, int, string, string, string, string> > data; if (search.Length > 0) { try { data = DatabaseHandler.Instance().SearchExpenses(Id, searchExpenseBy, search); } catch (Exception e) { Console.WriteLine(e.Message); return("<Error>Server encountered an error during listing expenses. Try again later.</Error>"); } if (data.Count > 0) { string returnList = "<Expenses>"; data.ToList().ForEach(data => returnList += "<Expense>" + "<Id>" + data.Item1 + "</Id>" + "<Name>" + data.Item2 + "</Name>" + "<Amount>" + data.Item3 + "</Amount>" + "<Type>" + data.Item4 + "</Type>" + "<Place>" + data.Item5 + "</Place>" + "<Source>" + data.Item6 + "</Source>" + "<Date>" + data.Item7 + "</Date>" + "</Expense>"); return(returnList + "</Expenses>"); } else { return("<Message>No Expenses.</Message>"); } } else { return("<Error>Empty search string</Error>"); } } else { return("<Error>Expense wasn't searched, missing data</Error>"); } }