public void Post([FromBody] string value)
        {
            ReceiptDatum datum = Newtonsoft.Json.JsonConvert.DeserializeObject <ReceiptDatum>(value);

            GlobalInstance.DB.RecordTable.Insert("Receipt Insert", datum);
            GlobalInstance.DB.ReceiptTable.Insert(datum);
        }
        public int Insert(ReceiptDatum datum)
        {
            List <object> parameter = new List <object>()
            {
                datum.Id, datum.Payee, datum.Date
            };
            const string tempTable = "@TEMP_OUTPUT";
            const string tempField = "TMP_UID";

            string sql =
                $" DECLARE {tempTable} TABLE ({tempField} int); "
                + $" INSERT INTO {TABLE} ({FIELD_ID}, {FIELD_PAYEE}, {FIELD_DATE})"
                + $" OUTPUT INSERTED.{FIELD_UID} INTO {tempTable}({tempField})"
                + $" VALUES (?, ?, ?); ";

            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}) "
                       + $" SELECT {tempField}, ?, ?, ? "
                       + $" FROM {tempTable}; ";
                parameter.Add(item.ProductName);
                parameter.Add(item.Price);
                parameter.Add(item.ProductNumber);
            }

            sql += $" SELECT * FROM {tempTable}; ";

            int receiptUid = -1;

            DoCommand(sql, (SqlCommand cmd) =>
            {
                //cmd.ExecuteNonQuery();
                using var reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    ConvertToInt(reader[tempField], out receiptUid);
                }
            }, parameter.ToArray());

            return(receiptUid);
        }