Este projeto é uma API desenvolvida em .NET 8 utilizando Entity Framework Core, destinada a simular operações de gerenciamento de um e-commerce. A API oferece um conjunto abrangente de funcionalidades que permitem a autenticação de administradores e clientes, além de operações de CRUD (Criar, Ler, Atualizar e Deletar) para campanhas, categorias e produtos.
Antes de começar, você precisa ter os seguintes itens instalados em sua máquina:
- .NET 8 SDK
- MySQL Server
- MySQL Workbench (opcional, mas recomendado para gerenciar o banco de dados)
- Git
git clone https://github.com/VitorNuness/checkout-inteligente-back.git
cd checkout-inteligente-back
Após clonar o repositório, será necessário configurar a conexão com o banco em appsettings.json
.
"ConnectionStrings": {
"DefaultConnection": "server=localhost;userid=root;password=root_password;database=checkout"
},
Altere o userid
e password
para o usuário e a senha com permissões do seu banco. A database
é opcional, mas se necessário, poderá atualizar para um nome de sua preferência.
Navegue até o projeto de infraestrutura:
cd src/Checkout/Infra
Para criar as tabelas no banco de dados, utilize o comando:
dotnet ef database update -s ../Presentation
Navegue até o projeto de infraestrutura:
cd ../Presentation
Para executar o projeto, use o seguinte comando:
dotnet run
Ao executar o projeto, o Banco de Dados será atualizado com dados para demonstração.
O servidor deve iniciar e você verá uma mensagem indicando que a aplicação está rodando em http://localhost:5102.
Request:
'Content-Type: application/json'
{ "name": "string", "email": "string", "password": "string" }Response:
{ "user": { "id": 0, "name": "string", "email": "string", "role": "string" }, "token": "string" }
Request:
'Content-Type: application/json'
{ "email": "string", "password": "string" }Response:
{ "user": { "id": 0, "name": "string", "email": "string", "role": "string" }, "token": "string" }
Response:
[ { "id": 0, "title": "string", "products": [ { "id": 0, "name": "string", "quantity": 0, "price": 0, "imageUrl": "string", "sales": 0, "category": { "id": 0, "name": "string", "products": ["string"], "imageUrl": "string" }, "campaigns": ["string"] } ], "active": true, "imageUrl": "string" } ]
Parameters:
id=0
Response:
{ "id": 0, "title": "string", "products": [ { "id": 0, "name": "string", "quantity": 0, "price": 0, "imageUrl": "string", "sales": 0, "category": { "id": 0, "name": "string", "products": ["string"], "imageUrl": "string" }, "campaigns": ["string"] } ], "active": true, "imageUrl": "string" }
Request:
'Content-Type: multipart/form-data'
Title="string"
Active=true
image="string"
Response:
{ "id": 0, "title": "string", "products": [ { "id": 0, "name": "string", "quantity": 0, "price": 0, "imageUrl": "string", "sales": 0, "category": { "id": 0, "name": "string", "products": ["string"], "imageUrl": "string" }, "campaigns": ["string"] } ], "active": true, "imageUrl": "string" }
Parameters:
id=0
Request:
'Content-Type: multipart/form-data'
Title="string"
Active=true
image="string"
Response:
200 - No content
Parameters:
id=0
Response:
200 - No content
Response:
[ { "id": 0, "name": "string", "products": [ { "id": 0, "name": "string", "quantity": 0, "price": 0, "imageUrl": "string", "sales": 0, "category": "string", "campaigns": [ { "id": 0, "title": "string", "products": ["string"], "active": true, "imageUrl": "string" } ] } ], "imageUrl": "string" } ]
Parameters:
id=0
Response:
{ "id": 0, "name": "string", "products": [ { "id": 0, "name": "string", "quantity": 0, "price": 0, "imageUrl": "string", "sales": 0, "category": "string", "campaigns": [ { "id": 0, "title": "string", "products": ["string"], "active": true, "imageUrl": "string" } ] } ], "imageUrl": "string" }
Request:
'Content-Type: multipart/form-data'
Name="string"
image="string"
Response:
{ "id": 0, "name": "string", "products": [ { "id": 0, "name": "string", "quantity": 0, "price": 0, "imageUrl": "string", "sales": 0, "category": "string", "campaigns": [ { "id": 0, "title": "string", "products": ["string"], "active": true, "imageUrl": "string" } ] } ], "imageUrl": "string" }
Parameters:
id=0
Request:
'Content-Type: multipart/form-data'
Name="string"
image="string"
Response:
200 - No content
Parameters:
id=0
Response:
200 - No content
Paramenters:
userId=0
Response:
{ "id": 0, "items": [ { "productId": 0, "product": { "id": 0, "name": "string", "quantity": 0, "price": 0, "imageUrl": "string", "sales": 0, "category": { "id": 0, "name": "string", "products": ["string"], "imageUrl": "string" }, "campaigns": [ { "id": 0, "title": "string", "products": ["string"], "active": true, "imageUrl": "string" } ] }, "quantity": 0, "total": 0 } ], "totalAmount": 0, "status": "string", "userId": 0 }
Parameters:
userId=0
Response:
[ { "id": 0, "items": [ { "productId": 0, "product": { "id": 0, "name": "string", "quantity": 0, "price": 0, "imageUrl": "string", "sales": 0, "category": { "id": 0, "name": "string", "products": ["string"], "imageUrl": "string" }, "campaigns": [ { "id": 0, "title": "string", "products": ["string"], "active": true, "imageUrl": "string" } ] }, "quantity": 0, "total": 0 } ], "totalAmount": 0, "status": "string", "userId": 0 } ]
Parameters:
id=0
productId=0
Response:
200 - No content
Parameters:
id=0
productId=0
Response:
200 - No content
Parameters:
id=0
productId=0
Response:
200 - No content
Parameters:
startDate="string"
endDate="string"
Response:
200 - No content
Response:
[ { "id": 0, "name": "string", "url": "string", "reference": "string", "createdAt": "string", } ]
Parameters:
id=0
Response:
200 - No content
Response:
[ { "id": 0, "name": "string", "quantity": 0, "price": 0, "imageUrl": "string", "sales": 0, "category": { "id": 0, "name": "string", "products": ["string"], "imageUrl": "string" }, "campaigns": [ { "id": 0, "title": "string", "products": ["string"], "active": true, "imageUrl": "string" } ] } ]
Response:
[ { "id": 0, "name": "string", "quantity": 0, "price": 0, "imageUrl": "string", "sales": 0, "category": { "id": 0, "name": "string", "products": ["string"], "imageUrl": "string" }, "campaigns": [ { "id": 0, "title": "string", "products": ["string"], "active": true, "imageUrl": "string" } ] } ]
Parameters:
id=0
Response:
{ "id": 0, "name": "string", "quantity": 0, "price": 0, "imageUrl": "string", "sales": 0, "category": { "id": 0, "name": "string", "products": ["string"], "imageUrl": "string" }, "campaigns": [ { "id": 0, "title": "string", "products": ["string"], "active": true, "imageUrl": "string" } ] }
Request:
'Content-Type: multipart/form-data'
Name="string"
Quantity=0
Price=0
CategoryId=0
image="string"
Response:
{ "id": 0, "name": "string", "quantity": 0, "price": 0, "imageUrl": "string", "sales": 0, "category": { "id": 0, "name": "string", "products": ["string"], "imageUrl": "string" }, "campaigns": [ { "id": 0, "title": "string", "products": ["string"], "active": true, "imageUrl": "string" } ] }
Parameters:
id=0
Request:
'Content-Type: multipart/form-data'
Name="string"
Quantity=0
Price=0
CategoryId=0
image="string"
Response:
200 - No content
Parameters:
id=0
Response:
200 - No content
@AlexHPasquini | @MayconMacedo23 | @vinirainho | @VitorNuness