From fc460bf3431ad183272e2270304b362750ab83bc Mon Sep 17 00:00:00 2001 From: joseCorte-exe Date: Thu, 2 Mar 2023 18:15:20 -0300 Subject: [PATCH] fix --- .../administrativeTables/ClientsTable.tsx | 399 +++++++++--------- src/pages/administrative/clients/index.tsx | 73 ++-- src/pages/dashboard/index.tsx | 190 +++++---- src/pages/telemetria/index.tsx | 2 +- src/services/ssrApi.ts | 6 +- 5 files changed, 360 insertions(+), 310 deletions(-) diff --git a/src/components/administrativeTables/ClientsTable.tsx b/src/components/administrativeTables/ClientsTable.tsx index 8ff3228..5c2bb10 100644 --- a/src/components/administrativeTables/ClientsTable.tsx +++ b/src/components/administrativeTables/ClientsTable.tsx @@ -10,23 +10,23 @@ import TablePagination from '@mui/material/TablePagination'; import TableRow from '@mui/material/TableRow'; import TableSortLabel from '@mui/material/TableSortLabel'; import { visuallyHidden } from '@mui/utils'; -import React, { useState, useEffect } from 'react'; +import React, { useEffect, useState } from 'react'; -import Image from 'next/image' +import Image from 'next/image'; -import Snackbar from '@mui/material/Snackbar'; import MuiAlert, { AlertProps } from '@mui/material/Alert'; +import Snackbar from '@mui/material/Snackbar'; import Modal from '@mui/material/Modal'; -import FormData from 'form-data' -import { InputUploadView } from '../inputUploadImg/inputUploadView' -import { FormControl, InputLabel, MenuItem, Select, TextField, Typography } from '@mui/material' +import { FormControl, InputLabel, MenuItem, Select, TextField, Typography } from '@mui/material'; +import FormData from 'form-data'; +import { InputUploadView } from '../inputUploadImg/inputUploadView'; -import { TableView, StyledStatus } from './TableView'; import { api } from '../../services/api'; import FaqButton1 from '../buttons/faqButton/FaqButton1'; import FaqButton2 from '../buttons/faqButton/FaqButton2'; +import { StyledStatus, TableView } from './TableView'; const style = { position: 'absolute' as const, @@ -107,19 +107,19 @@ const headCells: readonly HeadCell[] = [ }, { id: 'name', - numeric: true, + numeric: false, disablePadding: false, label: 'name', }, { id: 'unity', - numeric: true, + numeric: false, disablePadding: false, label: 'unity', }, { id: 'status', - numeric: true, + numeric: false, disablePadding: false, label: 'status', }, @@ -187,9 +187,9 @@ interface ClientsTableInterface { onChange: any } -export default function ClientTable({clients, onChange}: ClientsTableInterface) { +export default function ClientTable({ clients, onChange }: ClientsTableInterface) { const [order, setOrder] = useState('asc'); - const [orderBy, setOrderBy] = useState('status'); + const [orderBy, setOrderBy] = useState('asc'); const [selected, setSelected] = useState([]); const [page, setPage] = useState(0); const [dense, setDense] = useState(false); @@ -202,13 +202,12 @@ export default function ClientTable({clients, onChange}: ClientsTableInterface) const handleOpen = () => setOpen(true); const handleClose = () => setOpen(false); - const [cod_client, setCod_client] = useState() const [units, setUnits] = useState([]) function getClientUnits(client_id: number) { api.post('/units', { "filters": [ - {"type" : "=", "field": "dados_cadastrais.cod_smart_cliente", "value": client_id} + { "type": "=", "field": "dados_cadastrais.cod_smart_cliente", "value": client_id } ], "fields": ["unidade"], "distinct": true @@ -283,64 +282,64 @@ export default function ClientTable({clients, onChange}: ClientsTableInterface) const emptyRows = page > 0 ? Math.max(0, (1 + page) * rowsPerPage - clients.length) : 0; - const formData = new FormData() + const formData = new FormData() - const [clientEdit, setClientEdit] = useState({ - name: String, - email: String, - password: String, - password_confirmation: String, - client_id: Number - }) - const [logo, setLogo] = useState(false) - const [imageURLS, setImageURLs] = useState([]) - const [images, setImages] = useState([] as any) - const [nivelAcess, setnivelAcess] = useState(2); - const [openEditUserModal, setOpenEditUserModal] = useState(2); + const [clientEdit, setClientEdit] = useState({ + name: String, + email: String, + password: String, + password_confirmation: String, + client_id: Number + }) + const [logo, setLogo] = useState(false) + const [imageURLS, setImageURLs] = useState([]) + const [images, setImages] = useState([] as any) + const [nivelAcess, setnivelAcess] = useState(2); + const [openEditUserModal, setOpenEditUserModal] = useState(false); - const [selectedClient, setSelectedClient] = useState(2); + const [selectedClient, setSelectedClient] = useState(2); - useEffect(() => { - if (images.length < 1) return - const newImageUrls: any = [] - images.forEach((image: any) => - newImageUrls.push(URL.createObjectURL(image)) - ) - setImageURLs(newImageUrls) - }, [images]) + useEffect(() => { + if (images.length < 1) return + const newImageUrls: any = [] + images.forEach((image: any) => + newImageUrls.push(URL.createObjectURL(image)) + ) + setImageURLs(newImageUrls) + }, [images]) - function onImageChange(e: any) { - setImages([...e.target.files]) - setLogo(e.target.files[0]) - } + function onImageChange(e: any) { + setImages([...e.target.files]) + setLogo(e.target.files[0]) + } - const [openSnackSuccess, setOpenSnackSuccess] = useState(false) + const [openSnackSuccess, setOpenSnackSuccess] = useState(false) - function handleUpdateClient({ - name, - email, - password, - password_confirmation, - client_id - }, id) { - formData.append('name', name) - formData.append('email', email) - formData.append('password', password) - formData.append('password_confirmation', password_confirmation) - formData.append('client_id', client_id) - formData.append('profile_picture', logo) - formData.append('role', nivelAcess) + function handleUpdateClient({ + name, + email, + password, + password_confirmation, + client_id + }, id) { + formData.append('name', name) + formData.append('email', email) + formData.append('password', password) + formData.append('password_confirmation', password_confirmation) + formData.append('client_id', client_id) + formData.append('profile_picture', logo) + formData.append('role', nivelAcess) - api.put(`/user/${id}`, formData) - .then((res) => { - setOpenSnackSuccess(true) - setOpenModalInativar(false) - window.location.reload() - }) - .catch((res) => { - setOpenSnackError(true) - }) - } + api.put(`/user/${id}`, formData) + .then((res) => { + setOpenSnackSuccess(true) + setOpenModalInativar(false) + window.location.reload() + }) + .catch((res) => { + setOpenSnackError(true) + }) + } return ( @@ -398,17 +397,17 @@ export default function ClientTable({clients, onChange}: ClientsTableInterface) > Client - {row.client_id} - { + { setOpenEditUserModal(true) setSelectedClient(row) setClientEdit(row) }}>{row.name} - { + { setOpen(true) getClientUnits(row.client_id) setSelectedClient(row) }}>clique aqui para ver as unidades - {row.deleted_at? 'inativo' : 'ativo'} + {row.deleted_at ? 'inativo' : 'ativo'} ); })} @@ -435,140 +434,140 @@ export default function ClientTable({clients, onChange}: ClientsTableInterface) /> setOpenEditUserModal(false)} - aria-labelledby="modal-modal-title" - aria-describedby="modal-modal-description" + open={openEditUserModal} + onClose={() => setOpenEditUserModal(false)} + aria-labelledby="modal-modal-title" + aria-describedby="modal-modal-description" > - -

Editar Cliente - {selectedClient.name}

- - Adicionar Cliente Smart Energia - -
- { - setClientEdit({ - ...clientEdit, - name: value.target.value - }) - }} - variant="outlined" - /> - { - setClientEdit({ - ...clientEdit, - email: value.target.value.toLowerCase() - }) - }} - variant="outlined" - /> - { - setClientEdit({ - ...clientEdit, - password: value.target.value - }) - }} - variant="outlined" - /> - { - setClientEdit({ - ...clientEdit, - password_confirmation: value.target.value - }) - }} - variant="outlined" - /> - { - setClientEdit({ - ...clientEdit, - client_id: value.target.value - }) - }} - variant="outlined" - /> - -
-
- {imageURLS.map((imageSrc, index) => { - return - })} -
-
-
-
-
- - + +

