Hi everyone,
I’m working on a pay-at-table app for restaurants and need some help with correctly updating list ofOrderItems based on an API response. Here’s what I’ve done and the issue I’m facing:
Initial Setup: Creating OrderItems on Page Load
Creating OrderItems:
- Method: On page load, I use “Schedule an API Workflow on a List” to create order items.
- Backend Workflow: The workflow
createorderitem loops through the list of MenuItems from the API response and creates each item individually in the OrderItem database.
- Database Structure: Each
OrderItem is created as an individual entry, allowing each OrderItem to be displayed in its own row within a repeating group.
- Result: This setup works well, with
OrderItems correctly created and linked to a single OrderSummary.
Issue: Updating OrderItems Using “Do Every 30 Seconds” Workflow
Update Process:
- Method: In the “Do Every 30 Seconds” workflow, I attempt to update
OrderItems using another backend workflow called updateorderitem.
- Problem: The workflow does not iterate over each
OrderItem entry correctly. Instead, it evaluates the list as a whole in the “Schedule an API Workflow” action.
- Current Limitation: Because of this, I’m forced to use the
:firstitem operator, resulting in only the first item being updated instead of iterating through all items.
What I Want to Achieve
If the MenuItem list changes in the API response I get in the “Do Every 30 Seconds” workflow, I want these changes to be reflected in my OrderItem database. Specifically:
- Comparison: Check if any data has changed compared to the current
OrderItem data.
- Update: Update the
OrderItem if changes are detected.
- Addition/Deletion: Add new
OrderItems if they are in the API response but not in the database, and delete OrderItems if they are no longer in the API response.
Required Solution
- Goal: I need a method to compare incoming data from the API with existing data in the
OrderItem database.
- Actions:
- Comparison: Check if any data has changed compared to the current
OrderItem data.
- Update: Update the
OrderItem if changes are detected.
- Addition/Deletion: Add new
OrderItems if they are in the API response but not in the database, and delete OrderItems if they are no longer in the API response.
Has anyone dealt with a similar issue or can suggest a good solution for this? Thanks in advance for your help!
Example list from API response:
“menuItems”: [
{
“menuItemId”: 101,
“definitionSequence”: 1,
“name”: “Wine”,
“quantity”: 2,
“unitPrice”: 5.99,
“priceSequence”: 1,
“total”: 11.98,
“seat”: 1,
“referenceText”: “No onions”,
“surcharge”: 0.50,
“itemDiscounts”: [
{
“discountId”: 201,
“name”: “Discount”,
“seat”: 1,
“referenceText”: “Promo”,
“total”: 1.00,
“isAutomatic”: true
}
]
},
{
“menuItemId”: 102,
“definitionSequence”: 2,
“name”: “Steak”,
“quantity”: 1,
“unitPrice”: 4.99,
“priceSequence”: 1,
“total”: 4.99,
“seat”: 1,
“referenceText”: “No dressing”,
“surcharge”: 0.25,
“itemDiscounts”: [
{
“discountId”: 204,
“name”: “Discount”,
“seat”: 1,
“referenceText”: “Promo”,
“total”: 0.75,
“isAutomatic”: true
}
]
},
{
“menuItemId”: 103,
“definitionSequence”: 3,
“name”: “Salad”,
“quantity”: 1,
“unitPrice”: 14.99,
“priceSequence”: 1,
“total”: 14.99,
“seat”: 1,
“referenceText”: “Medium rare”,
“surcharge”: 0.50,