# Requirements
## Actors

Figure 1 - Actors diagram
---
| Identifier | Description |
| :--------: | :------------------------------------------: |
| User | A general user is anyone that uses the site. <br> Generic user that can search and view services and events. <br> It can belong to one of two categories: authenticated and unauthenticated (visitor). |
| Visitor | Can authenticate in the system. |
| Authenticated User | An user that is logged in, can submit new services or events for approval and see the list and the state of the previously submited requests. |
| GI User | Authenticated user that can manage requests belonging to certain UP entities. |
| Administrator | Administrator is responsible for the management of the website. |
Table 1: Actors' description
## User stories
### User
| Identifier | Name | Priority | Description |
|:----------:|:---: |:---: |:----------------------|
|US101|Browse Events |High |As a User, I want to browse all events, so that I can see if there is one that interests me.|
|US102|View Event Details|High |As a User, I want to access the event page so that I can know more about its details.|
|US103|Search Events |High |As a User, I want to search events so that I can easily find the events that meet my requirements.|
|US104|Explore Events By Tag |High |As a User, I want to explore events by tag, so that I can find related ones faster.|
|US105|Browse Services |High |As a User, I want to browse all services, so that I can see if there is one that is of use to me.|
|US106|View Service Details|High |As a User, I want to access the service page so that I can know more about its details.|
|US107|Search Services |High |As a User, I want to search services so that I can easily find the services that are of use to me.|
|US108|About Page |Low |As a User, I want to acess the About Page so that I can know what the website is about.|
|US109|Check FAQ |Low |As a User, I want to check the frequently asked questions so that I can clarify some of my questions easily.|
|US110|Check Contacts |Low |As a User, I want to check the contacts so that I contact the people who manage the website.|
Table 2: User's user stories
---
### Visitor
| Identifier | Name | Priority | Description |
|:----------:|:---:|:---:|:----------------------|
|US201|Login |High |As a Guest, I want to log in the system using my federated authentication, so that I can be authenticated and use the website with my UP account.|
Table 3: Visitor's user stories
---
### Authenticated User
| Identifier | Name | Priority | Description |
|:----------:|:---:|:---:|:----------------------|
|US301|Log out|High|As an Authenticated User, I want to sign out of the system, so that I can close my account.|
|US302|View Requests|High|As an Authenticated User, I want to view my requests, so that I can check their status.|
|US303|Create Event request|High|As an Authenticated User, I want to create an event request, so that I can share it with everyone.|
|US304|Create access to virtual machine request|High|As an Authenticated User, I want to create a virtual machine request, so that I can use one.|
|US305|Edit Event request|High|As an Authenticated User, I want to make a request to edit my event, so that I can update it's information.|
|US306|Archive Event request|High|As an Authenticated User, I want to make a request to archive my event.|
Table 4: Authenticated User's user stories
---
### GI User
| Identifier | Name | Priority | Description |
|:----------:|:---:|:---:|:----------------------|
|US401|Archive events|High|As an GI, I want to archive other user’s events, of a certain UP entity, so that the site is free of events that have already happened or won't happen anymore.|
|US402|Archive services|High|As an GI, I want to archive services, of a certain UP entity, so that the site is free of services that don't work/exist anymore.|
|US403|Manage Event Requests|High|As an GI, I want to manage event requests, of a certain UP entity, so that they can be displayed on the website or not.|
|US404|Manage Service Requests|High|As an GI, I want to manage service requests, of a certain UP entity, so that they can be displayed on the website or not.|
Table 5: GI User's user stories
---
### Administrator
| Identifier | Name | Priority | Description |
|:----------:|:---:|:---:|:----------------------|
|US501|Assign GI User Accounts|High|As an Administrator, I want to be able to assign GI to a user account, so that I can have someone managing requests.|
|US502|Remove GI User Accounts|High|As an Administrator, I want to be able to remove GI to a user account, so that I can relieve them of those privileges.|
|US503|Archive events|High|As an Administrator, I want to archive other user’s events, so that the site is free of events that have already happened or won't happen anymore.|
|US504|Archive services|High|As an Administrator, I want to archive services, so that the site is free of services that don't work/exist anymore.|
|US505|Manage Event Requests|High|As an Administrator, I want to manage event requests, so that they can be displayed on the website or not.|
|US506|Manage Service Requests|High|As an Administrator, I want to manage service requests, so that they can be displayed on the website or not.|
Table 6: Administrator's user stories
## Supplementary requirements
### Business rules
| Identifier | Name | Description |
|:----------:|:---:|:-------------|
|BR01|Event Date|The ending time of the event must come after the starting time.|
# Sitemap

# Wireframe






# Technology
For building this project, we plan on using the following technologies
- Laravel
- Css (framework to be decided)
- PostgreSQL
- Git (Github or FEUP´s Gitlab)
- Js (framework to be decided)
# Event request form
- Name of the event
- Theme
- Main theme
- Sub theme(s)
- Purpose
- Start Day
- End Day
- Location(s) (maybe the location can be diferent each day )
- Spoke person(s) (can either be the one who makes the request or someone else)
- Other things if needed
# Event edit form
- What to edit
- Reason for the change
# Event delete form
- Reason to delete
# Service request form
- Requested service
- Purpose
- (não sei se metemos a pessoa meter qual a instituição(ões) que lhe podem dar o serviço)
- (os serviços têm limite de tempo, tipo "quero um serviço durante x dias"?)
- (os pedidos de serviço têm duração?)