Editar Cliente - {selectedClient.name}

+ + Adicionar Cliente Smart Energia + +
+ { + setClientEdit({ + ...clientEdit, + name: value.target.value + }) + }} + variant="outlined" + /> + { + setClientEdit({ + ...clientEdit, + email: value.target.value.toLowerCase() + }) + }} + variant="outlined" + /> + { + setClientEdit({ + ...clientEdit, + password: value.target.value + }) + }} + variant="outlined" + /> + { + setClientEdit({ + ...clientEdit, + password_confirmation: value.target.value + }) + }} + variant="outlined" + /> + { + setClientEdit({ + ...clientEdit, + client_id: value.target.value + }) + }} + variant="outlined" + /> + +
+
+ {imageURLS.map((imageSrc, index) => { + return + })} +
- -
- +
+
+
+ + +
+
+
+ -
+
- - Nivel de acesso - setnivelAcess(value.target.value)} + fullWidth + > + Administrador + Cliente - - -
+ + +
- setOpenEditUserModal(false)} /> - handleUpdateClient(clientEdit, selectedClient.id)} - /> - + setOpenEditUserModal(false)} /> + handleUpdateClient(clientEdit, selectedClient.id)} + /> + + > { units.map((units, index) => { return <>
  • {units.unidade}
  • -
    + listStyle: 'none' + }} key={index}>{units.unidade} +
    }) } diff --git a/src/pages/administrative/clients/index.tsx b/src/pages/administrative/clients/index.tsx index a055fe7..2dde4d1 100644 --- a/src/pages/administrative/clients/index.tsx +++ b/src/pages/administrative/clients/index.tsx @@ -1,29 +1,29 @@ +import MuiAlert, { AlertProps } from '@mui/material/Alert' import Box from '@mui/material/Box' import Modal from '@mui/material/Modal' +import Snackbar from '@mui/material/Snackbar' import TextField from '@mui/material/TextField' import Typography from '@mui/material/Typography' -import React, { useState, useEffect } from 'react' import Image from 'next/image' -import Snackbar from '@mui/material/Snackbar' -import MuiAlert, { AlertProps } from '@mui/material/Alert' +import React, { useEffect, useState } from 'react' import ClientsTable from '../../../components/administrativeTables/ClientsTable' import BasicButton from '../../../components/buttons/basicButton/BasicButton' import FaqButton1 from '../../../components/buttons/faqButton/FaqButton1' import FaqButton2 from '../../../components/buttons/faqButton/FaqButton2' import Header from '../../../components/header/Header' -import { ClientsView } from '../../../styles/layouts/clients/ClientsView' -import PageTitle from '../../../components/pageTitle/PageTitle' -import ConfirmModal from '../../../components/modal/ConfirmModal' -import { ConfirmModalView } from '../../../styles/layouts/modals/confirmModalView' -import { api } from '../../../services/api' -import { parseCookies } from 'nookies' import { GetServerSideProps } from 'next' +import { parseCookies } from 'nookies' +import ConfirmModal from '../../../components/modal/ConfirmModal' +import PageTitle from '../../../components/pageTitle/PageTitle' +import { api } from '../../../services/api' import getAPIClient from '../../../services/ssrApi' +import { ClientsView } from '../../../styles/layouts/clients/ClientsView' +import { ConfirmModalView } from '../../../styles/layouts/modals/confirmModalView' +import { FormControl, InputLabel, MenuItem, Select } from '@mui/material' import FormData from 'form-data' import { InputUploadView } from '../../../components/inputUploadImg/inputUploadView' -import { FormControl, InputLabel, MenuItem, Select } from '@mui/material' const style = { position: 'absolute' as const, @@ -70,6 +70,7 @@ export default function clients({ clients, userName }) { const [nivelAcess, setnivelAcess] = useState(2); const [openSnackSuccess, setOpenSnackSuccess] = useState(false) const [openSnackError, setOpenSnackError] = useState(false) + const [openSnackWarning, setOpenSnackWarning] = useState(false) const [openSnackSuccessDelete, setOpenSnackSuccessDelete] = useState(false) const [openSnackErrorDelete, setOpenSnackErrorDelete] = @@ -114,6 +115,9 @@ export default function clients({ clients, userName }) { formData.append('profile_picture', logo) formData.append('role', nivelAcess) + if (!name.length || !email.length || !password.length || !password_confirmation.length || !client_id.length || !logo || !nivelAcess.length) + setOpenSnackWarning(true) + api.post('/user', formData) .then((res) => { setOpenSnackSuccess(true) @@ -152,12 +156,6 @@ export default function clients({ clients, userName }) { setLogo(e.target.files[0]) } - console.table(clients.map(client => { - if (Number.parseInt(client.client_id) === 59641651) return client - return - })) - console.table(clients[417]) - return (
    + + + Preencha todos os campos! + + - - Nivel de acesso - setnivelAcess(value.target.value)} + fullWidth + > + Administrador + Cliente - - -
    + + +
    setOpen(false)} /> { let lastDataMensal = '0' let lastDataAnual = '0' - let index=0 + let index = 0 while (index < grossMensalGraph.length) { - if (!grossMensalGraph[index].dad_estimado && grossMensalGraph[index].economia_acumulada!==null) - lastDataMensal=grossMensalGraph[index].economia_acumulada + if (!grossMensalGraph[index].dad_estimado && grossMensalGraph[index].economia_acumulada !== null) + lastDataMensal = grossMensalGraph[index].economia_acumulada index++ } setLastDataBrutaMensal(`${parseFloat(lastDataMensal).toFixed(3)}`) - index=0 + index = 0 while (index < grossAnualGraph.length) { if (!grossAnualGraph[index].dad_estimado) - lastDataAnual=grossAnualGraph[index].economia_acumulada + lastDataAnual = grossAnualGraph[index].economia_acumulada index++ } setLastDataBrutaAnual(`${parseFloat(lastDataAnual).toFixed(3)}`) @@ -110,75 +112,113 @@ export default function Dashboard({grossAnualGraph, grossAnualYears, grossMensal { - typeof window === 'undefined' || typeof window === undefined? null : - <> -
    - - - - + typeof window === 'undefined' || typeof window === undefined ? null : + <> +
    + + + + - - - - + + + + - - - + + + - - value?.mes.slice(0, 4).includes('2021')).map(value => value?.custo_unit && !!parseInt(value?.custo_unit)? value.custo_unit : null)} - data2={costIndicator?.filter((value, index) => value?.mes.slice(0, 4).includes('2022')).map(value => value?.custo_unit && !!parseInt(value?.custo_unit)? value.custo_unit : null)} - label={months} - miniature - /> - -
    - - - - Termos de uso - - -

    - Bem-vindo a Plataforma Web – SMART ENERGIA! -

    -

    - Visualize os principais indicadores, dados de economia, resumo de operações, PLD, notícias além de acompanhar o consumo de energia em intervalos mínimos de 5 minutos. -

    -

    - Conforme nosso contrato de serviços vigente, todas as informações entregues são estritamente privadas, sendo seu sigilo protegido por lei, não podendo ser compartilhadas com terceiros. -

    -

    - A divulgação não autorizada das informações adquiridas nesta plataforma (ou seu uso), de forma integral ou parcial, é proibida, não sendo permitido o compartilhamento dos acessos e senhas ou qualquer informação que tiver acesso junto a esta plataforma, sendo que o acesso a esta plataforma é restrito e individual. -

    -

    - Ressaltamos que os resultados informados são meramente indicativos. -

    - { - setCookie(undefined, 'terms', 'true') - setOpen(false) - }} /> -
    -
    -
    - + + value?.mes.slice(0, 4).includes('2021')).map(value => value?.custo_unit && !!parseInt(value?.custo_unit) ? value.custo_unit : null)} + data2={costIndicator?.filter((value, index) => value?.mes.slice(0, 4).includes('2022')).map(value => value?.custo_unit && !!parseInt(value?.custo_unit) ? value.custo_unit : null)} + label={months} + miniature + /> + +
    + + + + Termos de uso + + +

    + Bem-vindo ao Smart Energy View, a Plataforma Web da SMART ENERGIA! +

    + +

    + Agora você terá a Gestão da sua Energia na palma da sua mão!!!! +

    + +

    + Visualize os principais indicadores, dados de economia, resumo de operações, PLD, notícias além de acompanhar o consumo de energia em intervalos mínimos de 5 minutos. +

    + +

    + Estamos na última fase de testes da plataforma e em breve também iremos disponibilizar os aplicativos para seu celular, nos sistemas operacionais IOS e Android. +

    + +

    + Encontrando qualquer dificuldade, eventuais inconsistências ou dúvidas, nos contate! +

    + +

    + Lembrando que conforme nosso contrato de serviços vigente, todas as informações entregues são estritamente privadas, sendo seu sigilo protegido por lei, não podendo ser compartilhadas com terceiros sendo destinadas a seu uso exclusivo. +

    + +

    + A divulgação não autorizada das informações adquiridas nesta plataforma (ou seu uso), de forma integral ou parcial, é proibida, não sendo permitido o compartilhamento dos acessos e senhas ou qualquer informação que tiver acesso junto a esta plataforma, sendo que o acesso a esta plataforma é restrito e individual. +

    + + ‌ + +

    + Destacamos que os resultados informados são meramente indicativos, não vinculantes a resultados e que as premissas disponibilizadas na plataforma são as mesmas utilizadas nos Energys Reports e estudos encaminhados. +

    + + +

    + Aproveite essa nova ferramenta de acompanhar sua Gestão de Energia! +

    + {/*

    + Bem-vindo a Plataforma Web – SMART ENERGIA! +

    +

    + Visualize os principais indicadores, dados de economia, resumo de operações, PLD, notícias além de acompanhar o consumo de energia em intervalos mínimos de 5 minutos. +

    +

    + Conforme nosso contrato de serviços vigente, todas as informações entregues são estritamente privadas, sendo seu sigilo protegido por lei, não podendo ser compartilhadas com terceiros. +

    +

    + A divulgação não autorizada das informações adquiridas nesta plataforma (ou seu uso), de forma integral ou parcial, é proibida, não sendo permitido o compartilhamento dos acessos e senhas ou qualquer informação que tiver acesso junto a esta plataforma, sendo que o acesso a esta plataforma é restrito e individual. +

    +

    + Ressaltamos que os resultados informados são meramente indicativos. +

    */} + { + setCookie(undefined, 'terms', 'true') + setOpen(false) + }} /> +
    +
    +
    + } ) @@ -198,8 +238,8 @@ export const getServerSideProps: GetServerSideProps = async (ctx) => { await apiClient.post('/economy/grossAnnual').then(res => { grossAnualGraph = res.data.data }) - .then(console.log) - .catch(console.log) + .then(console.log) + .catch(console.log) await apiClient.post('/economy/grossMonthly').then(res => { grossMensalGraph = res.data.data diff --git a/src/pages/telemetria/index.tsx b/src/pages/telemetria/index.tsx index 27a5bdb..a9db369 100644 --- a/src/pages/telemetria/index.tsx +++ b/src/pages/telemetria/index.tsx @@ -41,7 +41,7 @@ const Alert = React.forwardRef(function Alert( }) export default function Telemetria({ userName, clients }: any) { - const [unity, setUnity] = useState(clients[0].codigo_scde); + const [unity, setUnity] = useState(clients[0]?.codigo_scde); const [startDate, setStartDate] = useState(new Date()); const [endDate, setEndDate] = useState(new Date()); const [month, setMonth] = useState(new Date().getMonth() + 1); diff --git a/src/services/ssrApi.ts b/src/services/ssrApi.ts index e208249..c70ba4b 100644 --- a/src/services/ssrApi.ts +++ b/src/services/ssrApi.ts @@ -1,5 +1,4 @@ -import axios, { AxiosRequestConfig } from "axios"; -import * as cookie from 'cookie'; +import axios from "axios"; import * as express from 'express'; import * as next from 'next'; import { parseCookies } from "nookies"; @@ -13,7 +12,8 @@ export default function getAPIClient(ctx?: Pick | { const { '@smartAuth-token': token } = parseCookies(ctx) const api = axios.create({ - baseURL: "https://api.energiasmart.com.br/api", + // baseURL: "https://api.energiasmart.com.br/api", + baseURL: "https://api.energiasmart.klupp.com.br/api", }); api.interceptors.request.use(config => {