Advanced Software Engineering Assignment-2
This project is a component within a larger software system, focusing on managing orders and notifications. The module allows users to make online purchases, manage notifications, and provides a RESTful API for integration.
- Display a list of all available products.
- Products include a serial number, name, vendor, category, and price.
- Track the remaining parts count for each category.
- Customers can create accounts and maintain a balance.
- The balance is used for future purchasing operations.
- Simple Orders: Single product or multiple products.
- Compound Orders: Multiple orders combined to reduce shipping fees.
- Example: A customer can order for themselves and friends in nearby locations.
- List details of both simple and compound orders.
- Deduct balances from corresponding customers for placed orders.
- Simple Orders: Deduct shipping fees from the customer's account.
- Compound Orders: Distribute shipping fees among participating customers.
- Create notifications for various operations.
- Manage notification templates, subjects, content, languages, and channels (email, SMS).
- Use placeholders in templates for dynamic content.
- Example template: "Dear {x}, your booking of the {y} is confirmed. Thanks for using our store :)"
- Support at least two different templates for order placement and shipment.
- Implement a queue for notifications to be sent.
- List the current content of the queue.
- Allow customers to cancel order placement or shipping within a pre-configured duration.
- Automatically remove messages from the queue after a configured time to simulate sending.
- Provide live statistics on notifications:
- Most notified email address/phone number.
- Most sent notification template.
The module exposes all functionalities via a RESTful API. Below are examples of the API endpoints:
-
Add Account:
POST /account/add- Input: username, email, phone, and balance.
-
Get Account:
GET /account/get/{username}- Input: username
- Output: All user info if exists
-
Get Product:
GET /product/get/{ID}- Output: Product details.
-
Get All Products:
GET /product/getAll- Output: List of all products
- Place Simple Order:
POST /order/add/simpleOrder- Input: Order details
- Place Compound Order:
POST /order/add/compoundOrder- Input: Order details
- Ship Order:
POST /order/ship/{ID}- Input: Order ID
- Get Notification Statistics:
GET /statistics/get/mostNotifiedEmail- Output: Statistics data
- Get Notification Statistics:
GET /statistics/get/mostNotifiedSMS- Output: Statistics data
- Get Notification Statistics:
GET /statistics/get/mostUsedTemplate- Output: Statistics data
- Clone the repository:
git clone https://github.com/MohamedEssam71/Order-Notification-System.git
| Name | ID | Linked-In | |
|---|---|---|---|
| Mohamed Essam Mahmoud Osman | 20210346 |
messam.sde@gmail.com | mohamed-essam71 |
| Mina Hakim | 20210xxx |
-- | -- |
| Alan Samir Hakoun | 20210xxx |
alanhakoun@gmail.com | alan-hakoun |
| Salah Eddin Mohamed | 20210187 |
salaheddin.mohamed12345@gmail.com | -- |