Java JSON:API client for interfacing with MasterFox
The client is built on top of the https://github.com/crnk-project/crnk-framework library. Which handles all of the heavy lifting for the serialization, request making, etc.
The main units are Resources, which are the Data Transfer Objects that map to Foodee's API. And Repositories, implement the basic CRUD operations overtop of REST.
Since this is currently a work in progress, you can exercise the library by running the Exercise class.
Below is a description of some of the units inside of the Foodee system.
A client is a single account in the Foodee system, a client may be made up of many teams, users, and delivery locations, but it only has a single billing account.
A restaurant is a single vendor account, it may have multiple pickup locations, it only ever has a single menu
A menu is composed of multiple groups (Appetizers, Mains etc), menu items (individual sandwich), menu option groups (select a protein), and menu option items (pick turkey).
An order is the basic unit that aggregates the items of a single delivery, they maintain a 1<>1 relationship with the following:
- Client
- Restaurant
- Menu (This will be the active menu at the time of publishing the order)
An order is a State Machine (See OrderingState for a enumeration of the valid sates).
The diagram attached below contains the state diagram and process for an order moving through foodee system.
A group order member is a single member of an organization ordering for themselves on a 'Group/Team Order'. They may or may not be tied to a single user depending on if an order is configured to allow for Guests. A user will have one or more group order members over the duration of heir ordering experience wiht foodee.