Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
1ebbf03
test: get_cart_by_CPF implementado
Jvcregis Feb 18, 2024
d81f869
Merge branch 'feature.recuperar_conta' into integrate_login_accountre…
Feb 19, 2024
f67d79e
Cadastro e login de lojas
VmtpCin Feb 19, 2024
0db4c32
feat: add integration test between feature login and account recovery
Feb 19, 2024
1e64f1a
bugfix: fix auth service tests
Feb 19, 2024
9b03489
Merge pull request #130 from Diego-djaar/feature_login
Diego-djaar Feb 19, 2024
818d455
Merge branch 'development' into integrate_login_accountrecovery_features
Feb 19, 2024
9cb9de2
bugfix: add test prefix so pytest can detect file
Feb 19, 2024
1ddee9e
Merge pull request #129 from Diego-djaar/integrate_login_accountrecov…
Diego-djaar Feb 19, 2024
d67bed8
Merge branch 'development' into feature-carrinho
Diego-djaar Feb 19, 2024
1e88db9
test: adicionar_carrinho passou
Jvcregis Feb 19, 2024
56cc83c
test: adicionar carrinho fix
Jvcregis Feb 19, 2024
c0fe7da
test: remover item do carrinho passou
Jvcregis Feb 19, 2024
7538b3d
Merge branch 'feature-carrinho' of https://github.com/Jvcregis/Projet…
Jvcregis Feb 19, 2024
51937a5
Todas as features no modelo do projeto base
VmtpCin Feb 20, 2024
182762f
test: fail to remove item e clear cart passaram
Jvcregis Feb 20, 2024
21656eb
update: login and signup user API scenarios
Feb 20, 2024
8a09ec0
Remove: unused files from base project
Feb 20, 2024
707bcf9
Testes incompletos
VmtpCin Feb 20, 2024
121db41
test: limpar base de dados de carrinhos passou
Jvcregis Feb 20, 2024
68ecdad
Tests e Features
VmtpCin Feb 20, 2024
ab2bfaa
Features merged with development, working fine
VmtpCin Feb 20, 2024
2efa795
Merge branch 'development'
VmtpCin Feb 20, 2024
d02a900
Merge branch 'development' into feature_login
Feb 20, 2024
d117553
feat: add integration test of user signup and login
Feb 20, 2024
0c72ef9
Merge pull request #136 from Diego-djaar/feature_login
Diego-djaar Feb 20, 2024
afd311d
test: incrementar teste erro misterioso
Jvcregis Feb 20, 2024
914f8e7
Bugfix: carrinho bdd test Incrementar quantidade de um item no carrinho
Feb 20, 2024
0a0cb35
test: adicionados quatro novos testes ainda sem passar
Jvcregis Feb 20, 2024
4d1806a
Merge branch 'feature-carrinho' of https://github.com/Jvcregis/Projet…
Jvcregis Feb 20, 2024
5fdcbf0
Merge branch 'development' into feature-carrinho2
Feb 20, 2024
9bca36c
bugfix: removed outdated imports
Feb 20, 2024
885ada6
Merge pull request #126 from Jvcregis/feature-carrinho
Diego-djaar Feb 20, 2024
e08857d
test: 10 testes passando
Jvcregis Feb 20, 2024
6498637
Merge branch 'feature-carrinho' of https://github.com/Jvcregis/Projet…
Jvcregis Feb 20, 2024
7ae0940
testes de cadastro para lojas realizados
VmtpCin Feb 20, 2024
761376b
Testes de login para lojas completos
VmtpCin Feb 21, 2024
84670ee
feat: add BDD integration test of features user login and cart
Feb 21, 2024
6fe1de7
Merge pull request #137 from Diego-djaar/feature_login
Diego-djaar Feb 21, 2024
d6590f6
Readd test files
Feb 21, 2024
7c20ddf
Merge branch 'development' into feature_stores_merge_dev
Feb 21, 2024
974b619
Merge pull request #135 from VmtpCin/master
Diego-djaar Feb 21, 2024
59c445b
Tag sotres para endpoints das lojas
VmtpCin Feb 21, 2024
14f2aee
Merge branch 'master' of https://github.com/VmtpCin/Projeto-ESS
VmtpCin Feb 21, 2024
4bd05fb
Testes de update para lojas funcionais
VmtpCin Feb 21, 2024
6d2f4c1
test: adding service tests in BDD
breno-gabriel Feb 21, 2024
b2c3d42
feat: add api scenarios
lucashnss Feb 21, 2024
c019553
feat: add bdd test for 3 scenarios of cancel orders
lucashnss Feb 21, 2024
141ce24
Merge branch 'development' into feature-orders
Feb 21, 2024
b59cb9a
fix: test cancel orders
Feb 21, 2024
07540d2
Merge pull request #143 from Diego-djaar/feature-orders
Diego-djaar Feb 21, 2024
abc9daa
Merge pull request #138 from Jvcregis/feature-carrinho
Diego-djaar Feb 21, 2024
8ef2b42
Merge branch 'development' into master
Diego-djaar Feb 21, 2024
6a26ccb
Merge pull request #139 from VmtpCin/master
Diego-djaar Feb 21, 2024
dd64546
hotfix: readded carrinho route
Feb 21, 2024
b53d5b7
Merge remote-tracking branch 'Diego-djaar/development'
Feb 21, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@
__pycache__/

