public async Task <List <Case> > GetCases(CaseOrderEnum caseOrder = CaseOrderEnum.CaseNumberAscending, string searchText = "") { //get data var cases = await CaseDataAccessOperation.GetCases(caseOrder); if (caseOrder == CaseOrderEnum.NumberOfItemsAscending) { cases = cases.OrderBy((s) => s.NumberOfItems).ToList(); } else if (caseOrder == CaseOrderEnum.NumberOfItemsDescending) { cases = cases.OrderByDescending((s) => s.NumberOfItems).ToList(); } else if (caseOrder == CaseOrderEnum.SumAscending) { cases = cases.OrderBy((s) => s.Sum).ToList(); } else if (caseOrder == CaseOrderEnum.SumDescending) { cases = cases.OrderByDescending((s) => s.Sum).ToList(); } //filter data if (!string.IsNullOrWhiteSpace(searchText)) { cases = ( from _case in cases where _case.CaseNumber.Contains(searchText) || _case.Comment.Contains(searchText) || _case.NumberOfItems.ToString().Contains(searchText) || _case.Sum.ToString().Contains(searchText) select _case).ToList(); } return(cases); }
public static async Task <List <Case> > GetCases(CaseOrderEnum caseOrder) { using var dbConnection = new SQLiteConnection("Data Source=appdata.sqlite"); await dbConnection.OpenAsync(); using var sql = caseOrder switch { CaseOrderEnum.CaseNumberAscending => new SQLiteCommand(@"SELECT * FROM CASES ORDER BY caseNumber ASC", dbConnection), CaseOrderEnum.CommentAscending => new SQLiteCommand(@"SELECT * FROM CASES ORDER BY comment ASC", dbConnection), CaseOrderEnum.CaseNumberDescending => new SQLiteCommand(@"SELECT * FROM CASES ORDER BY caseNumber DESC", dbConnection), CaseOrderEnum.CommentDescending => new SQLiteCommand(@"SELECT * FROM CASES ORDER BY comment DESC", dbConnection), _ => new SQLiteCommand(@"SELECT * FROM CASES ORDER BY caseNumber ASC", dbConnection), }; var response = await sql.ExecuteReaderAsync(); var cases = new List <Case>(); var itemService = new ItemService(); while (await response.ReadAsync()) { cases.Add(new Case { Id = (Int64)response["id"], CaseNumber = response["caseNumber"].ToString(), Comment = response["comment"].ToString(), NumberOfItems = (await itemService.GetItems(response["caseNumber"].ToString())).Count, Sum = itemService.GetSum(await itemService.GetItems(response["caseNumber"].ToString())) }); } response.Close(); dbConnection.Close(); return(cases); }