## Permissions Note
- Anything a **User** has, it is implied that **Root**, **Admin**, **Supervisor** also have.
- Anything a **Supervisor** has, it is implied that **Root**, **Admin** also have.
- Anything a **Admin** has, it is implied that **Root** also have.

# Features for Version 1.0.0

## Authentication
**Users** can log in through **Login Page**
- **Users** that forgot their information can send a request for that in the **Forgot Password Page*
- **Users** logged in will be taken to the **Daily Roster Page**

## Navigation
**Users** have access to a fixed navbar at the top of the page.
- **Users** can click on the grid icon to go to the **DailyRosterPage**
- **Admins** can click on the grid icon to go to the **ManageSchedulePage**
- **Supervisors** can click on the grid icon to go to the **ManageUsersPage**
- **Admins** can click on the grid icon to go to the **ManageSkillsPage**
- **Admins** can click on the grid icon to go to the **ManagePositionsPage**
- **Users** can click on the grid icon to go to the **UserHelpPage**
- **Users** can click on the grid icon to go to the **UserProfilePage**
- **Users** can click on the grid icon *logout*

## Scheduling
**Users** have a **Daily Roster Page**
- **Users** can view all *Time Slots* in a **Schedule** that's avaliable to them today.
 - **Users** can filter *Time Slots* by
  - *Name*
  - *Position*
  - *Unit #*
  - *Vehicle #*
  - *Emergency #*
  - *Hours*
  - *Skills*
  - *Notes*
- **Users** can click on a *Time Slot* to go to the **View TimeSlot Page** for the specific *Time Slot*.
 - **Users** can add a **Time Slot Note** if they are assigned to a specific *Time Slot*.
 - **Supervisors** can update a *Time Slot's*:
  - *Unit #*
  - *Vehicle Number*
  - *Emergency Number*
 - **Admins** can adjust all the information found in a *Time Slot*. These updates can be singular changes or affect all related *Time Slots*
- **Users** assigned to select a *Time Slot* can click on a button that takes them to the **Select TimeSlot Page**.
 - **Users** can click on a *Time Slot* to go to the **Confirm TimeSlot Page** to ensure that this is the *Time Slot* they'd like in the upcoming schedule.

**Admins** have a **Manage Schedule Page**
- **Admins** can CRUD *Schedules*
- **Admins** can click on a *Schedule* icon to redirect them to the **View Schedule Page**
 - **Admins** are able to CRUD *Time Slots* to a *Schedule
  - **Admins** are able to add existing *Users* to a *Time Slot*

## Users
**Supervisors** have a **Manage Users Page**
- **Admins** can CRUD *Users*
- **Supervisors** can click on a *User* to view a User's information in the **View User Page**
 - **Supervisors** can click on the **Edit User Page** to change the following information:
  - Default Vehicle Number
  - Default Emergency Number
  - Send Reset Password Request to *User*
 - **Admins** can click on the **Edit User Page** to update all the information of a *User*
- **Supervisors** can filter by
 - *Name*
 - *Positions*
 - *Skills*

**Admins** have a **Manage Positions Page**
- **Admins** can CRUD *Positions*
- **Admins** can click on the **Manage Seniority Page** to manage the seniority of all the *Users* in the database
 - **Admins** can place *Users* into the list
 - **Admins** can order *Users* according to senority
 - **Admins** can remove *Users* from the list. Senority for these will default to the lowest one possible.

**Admins** have a **Manage Skills Page**
- **Admins** can CRUD *Skills*

## Miscellaneous
**Users** can access a **User Help Page**
 - **Users** can scroll a page with instructions based on their *Role*.

- **Users** can access their **UserProfilePage**
 - **Users** can view their information and settings.
 - **Users** can update their:
  - *Password*
  - *Picture*