*.log
*.swp
*.swp
fastapi-env/
4 changes: 0 additions & 4 deletions backend/.env.example

This file was deleted.

1 change: 1 addition & 0 deletions backend/Stores.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"2": {"py/object": "src.db.store_database.Store", "nome": "1", "categoria": "4", "cnpj": "2", "email": "3", "senha": "5"}, "e": {"py/object": "src.db.store_database.Store", "nome": "27", "categoria": "e", "cnpj": "e", "email": "123", "senha": "e"}, "eewtw": {"py/object": "src.db.store_database.Store", "nome": "278", "categoria": "e2", "cnpj": "eewtw", "email": "1235", "senha": "e3"}, "eewt": {"py/object": "src.db.store_database.Store", "nome": "278", "categoria": "e2", "cnpj": "eewt", "email": "1235", "senha": "e3"}, "vitu": {"py/object": "src.db.store_database.Store", "nome": "27052004", "categoria": "Vitor", "cnpj": "vitu", "email": "000", "senha": "a"}, "vit": {"py/object": "src.db.store_database.Store", "nome": "2705200", "categoria": "Vito", "cnpj": "vit", "email": "00", "senha": "ai"}, "vi": {"py/object": "src.db.store_database.Store", "nome": "2705200", "categoria": "Vit", "cnpj": "vi", "email": "0", "senha": "aii"}, "101010": {"py/object": "src.db.store_database.Store", "nome": "vitinho", "categoria": "vitor", "cnpj": "101010", "email": "vitu", "senha": "123"}, "10101": {"py/object": "src.db.store_database.Store", "nome": "vitinho", "categoria": "vitor", "cnpj": "10101", "email": "vitu", "senha": "123"}, "vitorpaz": {"py/object": "src.db.store_database.Store", "nome": "a", "categoria": "a", "cnpj": "vitorpaz", "email": "gg", "senha": "123455"}, "string": {"py/object": "src.db.store_database.Store", "nome": "string", "categoria": "string", "cnpj": "string", "email": "string", "senha": "string"}, "111": {"py/object": "src.db.store_database.Store", "nome": "string", "categoria": "string", "cnpj": "111", "email": "string", "senha": "123"}, "1313": {"py/object": "src.db.store_database.Store", "nome": "string", "categoria": "string", "cnpj": "1313", "email": "string", "senha": "123"}}
3 changes: 3 additions & 0 deletions backend/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,6 @@ httpx
py-bcrypt
jsonpickle
bidict
bcrypt
requirements
datetime
39 changes: 39 additions & 0 deletions backend/src/api/cancel_orders.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
from fastapi import APIRouter, status, HTTPException, Response
from src.schemas.response import HTTPResponses, HttpResponseModel
from src.schemas.provisory_schemas import Product, Order, User
from fastapi.responses import JSONResponse
from src.service.impl.orders_service import OrdersService


router = APIRouter()

@router.put(
'/cancel/{id_product}',
response_model=HttpResponseModel,
status_code=status.HTTP_200_OK,
description="Order cancel by its ID",
)
def cancel_order(id_product: int, user_CPF: str, cancel_reason:str, response:Response) -> HttpResponseModel:
request_response = OrdersService.cancel_order_service(id_product, user_CPF, cancel_reason)
response.status_code = request_response.status_code

return request_response

@router.get(
'/get_all',
response_model=HttpResponseModel,
status_code=status.HTTP_200_OK,
description="Get all cancel products",
)
def get_all_canceled_orders(user_CPF: str) -> HttpResponseModel:
response = OrdersService.get_all_orders_service(user_CPF)
return response

