Compare commits
No commits in common. "2698ca580bda2da0109e8282e4d6339ed41f4630" and "245d1a9f0e052a92bb09d59d62b88d9a76c3ad13" have entirely different histories.
2698ca580b
...
245d1a9f0e
@ -57,7 +57,7 @@ paths:
|
|||||||
- Users
|
- Users
|
||||||
security:
|
security:
|
||||||
- bearer: []
|
- bearer: []
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: Ok
|
description: Ok
|
||||||
content:
|
content:
|
||||||
@ -122,11 +122,11 @@ paths:
|
|||||||
description: Successfully changed.
|
description: Successfully changed.
|
||||||
'401':
|
'401':
|
||||||
$ref: '#/components/responses/UnauthorizedError'
|
$ref: '#/components/responses/UnauthorizedError'
|
||||||
/user/{RegNo}:
|
/user/{mat}:
|
||||||
parameters:
|
parameters:
|
||||||
- name: RegNo
|
- name: mat
|
||||||
in: path
|
in: path
|
||||||
description: Regestration number of the user (unique id)
|
description: Matricule of the user (unique id)
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
type: integer
|
type: integer
|
||||||
@ -147,8 +147,6 @@ paths:
|
|||||||
tags:
|
tags:
|
||||||
- General
|
- General
|
||||||
- Admin
|
- Admin
|
||||||
- Secretariat
|
|
||||||
- Ext (scientific articles)
|
|
||||||
security:
|
security:
|
||||||
- bearer: []
|
- bearer: []
|
||||||
requestBody:
|
requestBody:
|
||||||
@ -190,12 +188,6 @@ paths:
|
|||||||
'401':
|
'401':
|
||||||
$ref: '#/components/responses/UnauthorizedError'
|
$ref: '#/components/responses/UnauthorizedError'
|
||||||
/courses/{id}:
|
/courses/{id}:
|
||||||
parameters:
|
|
||||||
- name: id
|
|
||||||
in: path
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: integer
|
|
||||||
get:
|
get:
|
||||||
summary: see courses informations
|
summary: see courses informations
|
||||||
tags:
|
tags:
|
||||||
@ -208,7 +200,12 @@ paths:
|
|||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/Course'
|
$ref: '#/components/schemas/Course'
|
||||||
|
parameters:
|
||||||
|
- name: id
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
delete:
|
delete:
|
||||||
summary: delete a course
|
summary: delete a course
|
||||||
tags:
|
tags:
|
||||||
@ -244,6 +241,7 @@ paths:
|
|||||||
faculty:
|
faculty:
|
||||||
type: string
|
type: string
|
||||||
teachers:
|
teachers:
|
||||||
|
type: object
|
||||||
$ref: '#/components/schemas/User'
|
$ref: '#/components/schemas/User'
|
||||||
assistants:
|
assistants:
|
||||||
type: array
|
type: array
|
||||||
@ -268,7 +266,7 @@ paths:
|
|||||||
summary: Create a cursus
|
summary: Create a cursus
|
||||||
tags:
|
tags:
|
||||||
- General
|
- General
|
||||||
- Cursus
|
- cursus
|
||||||
security:
|
security:
|
||||||
- bearer: []
|
- bearer: []
|
||||||
requestBody:
|
requestBody:
|
||||||
@ -300,7 +298,7 @@ paths:
|
|||||||
summary: See Cursus's informations
|
summary: See Cursus's informations
|
||||||
tags:
|
tags:
|
||||||
- General
|
- General
|
||||||
- Cursus
|
- cursus
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: OK
|
description: OK
|
||||||
@ -318,7 +316,7 @@ paths:
|
|||||||
summary: Delete cursus
|
summary: Delete cursus
|
||||||
tags:
|
tags:
|
||||||
- General
|
- General
|
||||||
- Cursus
|
- cursus
|
||||||
security:
|
security:
|
||||||
- bearer: []
|
- bearer: []
|
||||||
responses:
|
responses:
|
||||||
@ -330,7 +328,7 @@ paths:
|
|||||||
summary: Modify cursus
|
summary: Modify cursus
|
||||||
tags:
|
tags:
|
||||||
- General
|
- General
|
||||||
- Cursus
|
- cursus
|
||||||
security:
|
security:
|
||||||
- bearer: []
|
- bearer: []
|
||||||
requestBody:
|
requestBody:
|
||||||
@ -347,6 +345,7 @@ paths:
|
|||||||
faculty:
|
faculty:
|
||||||
type: string
|
type: string
|
||||||
teachers:
|
teachers:
|
||||||
|
type: object
|
||||||
$ref: '#/components/schemas/User'
|
$ref: '#/components/schemas/User'
|
||||||
assistants:
|
assistants:
|
||||||
type: array
|
type: array
|
||||||
@ -366,416 +365,7 @@ paths:
|
|||||||
'401':
|
'401':
|
||||||
$ref: '#/components/responses/UnauthorizedError'
|
$ref: '#/components/responses/UnauthorizedError'
|
||||||
|
|
||||||
|
|
||||||
/lesson:
|
|
||||||
post:
|
|
||||||
summary: create a new lesson
|
|
||||||
tags:
|
|
||||||
- Secretariat
|
|
||||||
- Lesson
|
|
||||||
- Ext (Schedule)
|
|
||||||
security:
|
|
||||||
- bearer: []
|
|
||||||
requestBody:
|
|
||||||
required: true
|
|
||||||
content:
|
|
||||||
application/x-www-form-urlencoded:
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
date:
|
|
||||||
type: string
|
|
||||||
description: Follow the iso 8601 ("YYYY-MM-DD")
|
|
||||||
CourseId:
|
|
||||||
type: integer
|
|
||||||
duration:
|
|
||||||
type: number
|
|
||||||
classroom:
|
|
||||||
type: string
|
|
||||||
responses:
|
|
||||||
'201':
|
|
||||||
description: Lesson created
|
|
||||||
'401':
|
|
||||||
$ref: '#/components/responses/UnauthorizedError'
|
|
||||||
/lesson/{id}:
|
|
||||||
parameters:
|
|
||||||
- name: id
|
|
||||||
in: path
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: integer
|
|
||||||
get:
|
|
||||||
summary : See lesson's informations
|
|
||||||
tags:
|
|
||||||
- Users
|
|
||||||
- Lesson
|
|
||||||
- Ext (Schedule)
|
|
||||||
responses:
|
|
||||||
'200':
|
|
||||||
description: OK
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: '#/components/schemas/Lesson'
|
|
||||||
patch:
|
|
||||||
summary : Modify Lesson
|
|
||||||
tags:
|
|
||||||
- Secretariat
|
|
||||||
- Lesson
|
|
||||||
- Ext (Schedule)
|
|
||||||
security:
|
|
||||||
- bearer: []
|
|
||||||
requestBody:
|
|
||||||
required: true
|
|
||||||
content:
|
|
||||||
application/x-www-form-urlencoded:
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
date:
|
|
||||||
type: string
|
|
||||||
description: Follow the iso 8601 ("YYYY-MM-DD")
|
|
||||||
IDcourse:
|
|
||||||
type: integer
|
|
||||||
duration:
|
|
||||||
type: number
|
|
||||||
classroom:
|
|
||||||
type: string
|
|
||||||
responses:
|
|
||||||
'201':
|
|
||||||
description: Lesson modified
|
|
||||||
'401':
|
|
||||||
$ref: '#/components/responses/UnauthorizedError'
|
|
||||||
|
|
||||||
delete:
|
|
||||||
summary: Delete lesson
|
|
||||||
tags:
|
|
||||||
- Lesson
|
|
||||||
- Secretariat
|
|
||||||
- Ext (Schedule)
|
|
||||||
security:
|
|
||||||
- bearer: []
|
|
||||||
responses:
|
|
||||||
'201':
|
|
||||||
description: Success
|
|
||||||
'401':
|
|
||||||
$ref: '#/components/responses/UnauthorizedError'
|
|
||||||
/scheduleRequest:
|
|
||||||
post:
|
|
||||||
summary: Create a new request
|
|
||||||
tags:
|
|
||||||
- Teacher
|
|
||||||
- ScheduleRequest
|
|
||||||
- Ext (Schedule)
|
|
||||||
requestBody:
|
|
||||||
required: true
|
|
||||||
content:
|
|
||||||
application/x-www-form-urlencoded:
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
requestType:
|
|
||||||
type: string
|
|
||||||
lessonId:
|
|
||||||
type: integer
|
|
||||||
newDate:
|
|
||||||
type: string
|
|
||||||
description: Follow the iso 8601 ("YYYY-MM-DD")
|
|
||||||
newClassroom:
|
|
||||||
type: string
|
|
||||||
newCourseId:
|
|
||||||
type: integer
|
|
||||||
responses:
|
|
||||||
'201':
|
|
||||||
description: Request created
|
|
||||||
'401':
|
|
||||||
$ref: '#/components/responses/UnauthorizedError'
|
|
||||||
|
|
||||||
/scheduleRequest/{id}:
|
|
||||||
parameters:
|
|
||||||
- name: id
|
|
||||||
in: path
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: integer
|
|
||||||
get:
|
|
||||||
summary : See request information
|
|
||||||
tags:
|
|
||||||
- Teacher
|
|
||||||
- Secretariat
|
|
||||||
- ScheduleRequest
|
|
||||||
- Ext (Schedule)
|
|
||||||
responses:
|
|
||||||
'200':
|
|
||||||
description: OK
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: '#/components/schemas/ScheduleRequest'
|
|
||||||
patch:
|
|
||||||
summary : Modify request
|
|
||||||
tags:
|
|
||||||
- Teacher
|
|
||||||
- ScheduleRequest
|
|
||||||
- Ext (Schedule)
|
|
||||||
requestBody:
|
|
||||||
required: true
|
|
||||||
content:
|
|
||||||
application/x-www-form-urlencoded:
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
newDate:
|
|
||||||
type: string
|
|
||||||
newClassroom:
|
|
||||||
type: string
|
|
||||||
newCourseId:
|
|
||||||
type: integer
|
|
||||||
responses:
|
|
||||||
'201':
|
|
||||||
description: Request modified
|
|
||||||
delete:
|
|
||||||
summary: Delete request
|
|
||||||
tags:
|
|
||||||
- Teacher
|
|
||||||
- Secretariat
|
|
||||||
- ScheduleRequest
|
|
||||||
- Ext (Schedule)
|
|
||||||
responses:
|
|
||||||
'201':
|
|
||||||
description: Success
|
|
||||||
|
|
||||||
/display:
|
|
||||||
post:
|
|
||||||
summary: Create a new display
|
|
||||||
tags:
|
|
||||||
- Display
|
|
||||||
- Ext (Schedule)
|
|
||||||
requestBody:
|
|
||||||
required: true
|
|
||||||
content:
|
|
||||||
application/x-www-form-urlencoded:
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
timeMode:
|
|
||||||
type: string
|
|
||||||
displayMode:
|
|
||||||
type: string
|
|
||||||
userId:
|
|
||||||
type: integer
|
|
||||||
responses:
|
|
||||||
'201':
|
|
||||||
description: display created
|
|
||||||
|
|
||||||
/display/{id}:
|
|
||||||
parameters:
|
|
||||||
- name: id
|
|
||||||
in: path
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: integer
|
|
||||||
get:
|
|
||||||
summary : See display information
|
|
||||||
tags:
|
|
||||||
- Users
|
|
||||||
- Display
|
|
||||||
- Ext (Schedule)
|
|
||||||
responses:
|
|
||||||
'200':
|
|
||||||
description: OK
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: '#/components/schemas/Display'
|
|
||||||
patch:
|
|
||||||
summary : Modify display
|
|
||||||
tags:
|
|
||||||
- Users
|
|
||||||
- Display
|
|
||||||
- Ext (Schedule)
|
|
||||||
requestBody:
|
|
||||||
required: true
|
|
||||||
content:
|
|
||||||
application/x-www-form-urlencoded:
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
timeMode:
|
|
||||||
type: string
|
|
||||||
displayMode:
|
|
||||||
type: string
|
|
||||||
responses:
|
|
||||||
'201':
|
|
||||||
description: Display modified
|
|
||||||
# Extension publication scientifique
|
|
||||||
|
|
||||||
/article:
|
|
||||||
post:
|
|
||||||
summary: create an article
|
|
||||||
tags:
|
|
||||||
- Ext (scientific articles)
|
|
||||||
- Researcher
|
|
||||||
security:
|
|
||||||
- bearer : []
|
|
||||||
responses:
|
|
||||||
"201" :
|
|
||||||
description: OK
|
|
||||||
'401':
|
|
||||||
$ref: '#/components/responses/UnauthorizedError'
|
|
||||||
requestBody:
|
|
||||||
required : true
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
pdf:
|
|
||||||
type: string
|
|
||||||
description : the B64 version encoding of the pdf file
|
|
||||||
access:
|
|
||||||
type: string
|
|
||||||
summary:
|
|
||||||
type: string
|
|
||||||
language:
|
|
||||||
type: string
|
|
||||||
title:
|
|
||||||
type: string
|
|
||||||
date:
|
|
||||||
type: string
|
|
||||||
description: Follow the iso 8601 ("YYYY-MM-DD")
|
|
||||||
views:
|
|
||||||
type: integer
|
|
||||||
example:
|
|
||||||
{
|
|
||||||
"access": "private",
|
|
||||||
"pdf": " *the b64 encoding of the pdf* ",
|
|
||||||
"summary": "looks in details about graph's second theorem",
|
|
||||||
"language": "english",
|
|
||||||
"title": "graph's second theorem study",
|
|
||||||
"date":"2023-02-01",
|
|
||||||
"views": 420,
|
|
||||||
"authors" : []
|
|
||||||
}
|
|
||||||
/article/{id}:
|
|
||||||
parameters:
|
|
||||||
- name: id
|
|
||||||
in: path
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: integer
|
|
||||||
get:
|
|
||||||
summary: get a certain article
|
|
||||||
tags:
|
|
||||||
- Users
|
|
||||||
- Ext (scientific articles)
|
|
||||||
security:
|
|
||||||
- bearer: []
|
|
||||||
responses:
|
|
||||||
"201":
|
|
||||||
description: OK
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: '#/components/schemas/Article'
|
|
||||||
'401':
|
|
||||||
$ref: '#/components/responses/UnauthorizedError'
|
|
||||||
|
|
||||||
patch:
|
|
||||||
summary: modify an article
|
|
||||||
tags:
|
|
||||||
- Researcher
|
|
||||||
- Ext (scientific articles)
|
|
||||||
security:
|
|
||||||
- bearer : []
|
|
||||||
responses:
|
|
||||||
"201":
|
|
||||||
description: article modifié
|
|
||||||
'401':
|
|
||||||
$ref: '#/components/responses/UnauthorizedError'
|
|
||||||
requestBody:
|
|
||||||
required : true
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
pdf:
|
|
||||||
type: string
|
|
||||||
description : the B64 version encoding of the pdf file
|
|
||||||
access:
|
|
||||||
type: string
|
|
||||||
summary:
|
|
||||||
type: string
|
|
||||||
language:
|
|
||||||
type: string
|
|
||||||
title:
|
|
||||||
type: string
|
|
||||||
date:
|
|
||||||
type: string
|
|
||||||
description: Follow the iso 8601 ("YYYY-MM-DD")
|
|
||||||
views:
|
|
||||||
type: integer
|
|
||||||
example:
|
|
||||||
{
|
|
||||||
"access": "public",
|
|
||||||
"pdf": " *the new b64 encoding of the pdf* ",
|
|
||||||
"summary": "looks in details about the duck's algorithm problem",
|
|
||||||
"language": "english",
|
|
||||||
"title": "duck's algorithm problem solving",
|
|
||||||
"date":"2023-02-01",
|
|
||||||
"views": 10,
|
|
||||||
"authors" : []
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
delete:
|
|
||||||
summary: delete own article
|
|
||||||
tags:
|
|
||||||
- Researcher
|
|
||||||
- Ext (scientific articles)
|
|
||||||
security:
|
|
||||||
- bearer: []
|
|
||||||
responses:
|
|
||||||
'201':
|
|
||||||
description: OK
|
|
||||||
'401':
|
|
||||||
$ref: '#/components/responses/UnauthorizedError'
|
|
||||||
|
|
||||||
/DisplayArticle:
|
|
||||||
parameters:
|
|
||||||
- in: query
|
|
||||||
name: author
|
|
||||||
required: false
|
|
||||||
schema:
|
|
||||||
type: string
|
|
||||||
- in: query
|
|
||||||
name: access
|
|
||||||
required: false
|
|
||||||
schema:
|
|
||||||
type: string
|
|
||||||
enum: [public, restricted, private]
|
|
||||||
- in: query
|
|
||||||
name: name
|
|
||||||
required: false
|
|
||||||
schema:
|
|
||||||
type: string
|
|
||||||
|
|
||||||
get:
|
|
||||||
summary: get a list of article's data
|
|
||||||
tags:
|
|
||||||
- Users
|
|
||||||
- Ext (scientific articles)
|
|
||||||
responses:
|
|
||||||
'200':
|
|
||||||
description: OK
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: "#/components/schemas/DisplayArticle"
|
|
||||||
|
|
||||||
components:
|
components:
|
||||||
securitySchemes:
|
securitySchemes:
|
||||||
bearer:
|
bearer:
|
||||||
@ -869,142 +459,6 @@ components:
|
|||||||
"id": 42,
|
"id": 42,
|
||||||
"courses": ['Math', 'Info']
|
"courses": ['Math', 'Info']
|
||||||
}
|
}
|
||||||
Article:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
articleId:
|
|
||||||
type: integer
|
|
||||||
access :
|
|
||||||
type : string
|
|
||||||
pdf :
|
|
||||||
type : string
|
|
||||||
description : file location
|
|
||||||
summary:
|
|
||||||
type : string
|
|
||||||
language:
|
|
||||||
type : string
|
|
||||||
title :
|
|
||||||
type : string
|
|
||||||
date:
|
|
||||||
type : string
|
|
||||||
views :
|
|
||||||
type : integer
|
|
||||||
authors:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: '#/components/schemas/User'
|
|
||||||
description: first user is the author, the remaining users are co-authors
|
|
||||||
example:
|
|
||||||
{
|
|
||||||
"articleId": 42,
|
|
||||||
"access": "private",
|
|
||||||
"pdf": "/articles/42",
|
|
||||||
"summary": "looks in details about graph's second theorem",
|
|
||||||
"language": "english",
|
|
||||||
"title": "graph's second theorem study",
|
|
||||||
"date":"2023-02-01",
|
|
||||||
"views": 420,
|
|
||||||
"authors" : []
|
|
||||||
}
|
|
||||||
DisplayArticle:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
articleId:
|
|
||||||
type: integer
|
|
||||||
access:
|
|
||||||
type: string
|
|
||||||
summary:
|
|
||||||
type: string
|
|
||||||
title:
|
|
||||||
type: string
|
|
||||||
author:
|
|
||||||
type: string
|
|
||||||
items:
|
|
||||||
$ref: '#/components/schemas/User'
|
|
||||||
example:
|
|
||||||
{
|
|
||||||
"articleId": 42,
|
|
||||||
"access": "private",
|
|
||||||
"summary": "looks in details about graph's second theorem",
|
|
||||||
"title": "graph's second theorem study",
|
|
||||||
"author" : "john doe"
|
|
||||||
}
|
|
||||||
Lesson :
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
id:
|
|
||||||
type: integer
|
|
||||||
date:
|
|
||||||
type: string
|
|
||||||
description: Follow the iso 8601 ("YYYY-MM-DD")
|
|
||||||
duration:
|
|
||||||
type: number
|
|
||||||
description: duration of a course in hours
|
|
||||||
classroom:
|
|
||||||
type: string
|
|
||||||
courseId:
|
|
||||||
type: integer
|
|
||||||
example:
|
|
||||||
{
|
|
||||||
"id": 12,
|
|
||||||
"date": "2023-12-01",
|
|
||||||
"duration": 1.5,
|
|
||||||
"classroom": "AMPHI01",
|
|
||||||
"courseId": 12
|
|
||||||
}
|
|
||||||
ScheduleRequest:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
id:
|
|
||||||
type: integer
|
|
||||||
requestType:
|
|
||||||
type: string
|
|
||||||
lessonId:
|
|
||||||
type: integer
|
|
||||||
teacherId:
|
|
||||||
type: integer
|
|
||||||
newDate:
|
|
||||||
type: string
|
|
||||||
description: Follow the iso 8601 ("YYYY-MM-DD")
|
|
||||||
newClassroom:
|
|
||||||
type: string
|
|
||||||
newCourseId:
|
|
||||||
type: integer
|
|
||||||
example:
|
|
||||||
{
|
|
||||||
"id": 12,
|
|
||||||
"requestType": "moveLesson",
|
|
||||||
"lessonId": 52,
|
|
||||||
"teacherId": 12,
|
|
||||||
"newDate": "2023-12-20",
|
|
||||||
"newClassroom":,
|
|
||||||
"newCourseId":,
|
|
||||||
}
|
|
||||||
|
|
||||||
Display:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
id:
|
|
||||||
type: integer
|
|
||||||
timeMode:
|
|
||||||
type: string
|
|
||||||
description: Define the period displayed on the schedule (week,month,quadrimester..)
|
|
||||||
displayMode:
|
|
||||||
type: string
|
|
||||||
userId:
|
|
||||||
type: integer
|
|
||||||
description: Id of the user who owns this display
|
|
||||||
example:
|
|
||||||
{
|
|
||||||
"id": 12,
|
|
||||||
"timeMode": "month",
|
|
||||||
"displayMode": "grid",
|
|
||||||
"UserId": 12
|
|
||||||
}
|
|
||||||
responses:
|
responses:
|
||||||
UnauthorizedError:
|
UnauthorizedError:
|
||||||
description: Unauthorized access or missing bearer
|
description: Unauthorized access or missing bearer
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user