public List <ReceiptDatumWithUid> Get()
        {
            string sql = $"SELECT * FROM {TABLE}; SELECT * FROM {ITEMS_TABLE};";

            Dictionary <int, ReceiptDatumWithUid> tmpDict = new Dictionary <int, ReceiptDatumWithUid>();

            DoCommand(sql, (SqlCommand cmd) =>
            {
                using var reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    ReceiptDatumWithUid receipt = ConvertTo(reader);

                    tmpDict.Add(receipt.Uid, receipt);
                }

                reader.NextResult();

                while (reader.Read())
                {
                    ReceiptItemDatumWithRUid item = ConvertToItem(reader);

                    tmpDict[item.ReceiptUid].AddItem(item);
                }
            });

            return(tmpDict.Values.ToList());
        }
        public void Patch([FromBody] string value)
        {
            ReceiptDatumWithUid datum = Newtonsoft.Json.JsonConvert.DeserializeObject <ReceiptDatumWithUid>(value);

            GlobalInstance.DB.RecordTable.Insert("Receipt Update", datum);
            GlobalInstance.DB.ReceiptTable.Update(datum);
        }
        public void Update(ReceiptDatumWithUid datum)
        {
            string sql =
                $"UPDATE {TABLE} SET {FIELD_ID}=?,{FIELD_PAYEE}=?,{FIELD_DATE}=? WHERE {FIELD_UID}=?; "
                + $"DELETE FROM {ITEMS_TABLE} WHERE {ITEMS_FIELD_RECEIPT_UID}=?; ";
            List <object> parameter = new List <object>()
            {
                datum.Id, datum.Payee, datum.Date, datum.Uid, datum.Uid
            };

            foreach (var item in datum.Items)
            {
                sql += $" INSERT INTO {ITEMS_TABLE} ({ITEMS_FIELD_RECEIPT_UID}, {ITEMS_FIELD_PRODUCT_NAME}, {ITEMS_FIELD_PRICE}, {ITEMS_FIELD_NUMBER}) "
                       + $" VALUES (?, ?, ?, ?); ";
                parameter.Add(datum.Uid);
                parameter.Add(item.ProductName);
                parameter.Add(item.Price);
                parameter.Add(item.ProductNumber);
            }

            DoExecuteNonQuery(sql, parameter.ToArray());
        }