#@router.post(
# '/create/{id_product}',
# response_model=HttpResponseModel,
# status_code=status.HTTP_201_CREATED,
# description="Create a order from the product in the cart by its ID",
# )
# def create_order(product_id: int, user_CPF: str) -> HttpResponseModel:
# pass
253 changes: 253 additions & 0 deletions backend/src/api/carrinho.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,253 @@
from fastapi import APIRouter, status, HTTPException
from src.schemas.response import HttpResponseModel
from src.service.impl.carrinho_service import Carrinho_service
from src.service.impl.item_database_service import DadosItem
from src.service.impl.carrinho_service import DadosEndereço

router = APIRouter()

@router.get(
"/view/{CPF}",
response_model=HttpResponseModel,
status_code=status.HTTP_200_OK,
description="Visualização do carrinho",
responses={
status.HTTP_200_OK: {
"model": HttpResponseModel,
"description": "Conteúdo do carrinho obtido com sucesso"
},
status.HTTP_201_CREATED: {
"model":HttpResponseModel,
"description": "Carrinho não encontrado, carrrinho criado"
},
status.HTTP_400_BAD_REQUEST: {
"model": HttpResponseModel,
"description": "Falha na obtenção do conteúdo do carrinho"
}
},
)
def visualizar_carrinho(CPF: str) -> HttpResponseModel:
""" Se carrinho não for encontrado cria carrinho para o respectivo CPF """
print("Entrou em visualizar carrinho")
resultado = Carrinho_service.get_cart(CPF=CPF)
return resultado

@router.post(
"/adicionar",
response_model=HttpResponseModel,
status_code=status.HTTP_200_OK,
description="Adicionar item ao carrinho",
responses={
status.HTTP_200_OK: {
"model": HttpResponseModel,
"description": "Item adicionado ao carrinho com sucesso"
},
status.HTTP_400_BAD_REQUEST: {
"model": HttpResponseModel,
"description": "Falha na adição do item ao carrinho"
}
},
)
def adicionar_item_ao_carrinho(dados: DadosItem, CPF: str) -> HttpResponseModel:
""" Tenta adicionar item ao carrinho """
print("Entrou na função adicionar_item_ao_carrinho")
print(dados)
resultado = Carrinho_service.add_item_to_cart(item_data= dados, CPF= CPF)
print(resultado)
if resultado.status_code == status.HTTP_200_OK:
return resultado
else:
# Se a adição não foi bem-sucedida, lançar uma exceção HTTP que será tratada pelo FastAPI
raise HTTPException(
status_code=resultado.status_code,
detail=resultado.message
)

@router.delete(
"/remover",
response_model=HttpResponseModel,
status_code=status.HTTP_200_OK,
description="Remover item do carrinho",
responses={
status.HTTP_200_OK: {
"model": HttpResponseModel,
"description": "Item removido do carrinho com sucesso"
},
status.HTTP_400_BAD_REQUEST: {
"model": HttpResponseModel,
"description": "Falha na remoção do item do carrinho"
},
status.HTTP_404_NOT_FOUND: {
"model": HttpResponseModel,
"description": "Item ou carrinho não encontrado"
}
},
)
def remover_item_do_carrinho(item_id: str, CPF: str) -> HttpResponseModel:
""" Tenta remover item do carrinho """
resultado = Carrinho_service.remove_item_from_cart(item_id=item_id, CPF=CPF)
if resultado.status_code == status.HTTP_200_OK:
return resultado
else:
# Se a remoção não foi bem-sucedida, lançar uma exceção HTTP que será tratada pelo FastAPI
raise HTTPException(
status_code=resultado.status_code,
detail=resultado.message
)

@router.get(
"/view_all_carts",
response_model=HttpResponseModel,
status_code=status.HTTP_200_OK,
description="Visualização dos carrinhos",
responses={
status.HTTP_200_OK: {
"model": HttpResponseModel,
"description": "Conteúdo dos carrinhos obtido com sucesso"
},
status.HTTP_400_BAD_REQUEST: {
"model": HttpResponseModel,
"description": "Falha na obtenção do conteúdo dos carrinhos"
}
},
)
def visualizar_carrinho() -> HttpResponseModel:
""" Se carrinho não for encontrado cria carrinho para o respectivo CPF """
return Carrinho_service.get_all_carts()

@router.delete(
"/clear_cart",
response_model=HttpResponseModel,
status_code=status.HTTP_200_OK,
description="Limpar carrinho",
responses={
status.HTTP_200_OK: {
"model": HttpResponseModel,
"description": "Conteúdo do carrinho limpo com sucesso"
},
status.HTTP_404_NOT_FOUND: {
"model": HttpResponseModel,
"description": "Carrinho não encontrado"
}
},
)
def clear_cart(CPF: str) -> HttpResponseModel:
""" Tenta limpar o carrinho """
print("Entrou em clear_cart")
resultado = Carrinho_service.clear_cart_by_CPF(CPF=CPF)
if resultado.status_code == status.HTTP_200_OK:
return resultado
else:
raise HTTPException(
status_code=resultado.status_code,
detail=resultado.message
)

