|[Página Inicial](home)|
|---|
# Requisitos
Aqui estão detalhados todos os artefatos de requisitos do projeto DoeVida.
## User Stories
---
### **US1 - Login Facebook**
**Eu como** usuário não autenticado
**Gostaria de** me autenticar usando minha conta do facebook no app
**Para** poder criar campanhas
#### **Detalhes de implementação:**
Os dados retornados do Facebook devem ser persistidos no banco de dados
Definir quais desses dados serão salvos
#### **Critérios de aceite:**
*CA1*
- Dado que o usuário está na tela inicial
- Quando ele não está logado e clica em criar campanha
- Então deve ser solicitado autenticação
*CA2*
- Dado que o usuário se autenticou
- Quando está na tela inicial
- Então aparece a mensagem no header "Olá "
---
### **US2 - Criação de Campanha**
**Eu como** usuário autenticado
**Gostaria de** cadastrar uma campanha de doação de sangue
**Para** compartilhá-la nas redes sociais
(Nome, destinatário, Tipo sanguíneo, Cidade, Local, Meta (qnt de doadores))
#### **Critérios de aceite**
*CA1*
- Dado que o usuário está autenticado na tela inicial
- Quando clicar em "preciso de doação"
- Então deve ser redirecionado para o formulário de cadastro de campanha
*CA2*
- Dado que o usuário está na tela inicial e não está autenticado
- Quando clicar em "preciso de doação"
- Então deve ser solicitado a autenticação
*CA3*
- Dado que o usuário está no formulário de cadastro de campanha
- Quando for informar o tipo sanguíneo
- Então deve ser exibida uma lista com valores pré-definidos para escolha
*CA4*
- Dado que o usuário está no formulário de cadastro de campanha
- Quando for informar a cidade
- Então deve ser exibida uma lista com valores pré-definidos para escolha
*CA5*
- Dado que o usuário está no formulário de cadastro de campanha
- Quando selecionar a cidade
- Então deve ser disponibilizado os locais de doação na cidade selecionada no campo "local de doação"
*CA6*
- Dado que o usuário está no formulário de cadastro de campanha
- Quando submeter o formulário
- Então as informações fornecidadas devem ser persistidas no banco de dados
*CA7*
- Dado que o usuário está no formulário de cadastro de campanha
- Quando submeter o formulário
- Então deve ser exibido o card com as informações da campanha cadastrada com um botão de compartilhamento.
---
### **US3 - Compartilhamento de campanha no Facebook**
**Eu como** usuário autenticado
**Gostaria de** compartilhar a minha campanha de doação no Facebook
**Para** atrair doadores
#### **Critérios de aceite**
*CA1*
- Dado que o usuário está visualizando o card da campanha
- Quando clicar em compartilhar
- Então deve ser redirecionado para uma tela com as opções de redes sociais onde será compartilhado
*CA2*
- Dado que estou na tela com as opções de redes sociais
- Quando clicar na opção "Facebook"
- Então o card deve ser compartilhado no Facebook
---
### **US4 - Compartilhamento de campanha no Facebook**
**Eu como** usuário
**Gostaria de** visualizar todas as campanhas
**Para** saber quais campanhas posso participar
#### **Critérios de aceite**
*CA1*
- Dado que usuário está na tela que lista as campanhas
- Quando clicar no filtro "campanhas em andamento"
- Então deve ser listada todas campanhas em andamento
*CA1*
- Dado que usuário está na tela que lista as campanhas
- Quando clicar no filtro "campanhas finalizadas"
- Então deve ser listada todas campanhas em finalizadas
---
### **US5 - Editar campanha**
**Eu como** usuário autenticado
**Gostaria de** editar as minhas campanhas
**Para** poder atualizar as informações delas ou seus status
#### **Critérios de aceite**
*CA1*
- Dado que o usuário está na lista de campanhas
- Quando clicar em uma delas
- Então deve ser disponibilizado a possibilidade de edição apenas se a campanha foi cadastrada por ele
*CA2*
- Dado que o usuário está no formulário de edição
- Quando submeter o formulário
- Então as informações devem ser persistidas no banco de dados
*CA3*
- Dado que o usuário está no formulário de edição
- Quando submeter o formulário
- Então deve retornar uma mensagem de feedback positivo se a campanha foi atualizada com sucesso
*CA4*
- Dado que o usuário está no formulário de edição
- Quando submeter o formulário
- Então deve retornar uma mensagem de feedback negativo se a campanha não foi atualizada com sucesso
---
### **US6 - Doar**
**Eu como** usuário
**Gostaria de** visualizar os locais de doação
**Para** escolher por local a campanha da qual vou participar
#### **Critérios de aceite**
*CA1*
- Dado que o usuário está na tela inicial
- Quando clicar em "Quero doar!"
- Então deve ser redirecionado para uma tela que contém um mapa com os locais de doação destacados no mapa
*CA2*
- Dado que um local não possui campanhas em andamento
- Quando o usuário está na tela do mapa
- Então esses locais não devem ser exibidos
*CA3*
- Dado que o usuário está na tela do mapa
- Quando o usuário cliacar em "Listar"
- Então deve ser exibido a lista dos locais de doação
*CA4*
- Dado que o usuário está na tela de lista de locais
- Quando o usuário clicar em "Mapa"
- Então dever ser exibido o mapa com os locais de doação
*CA5*
- Dado que o usuário está na tela de lista de locais
- Quando o usuário clicar em um local
- Então dever ser exibido as campanhas em andamento naquele local
*CA6*
- Dado que o usuário está na tela de campanhas em andamento em um local
- Quando o usuário clicar em uma camapnha
- Então dever ser exibido os detalhes de uma campanha
---
### **US7 - Registrar doação**
**Eu como** usuário
**Gostaria de** registrar a minha doação
**Para** possuir esta informação de forma digital
#### **Critérios de aceite**
*CA1*
- Dado que usuário está visualizando os detalhes de uma campanha
- Quando clicar em "Registrar doação"
- Então o usuário é redirecionado para um formulário onde o campo nome está preenchido, o campo data está com preenchido com a data atual.
*CA2*
- Dado que o usuário não está autenticado
- Quando clicar em "Registrar doação"
- Então deve ser solicitado a autenticação ao usuário
*CA3*
- Dado que o usuário está no formulário de registro de doação
- Quando submeter o formulário
- Então deve ser retornado uma mensagem de feedback positivo ou negativo