Compare commits
5 Commits
f21c9b3fa5
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| a7dea2dce7 | |||
| da814d469b | |||
| 7835fda0a5 | |||
| 8e8dc6af55 | |||
| 8cee9add43 |
@@ -70,7 +70,7 @@ cd NAPPDesafio
|
||||
### Passo 3: Configure as Variáveis de Ambiente
|
||||
|
||||
Crie um arquivo `.env` no diretório raiz do projeto e configure as variáveis de ambiente necessárias. Você pode usar o arquivo `.env.example` como referência.
|
||||
Para api preencha:
|
||||
Para api preencha no diretório `/api`:
|
||||
|
||||
#### .env
|
||||
|
||||
@@ -81,9 +81,9 @@ DATABASE_URL=postgresql://postgres:postgres@postgres-db-api:5432/postgres?sslmod
|
||||
```
|
||||
|
||||
Crie um arquivo `.env` no diretório raiz do projeto e configure as variáveis de ambiente necessárias. Você pode usar o arquivo `.env.example` como referência.
|
||||
Para spa-insta preencha:
|
||||
Para spa preencha no diretório `/spa`:
|
||||
|
||||
#### .env.local
|
||||
#### .env
|
||||
|
||||
```env
|
||||
VITE_APP_API_URL=http://127.0.0.1:3003
|
||||
@@ -117,6 +117,8 @@ http://localhost:3000
|
||||
|
||||
## Funcionalidades Principais
|
||||
|
||||
- Username:admin Senha:admin
|
||||
|
||||
- **Login**: Fazer login na aplicação.
|
||||
|
||||
- **CRUD Produtos**: CRUD básico de produtos.
|
||||
|
||||
@@ -2,11 +2,11 @@ import { useNavigate } from "react-router";
|
||||
import { Button, Title } from "../../shared/components/default";
|
||||
import { FlexContainer } from "../../shared/components/home";
|
||||
|
||||
import { ProductProps, setProductSlice } from "../../shared/store/slices/productSlice";
|
||||
import { setProductSlice } from "../../shared/store/slices/productSlice";
|
||||
import { useDispatch } from "react-redux";
|
||||
import { useEffect } from "react";
|
||||
import TableProducts from "./components/TableProducts";
|
||||
import { setProductsSlice } from "../../shared/store/slices/productsSlice";
|
||||
import { ProductsProps, setProductsSlice } from "../../shared/store/slices/productsSlice";
|
||||
|
||||
|
||||
const Products = () => {
|
||||
@@ -25,7 +25,7 @@ const Products = () => {
|
||||
|
||||
const data = await response.json()
|
||||
|
||||
dispatch(setProductsSlice(data?.payload as ProductProps[]))
|
||||
dispatch(setProductsSlice(data?.payload as ProductsProps[]))
|
||||
|
||||
} catch(e) {
|
||||
console.error(e)
|
||||
|
||||
@@ -40,6 +40,8 @@ export default function TableProducts () {
|
||||
<Table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Criado</th>
|
||||
<th>Editado</th>
|
||||
<th>Código</th>
|
||||
<th>Nome</th>
|
||||
<th>Estoque Total</th>
|
||||
@@ -53,8 +55,12 @@ export default function TableProducts () {
|
||||
<tbody>
|
||||
|
||||
{ !!products && products.map((p,index)=>{
|
||||
const createdAt = new Date(p.createdAt*1000)
|
||||
const updatedAt = p.updatedAt === null? null : new Date(p.updatedAt*1000)
|
||||
return(
|
||||
<tr key={index}>
|
||||
<td>{createdAt.toLocaleDateString() + "-" + createdAt.toLocaleTimeString()}</td>
|
||||
<td>{updatedAt !== null? updatedAt.toLocaleDateString() + "-" + updatedAt.toLocaleTimeString(): "-"}</td>
|
||||
<td>{p.codigo}</td>
|
||||
<td>{p.nome}</td>
|
||||
<td>{p.estoqueTotal}</td>
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import { PayloadAction, createSlice } from "@reduxjs/toolkit"
|
||||
|
||||
export interface ProductProps {
|
||||
export interface ProductsProps {
|
||||
createdAt: number
|
||||
updatedAt: number | null
|
||||
nome: string
|
||||
codigo: string
|
||||
estoqueTotal: number
|
||||
@@ -10,13 +12,13 @@ export interface ProductProps {
|
||||
precoPor: number
|
||||
}
|
||||
|
||||
const initialState : ProductProps[] = []
|
||||
const initialState : ProductsProps[] = []
|
||||
|
||||
const productsSlice = createSlice({
|
||||
name: "products",
|
||||
initialState,
|
||||
reducers: {
|
||||
setProductsSlice: (_, action: PayloadAction<ProductProps[]>) => {
|
||||
setProductsSlice: (_, action: PayloadAction<ProductsProps[]>) => {
|
||||
return action.payload
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user