Giter Club home page Giter Club logo

hotel-api's Introduction

🏨 Hotel API

🖥 Sobre o projeto

Projeto desenvolvido durante a aceleração C# na Trybe, em Julho de 2024. Trata-se de uma aplicação do tipo WebAPI com a capacidade de realizar operações básicas de um sistema de booking de uma rede de hotéis controlando os hotéis em diversas cidades e os registros de reservas de pessoas clientes. A aplicação possui rotas de autenticação e autorização e realiza conexão com uma api externa para auxiliar na busca de hotéis mais próximos de acordo com o endereço fornecido pelo usuário.

🛠 Tecnologias e Libs utilizadas

As seguintes ferramentas foram utilizadas na construção do projeto:

↗️ Endpoints

Obs: Caso opte por fazer o download do projeto, você poderá observar os endpoints com mais detalhe no link: https://localhost:5001/swagger/index.html

Login

  /login
  • Utiliza o método POST, Realiza o login de usuário existente no banco de dados.
  • Caso a requisição seja feita corretamente, retorna um objeto com um token de autorização, com o status http 200. O token será necessário em outras requisições.
  • Caso email e/ou senha estejam incorretos, retorna uma mensagem de erro, com o status hhtp 401.
  • O corpo da requisição deve obedecer o seguinte formato:
  {
    "email": "string",
    "password": "string"
  }

City

/city
  • Utilizando o método GET

    • retorna uma lista com as cidades presentes no banco de dados, com o status http 200em caso de sucesso.
  • Utilizando o método POST

    • Adiciona uma nova cidade ao banco de dados.
    • Caso o corpo da requisição esteja inválido, retorna uma mensagem de erro com o status http 400.
    • Em caso de sucesso, retorna um objeto com os dados da cidade registrada e com o status http 201.
    • O corpo da requisição deve obedecer o seguinte formato:
      {
      "name": "string",
      "state": "string"
      }
  • Utilizando o método PUT

    • Atualiza as informações de uma cidade presente no banco de dados.
    • Em caso de sucesso, retorna um objeto com os dados da cidade atualizado.
    • Caso o corpo da requisição esteja inválido, retorna uma mensagem de erro com o status http 400.
    • Caso a aplicação não encontre uma cidade com o id especificado no corpo da requisição, retorna uma mensagem de erro com o status http 404

Hotel

/hotel
  • Utilizando o método GET

    • Responsável por listar os hotéis presentes no banco de dados, com um status http 200.
  • Utilizando o método POST

    • Adiciona um novo hotel ao banco de dados. Autorização de 'Admin' necessária para a operação.
    • Em caso de sucesso, retorna o status http 201 e um objeto com os dados do hotel adicionado ao banco de dados.
    • Caso o corpo da requisição esteja inválido, retorna uma mensagem de erro com o status http 400.
    • Caso o usuário não possua a autorização necessária ou caso a mesma esteja inválida, retorna uma mensagem de erro com o status http 401.
    • Se as entidades referenciadas não forem encontradas, retorna uma mensagem de erro com o status http 404.
    • O corpo da requisição deve obedecer o seguinte formato:
      {
        "name": "string",
        "address": "string",
        "cityId": 0
      }

Room

  /room/:HotelId
  • Utiliza o método GET, em caso de sucesso retorna um status http 200, junto de uma lista de quartos do hotel especificado pelo id na url.
  • Caso não encontre o hotel especificado no banco de dados, retorna uma mensagem de erro com um status http 404.
  /room
  • Utiliza o método POST, Adiciona um novo quarto ao banco de dados. Autorização de 'Admin' necessária para a operação.
  • Em caso de sucesso, retorna um objeto com os dados do quarto inserido, junto do status http 201.
  • Caso o corpo da requisição esteja inválido, retorna uma mensagem de erro com o status http 400.
  • Caso o usuário não possua a autorização necessária ou caso a mesma esteja inválida, retorna uma mensagem de erro com o status http 401.
  • Se as entidades referenciadas não forem encontradas, retorna uma mensagem de erro com o status http 404.
  • O corpo da requisição deve obedecer o seguinte formato:
  {
    "name": "string",
    "capacity": 0,
    "image": "string",
    "hotelId": 0
  }
  /room/:RoomId
  • Utiliza o método DELETE. Remove um quarto do banco de dados. Autorização de 'Admin' necessária para a operação.
  • Caso a operação seja bem sucedida, retorna um status 204.
  • Caso o usuário não possua a autorização necessária ou caso a mesma esteja inválida, retorna uma mensagem de erro com o status http 401.
  • Se não for encontrado um quarto com o id especificado, retorna uma mensagem de erro com um status http 404.

User

  /user
  • Utilizando o método GET

    • Retorna uma lista com todos os usuários registrados no banco de dados. Autorização de 'Admin' necessária para a operação.
    • Em caso de sucesso, retorna um status http 200 com uma lista de usuários presentes no banco de dados.
    • Se o usuário não possuir a autorização necessária ou caso a mesma esteja inválida, retorna uma mensagem de erro com um status http 401.
  • Utilizando o método POST

    • Adiciona um usuário ao banco de dados. Por padrão todo usuário é registrado com userType 'client'
    • Em caso de sucesso, retorna um status http 201 com as informações do usuário criado.
    • se o email a ser registrado já existe no banco de dados, retorna uma mensagem de erro com status http 409.
    • O corpo da requisição deve obedecer o seguinte formato:
    {
      "name": "string",
      "email": "string",
      "password": "string"
    }

Booking

/booking/:BookingId
  • Utiliza o método GET, endpoint responsável por listar uma única reserva. O usuário que quiser acessar a reserva deve ser o mesmo que a criou.
  • Em caso de sucesso, retorna um status http 200 junto de um objeto com os dados da reserva.
  • Se o usuário não estiver autenticado ou se as informações da reserva forem acessadas por um usuário que não a criou, retorna uma mensagem de erro com um status http 401.
/booking
  • Utiliza o método POST, Adiciona uma nova reserva ao banco de dados. Autorização de 'Client' necessária para a operação.
  • Em caso de sucesso, retorna um status http 201 e um objeto com os dados da reserva criada.
  • Caso o corpo da requisição esteja inválido, retorna uma mensagem de erro com o status http 400.
  • Se o usuário não possuir a autorização necessária ou caso a mesma esteja inválida, retorna uma mensagem de erro com o status http 401.
  • Se o quarto referenciado no corpo da requisição não for encontrado, retorna uma mensagem de erro com o status http 404.
  • Se o número de hospedes for maior que a capacidade do quarto, retorna uma mensagem de erro com o status http 409.
  • O corpo da requisição deve obedecer o seguinte formato:
  {
    "checkIn": "2024-07-22T23:14:00.035Z",
    "checkOut": "2024-07-22T23:14:00.035Z",
    "guestQuant": 0,
    "roomId": 0
  }

Geo

  /geo/status
  • Utiliza o método GET, Retorna o status da api externa.
  • Em caso de sucesso, a requisição retorna o status http 200 e um objeto com o status da api externa.
  • Caso não seja obtida resposta, retorna uma mensagem de erro com o status http 401.
  /geo/address
  • Utiliza o método GET, Retorna uma lista de hotéis ordenados por distância de um endereço (ordem crescente de distância).
  • Em caso de sucesso, a resposta contém a lista de hotéis e o status http 200.
  • O corpo da requisição deve obedecer o seguinte formato:
  {
    "Address":"string",
    "City":"string",
    "State":"string"
  }

👾Autor


Guilherme Lucena

✉contato

hotel-api's People

Contributors

gui-lfm avatar trybe-tech-ops avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.