@router.delete(
"/clear_carts",
response_model=HttpResponseModel,
status_code=status.HTTP_200_OK,
description="Limpar database de carrinhos",
responses={
status.HTTP_200_OK: {
"model": HttpResponseModel,
"description": "Conteúdo da database limpo"
}
},
)
def clear_carts() -> HttpResponseModel:
""" Tenta limpar a database de carrinhos """
return Carrinho_service.clear_all_carts()

@router.put(
"/incrementar_item",
response_model=HttpResponseModel,
status_code=status.HTTP_200_OK,
description="Incrementar quantidade de item no carrinho",
responses={
status.HTTP_200_OK: {
"model": HttpResponseModel,
"description": "Item incrementado com sucesso"
},
status.HTTP_400_BAD_REQUEST: {
"model": HttpResponseModel,
"description": "Falha no incremento da quantidade do item"
},
status.HTTP_404_NOT_FOUND: {
"model": HttpResponseModel,
"description": "Carrinho ou item não encontrado"
}
},
)
def incrementar_item (item_id: str, CPF: str) -> HttpResponseModel:
""" Tenta Incrementar quantidade de item no carrinho """
resultado = Carrinho_service.increase_item_quantity(item_id=item_id, CPF=CPF)
if resultado.status_code == status.HTTP_200_OK:
return resultado
else:
# Se a adição não foi bem-sucedida, lançar uma exceção HTTP que será tratada pelo FastAPI
raise HTTPException(
status_code=resultado.status_code,
detail=resultado.message
)


@router.put(
"/decrementar_item",
response_model=HttpResponseModel,
status_code=status.HTTP_200_OK,
description="Decrementar quantidade de item no carrinho",
responses={
status.HTTP_200_OK: {
"model": HttpResponseModel,
"description": "Item decrementado com sucesso"
},
status.HTTP_400_BAD_REQUEST: {
"model": HttpResponseModel,
"description": "Falha no decremento da quantidade do item"
},
status.HTTP_404_NOT_FOUND: {
"model": HttpResponseModel,
"description": "Carrinho ou item não encontrado"
}
},
)
def decrementar_item (item_id: str, CPF: str) -> HttpResponseModel:
""" Tenta decrementar quantidade de item no carrinho """
resultado = Carrinho_service.decrease_item_quantity(item_id=item_id, CPF=CPF)
if resultado.status_code == status.HTTP_200_OK:
return resultado
else:
# Se a adição não foi bem-sucedida, lançar uma exceção HTTP que será tratada pelo FastAPI
raise HTTPException(
status_code=resultado.status_code,
detail=resultado.message
)

@router.put(
"/alterar_endereço",
response_model=HttpResponseModel,
status_code=status.HTTP_200_OK,
description="Alterar endereço do carrinho",
responses={
status.HTTP_200_OK: {
"model": HttpResponseModel,
"description": "Item adicionado ao carrinho com sucesso"
},
status.HTTP_400_BAD_REQUEST: {
"model": HttpResponseModel,
"description": "Falha na adição do item ao carrinho"
}
},
)
def alterar_endereço(dados: DadosEndereço, CPF: str) -> HttpResponseModel:
""" Tenta adicionar item ao carrinho """
resultado = Carrinho_service.add_adress(dados, CPF)
if resultado.status_code == status.HTTP_200_OK:
return resultado
else:
# Se a adição não foi bem-sucedida, lançar uma exceção HTTP que será tratada pelo FastAPI
raise HTTPException(
status_code=resultado.status_code,
detail=resultado.message
)
18 changes: 18 additions & 0 deletions backend/src/api/estimated_time_arrival.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from fastapi import APIRouter, status, HTTPException, Response
from src.schemas.response import HTTPResponses, HttpResponseModel
from src.schemas.provisory_schemas import Supplier, Product, Order, User
from fastapi.responses import JSONResponse
from src.service.impl.time_arrival_service import TimeArrivalService


router = APIRouter()

@router.get(
'/get_estimated_time/{product_id}',
response_model=HttpResponseModel,
status_code=status.HTTP_200_OK,
description="Route to obtain estimated delivery date, requisition date and mode of transport",
)
def get_time(product_id: int, user_CPF: str) -> HttpResponseModel:
response = TimeArrivalService.calculating_time_arrival(product_id, user_CPF)
return response
Loading