Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

86b2j5p7n plantuml #8

Open
wants to merge 10 commits into
base: development
Choose a base branch
from
186 changes: 128 additions & 58 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,35 +14,7 @@ The Team Reservation Management System is a web-based application designed to st
### Use Cases
The system supports several key use cases to enhance user experience and manage reservations efficiently. The following diagram provides an overview of the major use cases involved:

* Use Case Diagram:
```
@startuml
left to right direction
actor User as U #yellow
actor Admin as A #lightblue
actor "Super Admin" as SA #pink
rectangle "Reservation Management System" {
U --> (Login)
U --> (Signup)
U --> (View Availability of venues according to the location)
U --> (View Availability of venues according to the venue type)
U --> (Reserve a venue)
U --> (View Summary and State of Reservation)
U --> (Remove draft venues)
U --> (Add feedback)
U --> (Cancel reservation)
A --> (Login)
A --> (Update Venue Details)
A --> (Add new venue details)
A --> (View the user reservations)
A --> (Accept/Reject user reservation)
A --> (Reply to Feedback)
A --> (Delete the venue)
A --> (Generate Reports)
SA --> (Assign Admin)
}
@enduml
```


### User Stories
User stories capture the functionality from the perspective of different roles in the system. Each story describes a specific requirement or feature the system should fulfill.
Expand Down Expand Up @@ -113,42 +85,140 @@ As an Admin, I want to generate reports about venue usage and user reservations
### Activity Diagram
The activity diagram illustrates the flow of actions users perform within the system to complete various tasks such as reserving a venue, managing user roles, and generating reports.

* **Activity Diagram**:
```
@startuml
## Description
This Venue Reservation System allows users to view and reserve venues online. The system accommodates different user types: guest users, registered users, and administrators, each with varying permissions and capabilities.

## User and Admin Activity Flow
The UML activity diagram below illustrates the interactions between users (both guest and registered) and the system, as well as how administrators manage venues and reservations.

### Diagram Outline

1. **Landing Page Interaction**
Users start by landing on the homepage, where they are presented with:
- Login option
- Sign-up option
- Featured Venues section (available for all users, including guests)
Users can log in, sign up, or interact with featured venues.

2. **Login Flow**
If a user clicks on Login, they are redirected to the login page:
- Users can log in if they have an account, redirecting them to the Logged-In Dashboard.
- Users can sign up if they do not have an account, redirecting to the Sign-Up Page.

3. **Guest User Interaction**
If a user clicks on Featured Venues without logging in, they are treated as a Guest User:
- They can search for venues and view filtered results.
- They can check venue availability in a read-only calendar.
- If a guest user clicks to reserve a venue, they are prompted to sign up.

4. **Registered User Interaction**
Once a user is logged in, they are redirected to their Logged-In Dashboard, where they can:
- **Search Venues**: View filtered results and proceed to the reservation form.
- **View My Reservations**: See a list of their reservations with options to modify or cancel.
- **View/Edit Profile**: Access and update their profile information.

5. **Admin Interaction**
An Admin User logs in to access the Admin Dashboard:
- Admins can view venue utilization charts and reports.
- Admins can manage reservations, viewing requests and approving or rejecting them.
- Admins can manage venues, with options to add, edit, or delete venue information.

## Activity Diagram
To better visualize the described user flow, the following activity diagram was generated using PlantUML:

```plantuml
@startuml
|User|
start
:User Login;
if (Is User Registered?) then (yes)
:Authenticate User;
:Land on Landing Page;
:View Login, Signup, and Featured Venues Options;

if (User clicks on Login?) then (yes)
:Redirect to Login Page;
if (Has Account?) then (yes)
:Log In;
:Redirect to Logged-In Dashboard;
else (no)
:Redirect to Sign-Up Page;
endif
else (no)
:Register User;
:Authenticate User;
if (Click on Featured Venues?) then (yes)
:Redirect to Guest User Dashboard;
|Guest User|
if (Click on Login or Signup?) then (yes)
:Redirect to Login or Signup Page;
else (no)
if (Search Venue?) then (yes)
:Enter Venue Name or Filter Criteria;
:View Filtered Venues;
if (Click on Venue?) then (yes)
:View Reservation Calendar (Read-Only);
if (Guest User?) then (yes)
:Prompt to Sign-Up for Reservation;
else (no)
:Proceed to Reservation Form;
endif
endif
endif
endif
endif
endif
:View Available Reservations;
if (Select Reservation?) then (yes)
:Provide Reservation Details;
:Confirm Reservation;
:Send Confirmation Email;
else (no)
:Exit System;

|Registered User|
if (User is Logged In?) then (yes)
:Redirect to Logged-In Dashboard;
:Search Venue, View My Reservations, or View Profile;

if (Click on My Reservations?) then (yes)
:View Reservations List;
if (Modify Reservation?) then (yes)
:Update Reservation;
endif
if (Cancel Reservation?) then (yes)
:Cancel Reservation;
endif
endif

if (Click Profile?) then (yes)
:View Profile Info;
if (Edit Profile?) then (yes)
:Edit Profile Info;
:Save Changes;
endif
endif

if (Search Venue?) then (yes)
:Enter Venue Name or Filter Criteria;
:View Filtered Venues;
if (Click on Venue?) then (yes)
:View Reservation Calendar;
:Proceed to Reservation Form;
:Confirm Reservation;
endif
endif
endif
if (Modify Reservation?) then (yes)
:Retrieve Reservation;
:Update Reservation Details;
:Send Update Confirmation;
else (no)
if (Cancel Reservation?) then (yes)
:Retrieve Reservation;
:Process Cancellation;
:Send Cancellation Confirmation;
else (no)
:Exit System;
endif

