# Zapytania API
## Zapytania związane z CRUD poza exchange
### Pobranie wydziałów:
* getFaculties
* przyjmuje
```
{
token
}
```
* zwraca
* OK
```
{
code: 200,
faculties: [{name: string, id: int}], # shortname wydział
message: ""
}
```
* NOK
```
{
code: 500,
message: "BD foult"
}
```
### Dodawanie wykładowcy:
* addLecturer
* dodaje danego wykładowce
* waliduje czy name/surname nie jest puste
* waliduje czy rating jest w zakresie -> opcjonalny argument, domyślnie -1
* nie waliduje stopnia bo jest on z naszej listy -> opcjonalny argument, domyślnie “”, na końcu i tak bd waluduje
* zwraca:
* NOK
```
{
code: 500,
message: "BD foult"
}
```
```
{
code: 400,
message: "request problem"
}
```
* OK
```
{
code: 200,
message: ""
}
```
* getLecturerDegrees
* daje liste potencjalnych stopni, ponieważ powinny być listą żeby nie był problem że user pisze magister a my chcemy mgr
* zwraca:
```
{
code: 200,
message: ""
degrees: [string] # shortname tytułu
}
```
### Dodanie klasy:
* addClassroom
* sprawdza czy długość numeru klasy i faculty zgadza się z wymaganiami
* jeżeli próba dodania tej samej klasy na tym samym wydziale, bd wywala błąd
* przyjmuje
```
{
facultyId: int # wzięte z listy wydziałów
classNr: str,
}
```
* zwraca:
* NOK
```
{
code: 500,
message: "BD foult" # w tym problem że klasa na ty samym wydziale już istnieje
}
```
```
{
code: 400,
message: "request problem"
}
```
* OK
```
{
code: 200,
message: ""
}
```
### Dodanie kursu:
* getCourseTypes
* zwraca:
```
{
code: 200,
message: "",
courses: [string] # nazwy kursów
}
```
* addCourse
* przyjmuje:
```
{
type: str,
name: str, # nie obligatoryjne ale "" musi być
code: str
facultyId: int # wzięte z listy wydziałów
}
```
* faculty_id powinno być wyjęte z listy zaciągniętej z getFaculties
* type powinien być wyjęty z getCourseTypes
* waliduje długość code, i długość name
* type i faculty_id jak złe to bd się wywala
* zwraca:
* NOK
```
{
code: 500,
message: "BD foult"
}
```
```
{
code: 400,
message: "request problem"
}
```
* OK
```
{
code: 200,
message: ""
}
```
### Dodanie grupy:
* addGroup
* dodaje grupę na postawie której można robić potem exchange
* waliduje:
* poprawność czasu i poprawność dnia, reszta jak zła to zwróci 500 bo BD constrints
* przyjmuje:
```
{
timeStart: int, #minuty od początku dnia
timeEnd: int, # -||-
day: int, # (0-6)
classroomId: int, # wybierane z listy clas id z getClasses
lecturerId: int, # z listy getLecturers
courseId: int, # z listy getCourses
groupNr: int # podane przez użytkownika
}
```
* zwraca:
```
{
code: 500,
message: "BD foult"
}
```
```
{
code: 400,
message: "request problem"
}
```
```
{
code: 200,
message: ""
}
```
* getClassrooms
* zwraca liste klas
* przyjmuje:
```
{
facultyId: int
}
```
* zwraca:
```
{
code: 200
classrooms: [{id: int, nr: str}] # numer to str bo np CS502
}
```
```
{
code: 500,
message: "BD foult"
}
```
```
{
code: 400,
message: "request problem"
}
```
* getLecturers
* istnieje tylko jedna osoba o danym imieniu i nazwisku
* przyjmuje:
```
{
token
}
```
* zwraca:
```
{
code: 200
lecturers: [{title: str, name: str, surname: str, lecturerId: int}]
}
```
```
{
code: 500,
message: "BD foult"
}
```
```
{
code: 400,
message: "request problem"
}
```
* getCourses
* zwraca wszystkie aktualnie wpisane kursy dla danego wydziału
* przyjmuje:
```
{
facultyId: int
}
```
* zwraca:
```
{
code: 200
courses: [{name: str, courseId: int}]
}
```
```
{
code: 500,
message: "BD foult"
}
```
```
{
code: 400,
message: "request problem"
}
* getGroups #TODO zmiana nazwy
* zwraca grupy wpisane dotychczas do bazy danych dla konkretnego kursu
* przyjmuje:
```
{
token
courseId: int
}
```
* zwraca:
```
{
code: 200
groups: [{groupId: int, groupNr: int, courseCode: str, facultyShortname: str}]
}
```
```
{
code: 500,
message: "BD foult"
}
```
```
{
code: 400,
message: "request problem"
}
## Zapytania związane z użytkownikami
### Dodanie użytkownika
* loginValid
* sprawdza czy login poprawny
* przyjmuje:
```
{
login: str,
}
```
* zwraca:
```
{
code: 500,
message: "BD foult"
}
```
```
{
code: 400,
message: "costumowy message"
}
```
```
{
code: 200,
message: ""
}
```
* addUser
* waliduje: nic
* przyjmuje:
```
{
login: str,
password: str,
name: str, # nie obowiązkowe, "" musi być
surname: str, # nie obowiązkowe, "" musi być
email: str, # nie obowiązkowe, "" musi być
}
```
* zwraca:
```
{
code: 500,
message: "BD foult"
}
```
```
{
code: 400,
message: "request problem"
}
```
```
{
code: 200,
message: ""
}
```
* getUserInfo
* przyjmuje:
```
{
token
login: str
}
```
* zwraca:
```
{
code: 500,
message: "BD foult"
}
```
```
{
code: 400,
message: "request problem"
}
```
```
{
code: 200,
email: str,
firstName: str,
surname: str,
message: ""
}
* addEmail
* przyjmuje:
```
{
login: str,
email: str,
}
```
* zwraca:
```
{
code: 500,
message: "BD foult"
}
```
```
{
code: 400,
message: "request problem"
}
```
```
{
code: 200,
message: ""
}
```
* addFirstname
* przyjmuje:
```
{
login: str,
firstName: str,
}
```
* zwraca:
```
{
code: 500,
message: "BD foult"
}
```
```
{
code: 400,
message: "request problem"
}
```
```
{
code: 200,
message: ""
}
```
* addSurname
* przyjmuje:
```
{
login: str,
surname: str,
}
```
* zwraca:
```
{
code: 500,
message: "BD foult"
}
```
```
{
code: 400,
message: "request problem"
}
```
```
{
code: 200,
message: ""
}
```
* addUserGroup
* przyjmuje:
```
{
login: str,
groupId: int, # wzięte z getGroups
}
```
* zwraca:
```
{
code: 500,
message: "BD foult"
}
```
```
{
code: 400,
message: "request problem"
}
```
```
{
code: 200,
message: ""
}
```
* getUserGroups
* przyjmuje:
```
{
login: str
}
```
* zwraca: #TODO godziny i dzień
```
{
code: 500,
message: "BD foult"
}
```
```
{
code: 400,
message: "request problem"
}
```
```
{
code: 200
groups: [{groupId: int, groupNr: int, courseCode: str, facultyShortname: str}]
}
```
### Walidowanie użytkownika
* authenticateUser
* sprawdza token danego usera i jak aktualny to go przedłuża
* przymuje:
```
{
login: str,
password: str,
}
```
* zwraca:
```
{
code: 401,
message: "incorrect password or login"
}
```
```
{
code: 400,
message: "request problem"
}
```
```
{
code: 200,
message: ""
}
```
### Zmiana hasła
* changePassword
* zmienia hasło danego użytkownika
* przymuje:
```
{
login: str,
old: str, # stare haslo
new: str # nowe haslo
}
```
* zwraca:
```
{
code: 500,
message: "problem with db"
}
```
```
{
code: 400,
message: "request problem"
}
```
```
{
code: 200,
message: ""
}
```
## Zapytania związane z wymianami
### Wpidanie wymiany
* enterExchange
* generalnie kiedy ktoś wybiera exchange w celu poprawnego działania powinien on wybrać grupę z grup danych przez getUserGroups, żeby user najpierw dodał swoją grupę a dopiero potem mógł ją wybrać do wymiany, aby była w tabeli 'user_groups'
* przymuje:
```
{
login: str,
sellGroupId: int, # wyjęte z zapytania getUserGroups
buyGroupIds: [int] # ustawione w priorytecie
}
```
* zwraca:
```
{
code: 500,
message: "problem with db"
}
```
```
{
code: 400,
message: "request problem"
}
```
```
{
code: 200,
message: "Exchange done" / "Exchange added, but not done"
}
```
* getExchanges
* wszystkie aktualne i spełnione wymiany użytkownika
* zwraca
* TODO
```
{
code: 200
exchanges: [{
insertionDate: str,
sellGroup: {groupNr: int,
timeStart: int, #minuty od początku dnia
timeEnd: int,
courseCode: str,
day: int} # 0-6,
complete: bool
buyGroups: [{groupNr: int,
timeStart: int, #minuty od początku dnia
timeEnd: int,
courseCode: str,
day: int}] # 0-6
}]
}
```
* getAllExchanges -- get all exchanges
* wszystie wymiany na rynku
* przymuje:
```
{
login: str,
coursesIds = [int],
jak nie ma kursów (inaczej ignoruje facultyID ale i tak musi być takie pole):
facultyId = int
all: bool #jak true to wszystkie jak false to dla użytkownika
}
```
* zwraca:
```
{
code: 500,
message: "problem with db"
}
```
```
{
code: 400,
message: "request problem"
}
```
```
{
code: 200
exchanges: [{insertionDate: str,
sellGroup: {groupNr: int,
timeStart: int, #minuty od początku dnia
timeEnd: int,
courseCode: str,
day: int} # 0-6,
complete: bool
buyGroups: [{groupNr: int,
timeStart: int, #minuty od początku dnia
timeEnd: int,
courseCode: str,
day: int}] # 0-6
}]
}
```
Do dodania:
- getAllExchanges
-