Releases: giovnnvm/orange-talents-06-ecommerce
Releases · giovnnvm/orange-talents-06-ecommerce
Finaliza Compra Parte 2
Necessidades
- A pessoa pode escolher a quantidade de itens daquele produto que ela quer comprar
- O estoque do produto é abatido
- Um email é enviado para a pessoa que é dona(o) do produto informando que um usuário realmente disse que queria comprar seu produto.
- Uma compra é gerada informando o status INICIADA e com as seguintes informações:
- Gateway escolhido para pagamento
- Produto escolhido
- Quantidade
- Comprador(a)
- Valor do produto naquele momento
- Suponha que o cliente pode escolher entre pagar com o Paypal ou Pagseguro.
Restrições
- A quantidade é obrigatória
- A quantidade é positiva
- Precisa ter estoque para realizar a compra
Resultado esperado
- Caso a pessoa escolha o paypal seu endpoint deve gerar o seguinte redirect(302):
- Retorne o endereço da seguinte maneira: paypal.com?buyerId={idGeradoDaCompra}&redirectUrl={urlRetornoAppPosPagamento}
- Caso a pessoa escolha o pagseguro o seu endpoint deve gerar o seguinte redirect(302):
- Retorne o endereço da seguinte maneira: pagseguro.com?returnId={idGeradoDaCompra}&redirectUrl={urlRetornoAppPosPagamento}
- Caso aconteça alguma restrição retorne um status 400 informando os problemas.
Finaliza Compra Parte 1
Necessidades
- A pessoa pode escolher a quantidade de itens daquele produto que ela quer comprar
- O estoque do produto é abatido
- Um email é enviado para a pessoa que é dona(o) do produto informando que um usuário realmente disse que queria comprar seu produto.
- Uma compra é gerada informando o status INICIADA e com as seguintes informações:
- Gateway escolhido para pagamento
- Produto escolhido
- Quantidade
- Comprador(a)
- Valor do produto naquele momento
- Suponha que o cliente pode escolher entre pagar com o Paypal ou Pagseguro.
Restrições
- A quantidade é obrigatória
- A quantidade é positiva
- Precisa ter estoque para realizar a compra
Resultado esperado
- Caso a pessoa escolha o paypal seu endpoint deve gerar o seguinte redirect(302):
- Retorne o endereço da seguinte maneira: paypal.com?buyerId={idGeradoDaCompra}&redirectUrl={urlRetornoAppPosPagamento}
- Caso a pessoa escolha o pagseguro o seu endpoint deve gerar o seguinte redirect(302):
- Retorne o endereço da seguinte maneira: pagseguro.com?returnId={idGeradoDaCompra}&redirectUrl={urlRetornoAppPosPagamento}
- Caso aconteça alguma restrição retorne um status 400 informando os problemas.
Página de detalhes
- Links para imagens
- Nome do produto
- Preço do produto
- Características do produto
- Descrição do produto
- Média de notas do produto
- Número total de notas do produto
- Opiniões sobre o produto
- Perguntas para aquele produto
Faça uma pergunta
Necessidades
- A pergunta tem um título
- Tem instante de criação
- O usuário que fez a pergunta
- O produto relacionado a pergunta
- O vendedor recebe um email com a pergunta nova
- O email não precisa ser de verdade. Pode ser apenas um print no console do servidor com o corpo.
Restrições
- O título é obrigatório
- O produto é obrigatório
- O usuário é obrigatório
Resultado esperado
- Uma nova pergunta é criada e é retornada. Status 200
- Em caso de erro de validação, retorne 400 e o json com erros.
Adicione uma opinião sobre um produto
Necessidades
- Tem uma nota que vai de 1 a 5
- Tem um título. Ex: espetacular, horrível...
- Tem uma descrição
- O usuário logado que fez a pergunta (aqui pode usar usar o approach de definir um usuário na primeira linha do controller e depois trabalhar com o logado de verdade)
- O produto que para o qual a pergunta foi direcionada
Restrições
- A restrição óbvia é que a nota é no mínimo 1 e no máximo 5
- Título é obrigatório
- Descrição é obrigatório e tem no máximo 500 caracteres
- Usuário é obrigatório
- O produto relacionado é obrigatório
Resultado esperado
- Uma nova opinião é criada e status 200 é retornado
- Em caso de erro de validação, retorne 400 e o json com erros.
Usuário logado adiciona imagem no seu produto
Necessidades
- Adicionar uma ou mais imagens a um determinado produto do próprio usuário
Restrições
- Tem uma ou mais fotos
- Só pode adicionar fotos ao produto que pertence ao próprio usuário
Resultado esperado
- Imagens adicionadas e 200 como retorno
- Caso dê erro de validação retorne 400 e o json dos erros
- Caso tente adicionar imagens a um produto que não é seu retorne 403.
Usuário logado cadastra novo produto
Usuário logado cadastra novo produto
Explicação
Vamos permitir o cadastro de um produto por usuário logado.
Necessidades
- Tem um nome
- Tem um valor
- Tem quantidade disponível
- Características(cada produto pode ter um conjunto de características diferente).
Dá uma olhada na parte de outras características nos detalhes de produtos do mercado livre. Cada característica tem um nome e uma descricao associada. - Tem uma descrição
- Pertence a uma categoria
- Instante de cadastro
Restrições
- Nome é obrigatório
- Valor é obrigatório e maior que zero
- Quantidade é obrigatório e >= 0
- O produto possui pelo menos três características
- Descrição é obrigatória e tem máximo de 1000 caracteres.
- A categoria é obrigatória
Resultado esperado
- Um novo produto criado e status 200 retornado
- Caso dê erro de validação retorne 400 e o json dos erros
Trabalhando com o usuário logado
4.0 Trabalhando com o usuário logado v1.6
Cadastro de categorias
Cadastro de categorias
Necessidades
No mercado livre você pode criar hierarquias de categorias livres. Ex: Tecnologia -> Celulares -> Smartphones -> Android,Ios etc. Perceba que o sistema precisa ser flexível o suficiente para que essas sequências sejam criadas.
- Toda categoria tem um nome
- A categoria pode ter uma categoria mãe
Restrições
- O nome da categoria é obrigatório
- O nome da categoria precisa ser único
Resultado esperado
- Categoria criada e status 200 retornado pelo endpoint.
- Caso exista erros de validação, o endpoint deve retornar 400 e o json dos erros.
Não podemos ter dois usuários com o mesmo email
Não podemos ter dois usuários com o mesmo email.
Necessidades
- Só pode existir um usuário com o mesmo email.
Resultado esperado
- Status 400 informando que não foi possível realizar um cadastro com este email.