---
# System prepended metadata

title: CS3203 Test 2

---

# CS3203 Test 2



The App should allow the Users to update their profiles which contain their names, delivery addresses and phone numbers. 

The App should allow the Restaurants to manage their menus which contain the names, the descriptions, the pictures, and the prices of the items available.

The App should allow the Couriers to update their profiles which contain their names and phone numbers. 

The App should notify the Restaurant about the incoming order and allow the Restaurants to view their existing orders.


## ii
```plantuml
@startuml
participant UserUI as uui

participant AccountsProcessor as acc

participant PKB as pkb

uui -> acc: getProfile()
acc -> pkb: getUserProfile()
pkb --> acc: profile
acc --> uui: user profile

uui -> acc: updateProfile()

acc -> pkb: updateUserName()
pkb --> acc: new name

acc -> pkb: updateDeliveryAddress()
pkb --> acc: new address

acc -> pkb: updatePhoneNumber()
pkb --> acc: new phone number

acc --> uui: new profile
```

## iii
```plantuml
@startuml
participant RestaurantUI as rui

participant AccountsProcessor as acc

participant PKB as pkb


rui -> acc: getMenu()
acc -> pkb: getRestaurantMenu()
pkb --> acc:menu
acc --> rui: restaurant profile
rui -> acc: updateMenu()
acc -> pkb: updateRestaurantName()
pkb --> acc: new restaurant name
acc -> pkb: updateDescription()
pkb --> acc: new description
acc -> pkb: updatePicture()
pkb --> acc: new picture
acc -> pkb: updatePrice()
pkb --> acc: new price
acc --> rui: new menu
```

## iv
```plantuml
@startuml
participant CourierUI as cui

participant AccountsProcessor as acc

participant PKB as pkb

cui -> acc: getCourierProfile()
acc -> pkb: getCourierProfile()
acc --> cui: courier profile

cui -> acc: updateProfile()
acc -> pkb: updateCourierName()
pkb --> acc: new name
acc -> pkb: updatePhoneNumber()
pkb --> acc: new phone number
acc --> cui:  new Profile

```

## notify order
```plantuml
@startuml
participant RestaurantUI as rui

participant OrderProcessor as order

order -> rui: notifyOrder()


```

## view order
```plantuml
@startuml
participant RestaurantUI as rui

participant OrderProcessor as order

participant PKB as pkb

rui -> order : viewOrder()
order -> pkb : viewOrder()
pkb --> order : Order
order --> rui : Order

```