Open TiagoGouvea opened 4 years ago
Detalhes sobre o doador já existente podem ser obtidos na rota:
GET /api/donators
Nome | Tipo | Descrição |
---|---|---|
document |
string |
Numero de documento do doador |
A doação pode ser criada através da rota:
POST /api/donation
Os parâmetros passados na rota serão utilizados para atualizar os dados do doador, caso não exista um doador com o numero de documento informado, um novo registro será criado.
Nome | Tipo | Descrição |
---|---|---|
donator |
object |
Objeto contendo os dados do doador |
donator.name |
string |
Nome do doador |
donator.document |
string |
Numero de documento do doador |
donator.email |
string |
Endereço de email do doador |
donator.phone |
string |
Numero de telefone do doador |
donator.notify |
boolean |
Doador deseja ser notificado |
donator.notify_by |
string |
Meio pelo qual o doador deseja ser notificado, deve ser um dos: email , phone , whatsapp |
Detalhes sobre os dispositivos podem ser inseridos utilizando o id
da doação através da rota:
PUT /api/donation/:id
Nome | Tipo | Descrição |
---|---|---|
quantity |
number |
Quantidade de dispositivos a ser doado |
description |
string |
Descrição do conjunto de dispositivos a ser doado, só deve ser informado se houver mais de um dispositivo (quantity > 1 ) |
devices |
[object] |
Dispositivo a ser doado, só deve ser informado se o doador estiver doando apena um dispositivo (quantity = 1 ) |
devices.title |
string |
Nome do dispositivo |
devices.type |
string |
Tipo de dispositivo, um dos: computer , display , printer |
Informações sobre a coleta devem ser inseridas utilizando o id
da doação através da rota:
PUT /api/donation/:id
Ao final da atualização dos dados, um email será enviado para o doador com cópia para o admin
Nome | Tipo | Descrição |
---|---|---|
collect |
object |
Objeto com informações sobre a coleta |
collect.type |
string |
Tipo de coleta: give - O doador leva até o ponto de doação fetch - A doação deve ser buscado no endereço do doador |
collect.time |
string |
Data e horário em que a doação pode ser buscada *Deve ser informado caso collect.type seja fetch |
donator |
object |
Objeto contendo dados do doador |
donator.address_line_1 |
string |
Primeira linha do endereço |
donator.address_line_2 |
string |
Segunda linha do endereço |
donator.address_city |
string |
Cidade |
donator.address_state |
string |
Estado |
donator.address_country |
string |
País |
⚠️ Não alocar ainda - irei ainda especificar estes detalhes
Objetivo
Quando um doador decidir por doar um computador, irá faze-lo através do site em um formulário que será construído para consumir este backend, de doação.
Pensei em realizar a doação em X etapas; identificação, dispositivos, coleta.
Doação
O registro será criado logo no inicio, e irá recebendo as informações da interface e adicionando ao registro, até a conclusão da doação. Ao concluir as pessoas relevantes serão notificadas para darem inicio aos processos. Serão enviados diversos POSTs/PUTs até a conclusão.
Objeto
donation
populadoÉ o objeto que será retornado durante o wizard (e em outras situações no admin), que trás os atributos do registro de doação mas também trás outros objetos completos, com todos seus dados.
Identificação
É onde o doador se identifica com seus dados pessoais e preferências.
donation
"populado"A interface então irá avançar para pedir mais dados do doador.
donation
"populado"A interface então irá avançar para obter informações do que está sendo doado.
Dispositivos
É onde ele informa o que está doando.
devices
incluindo o campodonation_id
, manter lá também odonator_id
donation_id
do registro atualdonation
"populado"A interface então irá avançar para confirmar como será feita a coleta da doação.
Coleta
É onde ele diz como iremos receber ou buscar a doação.
donation
"populado"O processo de doação está completo!
A interface então irá avançar para agradecer a doação e apresentar demais informações
Teste
Implementar teste no backend onde cada etapa é enviada e cada retorno validado, enviando dados faltantes, conferindo se estão consistentes as informações.