Computadores-Para-Todos / computers-4-all-manager

Gestor de equipamentos, pessoas e processos do projeto "Computadores para todos"
4 stars 1 forks source link

Backend de doações #16

Open TiagoGouvea opened 4 years ago

TiagoGouvea commented 4 years ago

⚠️ 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.

{  
   donator_id,
   donator: {objeto donator},
   quantity: int,
   description: string,
   devices: [coleção de objetos devices],
   collect: { 
     type: ("fetch" ou "give"},
     time
   },
   status_id
}

Identificação

É onde o doador se identifica com seus dados pessoais e preferências.

A interface então irá avançar para pedir mais dados do doador.

A interface então irá avançar para obter informações do que está sendo doado.

Dispositivos

É onde ele informa o que está doando.

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.

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.

allanmaral commented 4 years ago

Especificações da API

Primeira etapa

Detalhes sobre o doador já existente podem ser obtidos na rota:

GET /api/donators

Parâmetros

Nome Tipo Descrição
document string Numero de documento do doador

Segunda etapa

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.

Parâmetros

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

Terceira Etapa

Detalhes sobre os dispositivos podem ser inseridos utilizando o id da doação através da rota:

PUT /api/donation/:id

Parâmetros

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

Quarta Etapa

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

Parâmetros

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