O projeto foi gerado pelo start.spring.io para o projeto de AC1 da matéria de Orientação a Objeto 2.
A arquitetura para o projeto seguiu conforme imagem abaixo:
Você pode testar a API no seguinte endereço do Heroku: https://facens-ac1-poo-2.herokuapp.com. Está com o URL de ac1 mas contém o código do projeto da AC2.
Se você possuir o Insomnia, e quiser testar por ele, baixe o arquivo insomnia.yaml e importe no seu Insomnia, ele possui todas as rotas criadas para essa API com os ambientes configurados para local e para o Heroku.
Há as seguintes rotas:
-
Get: /events
- Busca todos os eventos, você pode passar os Query Params como
page
elimit
para fazer paginação e seus detalhes são retornados nosHeaders
, e Query Params comoname
,description
,emailContact
oustartDate
para filtrar os resultados ou fazer uma pesquisa. - Exemplo: /events?page=0&limit=1&name=Vinicius
- Exemplo: /events?page=0&limit=1&startDate=2021-03-20
- Exemplo: /events?page=0&limit=1&name=Vinicius
- Busca todos os eventos, você pode passar os Query Params como
-
Post: /events
- Cria um novo evento.
{
"name": "Evento do Joga18",
"description": "Será um evento legal",
"place": "Facens",
"emailContact": "vinicius.cardoso@facens.br",
"startDate": "2021-03-21",
"endDate": "2021-03-28",
"startTime": "16:30:00",
"endTime": "19:00:00",
"amountFreeTickets": 10,
"amountPayedTickets": 90,
"priceTicket": 60.99,
"adminId": 1
}
-
Get: /events/{eventId}
- Busca um evento pelo seu ID.
-
Put: /events/{eventId}
- Atualiza um evento pelo seu ID.
{
"name": "Evento do Joga11",
"description": "Será um evento legal para caramba.",
"place": "Facens - LIGA",
"emailContact": "vinicius.cardoso23@etec.sp.gov.br",
"startDate": "2021-03-20",
"endDate": "2021-03-22",
"startTime": "13:00:00",
"endTime": "15:00:00",
"amountFreeTickets": 5,
"amountPayedTickets": 95,
"priceTicket": 99.99,
"adminId": 2
}
- Delete: /events/{eventId}
- Remove um evento pelo seu ID.
- POST: /admins
- Cria um admin.
{
"name": "Vinícius Lourenço",
"email": "vinicius.cardoso@facens.br",
"phoneNumber": "15988116120"
}
- PUT: /admins/{adminId}
- Edita um admin.
{
"name": "Vinícius Lourenço 2",
"email": "vinicius.cardoso2@facens.br",
"phoneNumber": "15988116120"
}
-
GET: /admins/{adminId}
- Busca um admin.
-
GET: /admins
- Busca vários admins.
-
DELETE: /admins/{adminId}
- Remove um admin.
- POST: /attendees
- Cria um participante.
{
"name": "Vinícius Lourenço",
"email": "vinicius.cardoso@facens.br"
}
- PUT: /attendees/{attendeeId}
- Atualiza um participante.
{
"name": "Vinícius Lourenço 2",
"email": "vinicius.cardoso2@facens.br"
}
-
GET: /attendees/{attendeeId}
- Busca um participante.
-
GET: /attendees
- Busca vários participantes.
-
DELETE: /attendees/{attendeeId}
- Remove um participante.
{
"name": "Vinícius Lourenço 2",
"email": "vinicius.cardoso2@facens.br"
}
- POST: /places
- Cria um lugar.
{
"name": "Casa do Joga10",
"address": "Rua Monsenhor Benedito Mário Calazans"
}
- PUT: /places/{placeId}
- Atualiza um lugar.
{
"name": "Casa do Joga10 2",
"address": "Rua Monsenhor Benedito Mário Calazans 2"
}
-
GET: /places/{placeId}
- Busca um lugar.
-
GET: /places
- Busca vários lugares.
-
DELETE: /places/{placeId}
- Remove um lugar.
-
POST: /events/{eventId}/places/{placeId}
- Adiciona um lugar a um evento.
-
DELETE: /events/{eventId}/places/{placeId}
- Remove um lugar a um evento.
-
GET: /events/{eventId}/tickets
- Busca os Tickets de um evento.
-
POST: /events/{eventId}/tickets
- Vende um ticket para um attendee.
- Separação feita entre tickets pagos e gratuitos através do campo "type", onde 0 é gratuito e 1 é pago.
{
"attendeId": 5,
"type": 1
}
- DEL: /events/{eventId}/tickets
- Remove ticket vendido.
- Separação feita entre tickets pagos e gratuitos através do campo "type", onde 0 é gratuito e 1 é pago.
{
"attendeId": 5,
"type": 0
}
- Vinícius Lourenço Claro Cardoso - 180618
- Marcelo Zaguette Junior - 180998