Skip to content

Repositório com instruções para candidatos a vaga de desenvolvedor backend dotnet

Notifications You must be signed in to change notification settings

Mottu-ops/Desafio-BackEnd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 

Repository files navigation

Desafio backend Mottu.

Seja muito bem-vindo ao desafio backend da Mottu, obrigado pelo interesse em fazer parte do nosso time e ajudar a melhorar a vida de milhares de pessoas.

Instruções

  • O desafio é válido para diversos níveis, portanto não se preocupe se não conseguir resolver por completo.
  • A aplicação só será avaliada se estiver rodando, se necessário crie um passo a passo para isso.
  • Faça um clone do repositório em seu git pessoal para iniciar o desenvolvimento e não cite nada relacionado a Mottu.
  • Após finalização envie um e-mail para o recrutador informando o repositório para análise.

Requisitos não funcionais

  • A aplicação deverá ser construida com .Net utilizando C#.
  • Utilizar apenas os seguintes bancos de dados (Postgress, MongoDB)
    • Não utilizar PL/pgSQL
  • Escolha o sistema de mensageria de sua preferencia( RabbitMq, Sqs/Sns , Kafka, Gooogle Pub/Sub ou qualquer outro)

Aplicação a ser desenvolvida

Seu objetivo é criar uma aplicação para gerenciar aluguel de motos e entregadores. Quando um entregador estiver registrado e com uma locação ativa poderá também efetuar entregas de pedidos disponíveis na plataforma.

Iremos executar um teste de integração para validar os cenários de uso. Por isso, sua aplicação deve seguir exatamente as especificações de APIs Rest do nosso Swager: request, response e status code. Garanta que os atributos dos JSONs e estão de acordo com o Swagger abaixo.

Swagger de referência: https://app.swaggerhub.com/apis-docs/Mottu/mottu_desafio_backend/1.0.0

Casos de uso

  • Eu como usuário admin quero cadastrar uma nova moto.
    • Os dados obrigatórios da moto são Identificador, Ano, Modelo e Placa
    • A placa é um dado único e não pode se repetir.
    • Quando a moto for cadastrada a aplicação deverá gerar um evento de moto cadastrada
      • A notificação deverá ser publicada por mensageria.
      • Criar um consumidor para notificar quando o ano da moto for "2024"
      • Assim que a mensagem for recebida, deverá ser armazenada no banco de dados para consulta futura.
  • Eu como usuário admin quero consultar as motos existentes na plataforma e conseguir filtrar pela placa.
  • Eu como usuário admin quero modificar uma moto alterando apenas sua placa que foi cadastrado indevidamente
  • Eu como usuário admin quero remover uma moto que foi cadastrado incorretamente, desde que não tenha registro de locações.
  • Eu como usuário entregador quero me cadastrar na plataforma para alugar motos.
    • Os dados do entregador são( identificador, nome, cnpj, data de nascimento, número da CNHh, tipo da CNH, imagemCNH)
    • Os tipos de cnh válidos são A, B ou ambas A+B.
    • O cnpj é único e não pode se repetir.
    • O número da CNH é único e não pode se repetir.
  • Eu como entregador quero enviar a foto de minha cnh para atualizar meu cadastro.
    • O formato do arquivo deve ser png ou bmp.
    • A foto não poderá ser armazenada no banco de dados, você pode utilizar um serviço de storage( disco local, amazon s3, minIO ou outros).
  • Eu como entregador quero alugar uma moto por um período.
    • Os planos disponíveis para locação são:
      • 7 dias com um custo de R$30,00 por dia
      • 15 dias com um custo de R$28,00 por dia
      • 30 dias com um custo de R$22,00 por dia
      • 45 dias com um custo de R$20,00 por dia
      • 50 dias com um custo de R$18,00 por dia
    • A locação obrigatóriamente tem que ter uma data de inicio e uma data de término e outra data de previsão de término.
    • O inicio da locação obrigatóriamente é o primeiro dia após a data de criação.
    • Somente entregadores habilitados na categoria A podem efetuar uma locação
  • Eu como entregador quero informar a data que irei devolver a moto e consultar o valor total da locação.
    • Quando a data informada for inferior a data prevista do término, será cobrado o valor das diárias e uma multa adicional
      • Para plano de 7 dias o valor da multa é de 20% sobre o valor das diárias não efetivadas.
      • Para plano de 15 dias o valor da multa é de 40% sobre o valor das diárias não efetivadas.
    • Quando a data informada for superior a data prevista do término, será cobrado um valor adicional de R$50,00 por diária adicional.

Diferenciais 🚀

  • Testes unitários
  • Testes de integração
  • EntityFramework e/ou Dapper
  • Docker e Docker Compose
  • Design Patterns
  • Documentação
  • Tratamento de erros
  • Arquitetura e modelagem de dados
  • Código escrito em língua inglesa
  • Código limpo e organizado
  • Logs bem estruturados
  • Seguir convenções utilizadas pela comunidade

About

Repositório com instruções para candidatos a vaga de desenvolvedor backend dotnet

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published