|Admin|
if (Admin Log In?) then (yes)
:Redirect to Admin Dashboard;
:View Venue Utilization and Reports;
if (Manage Reservations?) then (yes)
:View Reservation Requests;
if (Approve or Reject Request?) then (yes)
:Send Approval/Rejection Notification;
endif
endif
if (Manage Venues?) then (yes)
:View Venues List;
if (Add/Edit/Delete Venue?) then (yes)
:Perform Venue Operations;
endif
endif
endif
:Log Out;

stop
@enduml
```


### Mockup Design
The system design is visualized through mockups, which offer a representation of the user interface and flow.
Expand Down
71 changes: 71 additions & 0 deletions docs/schema/er_digram.wsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
@startuml
!define RECTANGLE_COLOR #FDF5E6
!define ENTITY_COLOR #FFFAFA

entity USER {
*user_id : uuid [PK]
--
first_name : string
last_name : string
contact_number : int
address : string
email : string
password : string
user_type : enum {user, admin}
}

entity VENUE {
*venue_id : uuid [PK]
--
name : string
photo : string
description : string
capacity : int
venue_size : string
venue_type : enum {Auditorium, Outdoor, Co-Working Space, Conference Hall}
availability : enum {Available, Partial Available, Not Available, Reserved}
time_mode : enum {entire_day, hourly_time, session_time}
*location_id : uuid [FK]
}

entity LOCATION {
*location_id : uuid [PK]
--
city : string
district : string
provincial : string
}

entity RESERVATION {
*reservation_id : uuid [PK]
--
*user_id : uuid [FK]
*venue_id : uuid [FK]
title : string
purpose_of_reservation : string
time_duration : int
extra_services : enum {food, sound_system, private_parking, projectors, extend hours}
reservation_date : date
created_at : timestamp
updated_at : timestamp
question : string
option : string
}

entity RESERVATION_STATE {
*reservation_state_id : uuid [PK]
--
*reservation_id : uuid [FK]
status : enum {Pending, Rejected, Accepted}
admin_comments : string
}



USER ||--|{ RESERVATION : ""
USER ||--o{ VENUE : ""
USER ||--o{ RESERVATION_STATE : ""
VENUE -- RESERVATION : ""
RESERVATION -- RESERVATION_STATE : ""
VENUE -- LOCATION : ""
@enduml
112 changes: 85 additions & 27 deletions docs/uml/activity.wsd
Original file line number Diff line number Diff line change
@@ -1,33 +1,91 @@
@startuml Activity Diagram
@startuml Activity Diagram
|User|
start
:User Login;
if (Is User Registered?) then (yes)
:Authenticate User;
:Land on Landing Page;
:View Login, Signup, and Featured Venues Options;

if (User clicks on Login?) then (yes)
:Redirect to Login Page;
if (Has Account?) then (yes)
:Log In;
:Redirect to Logged-In Dashboard;
else (no)
:Redirect to Sign-Up Page;
endif
else (no)
:Register User;
:Authenticate User;
if (Click on Featured Venues?) then (yes)
:Redirect to Guest User Dashboard;
|Guest User|
if (Click on Login or Signup?) then (yes)
:Redirect to Login or Signup Page;
else (no)
if (Search Venue?) then (yes)
:Enter Venue Name or Filter Criteria;
:View Filtered Venues;
if (Click on Venue?) then (yes)
:View Reservation Calendar (Read-Only);
if (Guest User?) then (yes)
:Prompt to Sign-Up for Reservation;
else (no)
:Proceed to Reservation Form;
endif
endif
endif
endif
endif
endif
:View Available Reservations;
if (Select Reservation?) then (yes)
:Provide Reservation Details;
:Confirm Reservation;
:Send Confirmation Email;
else (no)
:Exit System;

|Registered User|
if (User is Logged In?) then (yes)
:Redirect to Logged-In Dashboard;
:Search Venue, View My Reservations, or View Profile;

if (Click on My Reservations?) then (yes)
:View Reservations List;
if (Modify Reservation?) then (yes)
:Update Reservation;
endif
if (Cancel Reservation?) then (yes)
:Cancel Reservation;
endif
endif

if (Click Profile?) then (yes)
:View Profile Info;
if (Edit Profile?) then (yes)
:Edit Profile Info;
:Save Changes;
endif
endif

if (Search Venue?) then (yes)
:Enter Venue Name or Filter Criteria;
:View Filtered Venues;
if (Click on Venue?) then (yes)
:View Reservation Calendar;
:Proceed to Reservation Form;
:Confirm Reservation;
endif
endif
endif
if (Modify Reservation?) then (yes)
:Retrieve Reservation;
:Update Reservation Details;
:Send Update Confirmation;
else (no)
if (Cancel Reservation?) then (yes)
:Retrieve Reservation;
:Process Cancellation;
:Send Cancellation Confirmation;
else (no)
:Exit System;
endif

|Admin|
if (Admin Log In?) then (yes)
:Redirect to Admin Dashboard;
:View Venue Utilization and Reports;
if (Manage Reservations?) then (yes)
:View Reservation Requests;
if (Approve or Reject Request?) then (yes)
:Send Approval/Rejection Notification;
endif
endif
if (Manage Venues?) then (yes)
:View Venues List;
if (Add/Edit/Delete Venue?) then (yes)
:Perform Venue Operations;
endif
endif
endif
:Log Out;

stop
@enduml
@enduml
Loading