Necessidade
Refatorar o cadastro e a edição de eventos de acordo com a especificação.
Restrições:
- nome é requerido;
- descrição não é requerido, porém deve ter no máximo 400 caracteres caso for fornecido;
- data inicial é requerida.
- data inicial deve seguir o padrão ISO 8601 ( YYYY-MM-DD )
- data final não é requirida então caso não for informada, assumir a mesa data de início, significando o evento de um dia
- data final deve seguir o padrão ISO 8601 ( YYYY-MM-DD ) caso for fornecida;
- data final deve ser igual ou maior que a data inicial caso for fornecida;
Caso retorne 200, atualize os dados da tabela conforme foi desenvolvido no issue #10
Caso retorne 400, exiba uma mensagem dizendo que a requisição está inválida;
Caso retorne 404, exiba uma mensagem dizendo que não foi encontrado o item em caso de edição
Caso retorne um código não esperado, exiba uma mensagem genérica dizendo que houve problemas na execução da requisição;
Para o cadastro, siga a reduzida OpenAPI abaixo para carregar os dados. Caso queira ver a especificação mais completa para esse recurso, clique aqui
paths:
/eventos:
post:
tags:
- eventos
description: Adiciona um novo evento
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NovoEventoRequest'
required: true
responses:
200:
description: novo evento registrado
content:
application/json:
schema:
$ref: '#/components/schemas/NovoEventoResponse'
400:
description: Requisição inválida
content: {}
components:
schemas:
NovoEventoRequest:
type: object
properties:
nome:
type: string
descricao:
type: string
dataInicio:
type: string
format: date
dataFim:
type: string
format: date
required:
- nome
- dataInicio
NovoEventoResponse:
type: object
properties:
id:
type: number
nome:
type: string
descricao:
type: string
dataInicio:
type: string
format: date
dataFim:
type: string
format: date
Para a edição, siga a reduzida OpenAPI abaixo para carregar os dados. Caso queira ver a especificação mais completa para esse recurso, clique aqui
paths:
/eventos/{id}:
put:
tags:
- eventos
description: Atualiza um evento registrado
parameters:
- name: id
in: path
required: true
schema:
type: number
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AtualizarEventoRequest'
required: true
responses:
200:
description: Retorna o evento atualizado
content:
application/json:
schema:
$ref: '#/components/schemas/AtualizarEventoResponse'
400:
description: Requisição inválida
content: {}
404:
description: Evento não encontrado
content: {}
components:
schemas:
AtualizarEventoRequest:
type: object
properties:
nome:
type: string
descricao:
type: string
dataInicio:
type: string
format: date
dataFim:
type: string
format: date
required:
- nome
- dataInicio
AtualizarEventoResponse:
type: object
properties:
id:
type: number
nome:
type: string
descricao:
type: string
dataInicio:
type: string
format: date
dataFim:
type: string
format: date
Dicas:
"Disclamer: essas dicas são para estudar e conhecer um pouco mais sobre Angular e sobre os frameworks envolvidos, então não encarem como uma regra, não existe "bala de prata", mas uma ou outra "ferramenta" a mais em nosso cinto de utilidades não faz mal algum, não é ?"
- Entre em contato com o grupo do projeto em caso de dúvida. Que tal fazer pair programming? Ou quem sabe sessões de coding dojo? (Gostei da idéia)