Skip to content

Commit

Permalink
update interface
Browse files Browse the repository at this point in the history
  • Loading branch information
gabaugusto committed Nov 28, 2023
1 parent 64a4462 commit 3b502f4
Show file tree
Hide file tree
Showing 13 changed files with 80 additions and 42 deletions.
3 changes: 3 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/momento_spring_boot_api.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,12 @@ public Optional<Funcionarios> searchById(@PathVariable int id) {
}

//Encontrar um único elemento por nome
/*
@CrossOrigin
@RequestMapping(value = "nome/{nome}", method = RequestMethod.GET)
public Optional<Funcionarios> searchByName(@PathVariable String nome) {
return dbConnection.findFuncionariosBynome(nome);
}
} */

@RequestMapping(value = "email/{email}", method = RequestMethod.GET)
@CrossOrigin
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,21 +14,20 @@ public class VendasController {
@Autowired
RelatorioVendasRepository dbConnection;

@CrossOrigin
@CrossOrigin(origins = "*")
@GetMapping("/")
public List<RelatorioVendas> findAllRecords(){
return dbConnection.findAll();
}


@CrossOrigin
@CrossOrigin(origins = "*")
@RequestMapping(value = "produto", method = RequestMethod.GET)
public List<RelatorioVendas> vendasPorProduto() {
return dbConnection.relatorioVendasProduto();
}

@RequestMapping(value = "vendas", method = RequestMethod.GET)
@CrossOrigin
@CrossOrigin(origins = "*")
@RequestMapping(value = "data", method = RequestMethod.GET)
public List<RelatorioVendas> vendasLinhaTempo() {
return dbConnection.relatorioVendasLinhaTempo();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@ public class Funcionarios {
@Column(name = "funcionario_id", nullable = false)
int funcionarioId; // <- Srpring tem alguns problemas criando métodos customizados utilizando underscore, então, renomeamos essa coluna dentro do Spring

String nome;
@Column(name = "primeiro_nome", nullable = false)
String primeiroNome;

String sobrenome;

String email;

Expand Down Expand Up @@ -44,12 +47,19 @@ public void setFuncionarioId(int funcionarioId) {
this.funcionarioId = funcionarioId;
}

public String getNome() {
return nome;
public String getPrimeiroNome() {
return primeiroNome;
}

public void setPrimeiroNome(String primeiro_nome) {
this.primeiroNome = primeiro_nome;
}
public String getSobrenome() {
return sobrenome;
}

public void setNome(String nome) {
this.nome = nome;
public void setSobrenome(String sobrenome) {
this.sobrenome = sobrenome;
}

public String getEmail() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,10 @@ public interface FuncionariosRepository extends JpaRepository<Funcionarios, UUID
// Adicione aqui métodos específicos para a outra tabela, se necessário
Optional<Funcionarios> findFuncionariosByfuncionarioId(int funcionarioId);

Optional<Funcionarios> findFuncionariosBynome(String nome);

// Abaixo consulta é escrita em SQL nativo e o parâmetro nativeQuery = true informa ao Spring Data JPA que é uma consulta SQL nativa em vez de JPQL.
// Usamos <List> para encontrar mais de um elemento.
Optional<Funcionarios> findFuncionariosByemail(String email);


@Query(value = "SELECT f.* FROM funcionarios f INNER JOIN departamento d ON f.departamento_id = d.departamento_id WHERE f.departamento_id = ?1", nativeQuery = true)
List<Funcionarios> findFuncionariosBydepartamentoId(int id);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
@Repository
public interface RelatorioVendasRepository extends JpaRepository<RelatorioVendas, UUID> {

@Query(value = "SELECT venda_data AS data, SUM(quantidade_vendida * preco_unitario) AS vendas_totais FROM relatorio_vendas GROUP BY venda_data ORDER BY venda_data;", nativeQuery = true)
@Query(value = "SELECT ticket, produto, produto_id, funcionario_id, funcionario_nome, preco_unitario, venda_data, SUM(quantidade_vendida) AS quantidade_vendida, SUM(quantidade_vendida * preco_unitario) AS vendas_totais FROM relatorio_vendas GROUP BY venda_data ORDER BY venda_data;", nativeQuery = true)
List<RelatorioVendas> relatorioVendasLinhaTempo();

@Query(value = "SELECT produto, SUM(quantidade_vendida), SUM((quantidade_vendida * preco_unitario)/100) AS valor_total_vendido FROM relatorio_vendas GROUP BY produto;", nativeQuery = true)
@Query(value = "SELECT ticket, SUM(quantidade_vendida) AS quantidade_vendida, produto, produto_id, preco_unitario, venda_data, funcionario_id, SUM((quantidade_vendida * preco_unitario)/100) AS valor_total_vendido, funcionario_nome FROM relatorio_vendas GROUP BY produto;", nativeQuery = true)
List<RelatorioVendas> relatorioVendasProduto();

}
Expand Down
6 changes: 3 additions & 3 deletions api/src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
## Porta em que a API será executada.
## Algo como http://localhost:{porta}/
server.port = 8083
server.port = 8084

## Configuração URL de conexão com o banco
## Importante que o MySQL esteja preparado com o banco antes de executar esse programa
spring.datasource.url=jdbc:mysql://localhost:3308/momento
spring.datasource.url=jdbc:mysql://localhost:3306/momento

## Usuario de acesso
spring.datasource.username=root

## Senha do banco
spring.datasource.password=senac
spring.datasource.password=root

## Configuracao de atualizacoes do banco
spring.jpa.hibernate.ddl-auto=none
Expand Down
6 changes: 3 additions & 3 deletions api/target/classes/application.properties
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
## Porta em que a API será executada.
## Algo como http://localhost:{porta}/
server.port = 8083
server.port = 8084

## Configuração URL de conexão com o banco
## Importante que o MySQL esteja preparado com o banco antes de executar esse programa
spring.datasource.url=jdbc:mysql://localhost:3308/momento
spring.datasource.url=jdbc:mysql://localhost:3306/momento

## Usuario de acesso
spring.datasource.username=root

## Senha do banco
spring.datasource.password=senac
spring.datasource.password=root

## Configuracao de atualizacoes do banco
spring.jpa.hibernate.ddl-auto=none
Expand Down
33 changes: 19 additions & 14 deletions interface-vanilla-html/sales_by_product.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,40 +11,45 @@
<script>
document.addEventListener('DOMContentLoaded', function() {
// Fetch data from the API endpoint
fetch('/sales_by_product')
fetch('http://localhost:8084/vendas/produto')
.then(response => {

if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => {
console.log(data)
if (!Array.isArray(data)) {
throw new Error('Invalid data format');
}

// Extracting product names and total quantity sold from the fetched data
const products = data.map(item => item.product);
const totalQuantitySold = data.map(item => item.total_quantity_sold);
const totalValueSold = data.map(item => item.total_value_sold);
const produtos = data.map(item => item.produto);
const totalQuantidadeVendida = data.map(item => item.quantidadeVendida);
const totalValorVendido = data.map(item => ((item.quantidadeVendida * item.precoUnitario)/1000));

console.log(produtos);
console.log(totalQuantidadeVendida);
console.log(totalValorVendido);
// Chart.js setup for sales by product
const ctx = document.getElementById('salesByProductChart').getContext('2d');
new Chart(ctx, {
type: 'bar',
data: {
labels: products,
labels: produtos,
datasets: [{
label: 'Sales by Product',
data: totalQuantitySold,
label: 'Vendas por Produto',
data: totalQuantidadeVendida,
backgroundColor: 'rgba(255, 99, 132, 0.2)',
borderColor: 'rgba(255, 99, 132, 1)',
borderWidth: 1
}, {
label: 'Value by Product',
data: totalValueSold,
backgroundColor: 'rgba(255, 199, 132, 0.2)',
borderColor: 'rgba(255, 199, 132, 1)',
}, {
label: 'Valor Somado das Vendas',
data: totalValorVendido,
backgroundColor: 'rgba(0, 33, 69, 0.2)',
borderColor: 'rgba(255, 99, 132, 1)',
borderWidth: 1
}]
},
Expand All @@ -55,13 +60,13 @@
beginAtZero: true,
title: {
display: true,
text: 'Totals Sold'
text: 'Vendas Somadas'
}
},
x: {
title: {
display: true,
text: 'Products'
text: 'Produtos'
}
}
}
Expand Down
12 changes: 6 additions & 6 deletions interface-vanilla-html/sales_over_time.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
<script>
document.addEventListener('DOMContentLoaded', function() {
// Fetch data from the API endpoint
fetch('/sales_over_time')
fetch('http://localhost:8084/vendas/data')
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
Expand All @@ -28,10 +28,10 @@
}

// Extracting dates and total sales from the fetched data
const dates = data.map(item => item.date);
const totalSales = data.map(item => item.total_sales);
const dates = data.map(item => item.vendaData);
const totalVendas = data.map(item => item.vendas_totais);
console.log(dates);
console.log(totalSales);
console.log(totalVendas);

// Chart.js setup
const ctx = document.getElementById('salesChart').getContext('2d');
Expand All @@ -40,8 +40,8 @@
data: {
labels: dates,
datasets: [{
label: 'Total Sales Over Time',
data: totalSales,
label: 'Vendas Totais ao longo do tempo',
data: totalVendas,
backgroundColor: 'rgba(54, 162, 235, 0.2)',
borderColor: 'rgba(54, 162, 235, 1)',
borderWidth: 1
Expand Down

0 comments on commit 3b502f4

Please sign in to comment.