Esempio n. 1
0
        public async Task <List <Item> > GetItems(string caseNumber, ItemOrderEnum itemOrder = ItemOrderEnum.TransactionDateAscending, string searchText = "")
        {
            //get data
            var items = await ItemDataAccessOperation.GetItemsOfACase(itemOrder, caseNumber);

            if (itemOrder == ItemOrderEnum.InOutAscending)
            {
                items = items.OrderBy((s) => s.IsIn).ToList();
            }
            else if (itemOrder == ItemOrderEnum.InOutDescending)
            {
                items = items.OrderByDescending((s) => s.IsIn).ToList();
            }

            //filter data
            if (!string.IsNullOrWhiteSpace(searchText))
            {
                items = (from
                         item in items
                         where
                         item.Sender.Contains(searchText) ||
                         item.Reciever.Contains(searchText) ||
                         item.TransactionDate.Contains(searchText) ||
                         item.CaseNumber.Contains(searchText) ||
                         item.Amount.ToString().Contains(searchText)
                         select item).ToList();
            }

            return(items);
        }
        public static async Task <List <Item> > GetItemsOfACase(ItemOrderEnum itemOrder, string caseNumber)
        {
            using var dbConnection = new SQLiteConnection("Data Source=appdata.sqlite");
            await dbConnection.OpenAsync();

            using var sql = itemOrder switch
                  {
                      ItemOrderEnum.SenderAscending => new SQLiteCommand(@"SELECT * FROM ITEMS WHERE caseNumber = @caseNumber ORDER BY sender ASC", dbConnection),
                      ItemOrderEnum.RecieverAscending => new SQLiteCommand(@"SELECT * FROM ITEMS WHERE caseNumber = @caseNumber ORDER BY reciever ASC", dbConnection),
                      ItemOrderEnum.AmountAscending => new SQLiteCommand(@"SELECT * FROM ITEMS WHERE caseNumber = @caseNumber ORDER BY amount ASC", dbConnection),
                      ItemOrderEnum.TransactionDateAscending => new SQLiteCommand(@"SELECT * FROM ITEMS WHERE caseNumber = @caseNumber ORDER BY transactionDate ASC", dbConnection),
                      ItemOrderEnum.SenderDescending => new SQLiteCommand(@"SELECT * FROM ITEMS WHERE caseNumber = @caseNumber ORDER BY sender DESC", dbConnection),
                      ItemOrderEnum.RecieverDescending => new SQLiteCommand(@"SELECT * FROM ITEMS WHERE caseNumber = @caseNumber ORDER BY reciever DESC", dbConnection),
                      ItemOrderEnum.AmountDescending => new SQLiteCommand(@"SELECT * FROM ITEMS WHERE caseNumber = @caseNumber ORDER BY amount DESC", dbConnection),
                      ItemOrderEnum.TransactionDateDescending => new SQLiteCommand(@"SELECT * FROM ITEMS WHERE caseNumber = @caseNumber ORDER BY transactionDate DESC", dbConnection),
                      _ => new SQLiteCommand(@"SELECT * FROM ITEMS WHERE caseNumber = @caseNumber ORDER BY transactionDate DESC", dbConnection)
                  };

            sql.Parameters.AddWithValue("@caseNumber", caseNumber);

            await sql.ExecuteNonQueryAsync();

            var response = await sql.ExecuteReaderAsync();

            var items = new List <Item>();

            while (await response.ReadAsync())
            {
                items.Add(new Item()
                {
                    Id              = (long)response["id"],
                    CaseNumber      = response["caseNumber"].ToString(),
                    Sender          = response["sender"].ToString(),
                    Reciever        = response["reciever"].ToString(),
                    Amount          = (Int64)response["amount"],
                    TransactionDate = response["transactionDate"].ToString(),
                    IsIn            = (bool)response["isIn"]
                });
            }

            response.Close();

            dbConnection.Close();

            return(items);
        }
    }