Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
41 changes: 39 additions & 2 deletions assets/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,16 +76,53 @@
> ###          As ativações e criações de serviço são feita de acordo com sua demanda, como exemplo, o Directions API, uma API do Google Maps que te retorna rotas, precisamos ativá-la e então configurar uma credencial chamada API KEY.
><br>
><br>
><img src="">
><img src="./img/cloud_activate.png">
><br>
><br>
>
> ### &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Após ativar a API Desejada, você terá algumas abas abaixos como "Documentação", lá você poderá como utilizar os serviços nas tecnologias desejadas, como configurar, etc. No caso desta API, você verá na documentação que é necessária uma API KEY, que faremos agora na aba "Credenciais" em API.
><br>
><br>
><img src="./img/cloud_cred.png">
><br>
><br>
>
> ### &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Na seção das credenciais, na parte superior clique em "Criar Credencial", clique em "Chave de API".
><br>
><br>
><img src="./img/cloud_key.png">
><br>
><br>
>
> ### &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Após criar sua chave, ele irá ser mostrada e pedirá para que você configure restrições da chave API.
><br>
><br>
><img src="./img/cloud_reg_key.png">
><br>
><br>
>
> ### &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Você poderá restringir por Referenciadores HTTP, Endereços IP, Apps Android ou iOS. No nosso caso, preferimos não restringir, mas por questões de segurança e mal uso de sua chave, você poderá fazer isso. Caso tenha uma provedora de internet com IP Dinâmico, não esqueça de instalar um DDNS ou Fixar seu IP de onde sua requisição irá ser feita para evitar erros de restrição.

<br>
<br>

## <b>5 - CONFIGURAR BANCO SQL</b>


> ### &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Para configurarmos uma instância de Banco de Dados MySQL, deveremos primeiro criar e configurar nossa máquina virtual, não se preocupe, pois a questão da instalação, configuração do S.O. e do Serviço de Banco de Dados o próprio Google toma conta. Então primeiro passo, criaremos nossa instância virtual como a seguir.
><br>
><br>
><img src="./img/cloud_sql_config.png">
><br>
><br>
>
> ### &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Daremos um nome para nossa instância, criaremos a senha para o usuário raiz (root) e escolheremos a versão do nosso MySQL, na opção de Configuração Inicial, você pode decidir em Produção real (o que cria uma configuração para altas demandas) ou para Desenvolvimento (o que diminui a performance mas economiza nos custos), mais abaixo temos a disponibilidade por região, caso esteja criando o servidor no Brasil e deseja que haja menor latência de resposta e maior fidelidade de entrega de dados, escolha a região de São Paulo, possivelmente haverá duas alternativas, escolha a que melhor se encaixa com sua demanda.
><br>
><br>
><img src="./img/cloud_sql_connect.png">
><br>
><br>
>
> ### &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Após

<br>
<br>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,6 @@ public RecentQuote recentPackage(@RequestBody RecentQuote quote) {
return recentQuoteRepository.save(quote);
}

@PostMapping("/register")
public RegisterQuote registerPackage(@RequestBody RegisterQuote quote) {
quote.setPost(LocalDate.now());
return registerQuoteRepository.save(quote);
}

@GetMapping("/recent/{id}")
public List<RecentQuote> recentQuote(@PathVariable("id") int id){
return recentQuoteRepository.findOwnQuote(id);
Expand All @@ -51,6 +45,32 @@ public void deleteQuote(@PathVariable("id") int id){
recentQuoteRepository.deleteById(id);
}

@PostMapping("/register")
public RegisterQuote registerPackage(@RequestBody RegisterQuote quote) {
quote.setPost(LocalDate.now());
return registerQuoteRepository.save(quote);
}

@GetMapping("/packs/user/{id}")
public List<RegisterQuote> getAllMyPacks(@PathVariable("id") int id){
return registerQuoteRepository.findPackByUserId(id);
}

@GetMapping("/packs/carrier/{id}")
public List<RegisterQuote> getAllCarrierPacks(@PathVariable("id") int id){
return registerQuoteRepository.findPackByCarrierId(id);
}

@GetMapping("/packs/user/recent/{id}")
public List<RegisterQuote> getRecentUserPacks(@PathVariable("id") int id){
return registerQuoteRepository.findPackByUserIdRecent(id, LocalDate.now(), LocalDate.now().minusDays(7));
}

@GetMapping("/packs/carrier/recent/{id}")
public List<RegisterQuote> getRecentCarrierPacks(@PathVariable("id") int id){
return registerQuoteRepository.findPackByCarrierIdRecent(id, LocalDate.now(), LocalDate.now().minusDays(7));
}

@GetMapping("/go")
public int goingPackages() {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,30 @@
package br.com.entra21.teamroxo.TMSProject.interfaces;

import java.time.LocalDate;
import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import br.com.entra21.teamroxo.TMSProject.template.RegisterQuote;

@Repository
@EnableJpaRepositories
public interface RegisterQuoteRepository extends JpaRepository<RegisterQuote, Integer> {

@Query("FROM RegisterQuote WHERE carrier_id = :carrierId")
List<RegisterQuote> findPackByCarrierId(@Param("carrierId") int id);

@Query("FROM RegisterQuote WHERE pessoa_id = :userId")
List<RegisterQuote> findPackByUserId(@Param("userId") int id);

@Query("FROM RegisterQuote WHERE pessoa_id = :userId and post BETWEEN :lastWeek and :now")
List<RegisterQuote> findPackByUserIdRecent(@Param("userId") int id, @Param("now") LocalDate now, @Param("lastWeek") LocalDate lastWeek);

@Query("FROM RegisterQuote WHERE carrier_id = :carrierId and post BETWEEN :lastWeek and :now")
List<RegisterQuote> findPackByCarrierIdRecent(@Param("carrierId") int id, @Param("now") LocalDate now, @Param("lastWeek") LocalDate lastWeek);

}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public class RegisterQuote {
private byte carrier_id;
private float cub_height;
private int pessoa_id;
private int pessoa_id_destiny;

public RegisterQuote() {
super();
Expand Down Expand Up @@ -111,4 +112,12 @@ public void setPost(LocalDate post) {
this.post = post;
}

public int getPessoa_id_destiny() {
return pessoa_id_destiny;
}

public void setPessoa_id_destiny(int pessoa_id_destiny) {
this.pessoa_id_destiny = pessoa_id_destiny;
}

}
Original file line number Diff line number Diff line change
@@ -1,13 +1,56 @@
package br.com.entra21.teamroxo.TMSProject.template;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "link")
public class SystemLink {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

private int client;

private int enterprise;

public SystemLink() {
super();
}

public SystemLink(Integer id, int client, int enterprise) {
super();
this.id = id;
this.client = client;
this.enterprise = enterprise;
}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public int getClient() {
return client;
}

public void setClient(int client) {
this.client = client;
}

public int getEnterprise() {
return enterprise;
}

public void setEnterprise(int enterprise) {
this.enterprise = enterprise;
}

}
40 changes: 31 additions & 9 deletions frontend/main/src/app/body/body.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ <h3 class="dropdown-item-title">
</h3>
<p class="text-sm">Parabéns:</p>
<p class="text-sm text-muted" *ngFor="let aniversariante of aniversariantes; let i = index;">
<i class="fas fa-birthday-cake mr-1" ></i>{{aniversariante.nome}}
<i class="fas fa-birthday-cake mr-1"></i>{{aniversariante.nome}}
</p>
</div>
</div>
Expand Down Expand Up @@ -63,29 +63,50 @@ <h3 class="dropdown-item-title">
<a href="#" class="dropdown-item dropdown-footer">See All Messages</a>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link" data-toggle="dropdown" href="#">
<i class="far fa-bell"></i>
<span class="badge badge-warning navbar-badge" *ngIf="this.notificationCount != 0">{{this.notificationCount}}</span>
</a>
<div class="dropdown-menu dropdown-menu-lg dropdown-menu-right">
<div *ngFor="let notify of notificacoes;let i = index">
<div class="dropdown-divider"></div>
<a href="#" routerLink={{notify.route}} class="dropdown-item">
<div class="media">
<div class="media-body">
<h3 class="dropdown-item-title">
{{notify.title}}
<span class="float-right text-sm text-danger"><i class="fas fa-star"></i></span>
</h3>
<p class="text-sm">{{notify.text}}</p>
</div>
</div>
</a>
</div>
</div>
</li>



</ul>
</nav>

<aside class="main-sidebar sidebar-primary bg-light elevation-4">
<a routerLink="/" class="brand-link">
<img src="./../favicon.ico" alt="AdminLTE Logo" class="brand-image img-circle elevation-3"
style="opacity: 0.8" />
<img src="./../favicon.ico" alt="AdminLTE Logo" class="brand-image img-circle elevation-3" style="opacity: 0.8" />
<span class="brand-text font-weight-light">TMS Project</span>
</a>

<div class="sidebar">
<nav class="mt-2">
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false">
<li class="nav-item">
<!-- <li class="nav-item">
<a href="#" routerLink="home" class="nav-link">
<i class="nav-icon fas fa-home"></i>
<p>
Home
</p>
</a>
</li>
</li> -->
<li class="nav-item" [hidden]="!loginService.admin">
<a href="" routerLink="dashboard" class="nav-link">
<i class="nav-icon fas fa-chart-bar"></i>
Expand Down Expand Up @@ -157,7 +178,7 @@ <h3 class="dropdown-item-title">
</ul>
</li>
<li class="nav-item">
<a href="" routerLink="finance" class="nav-link" [hidden]="!loginService.adminEnter">
<a href="" routerLink="finance" class="nav-link">
<i class="nav-icon fas fa-dollar-sign"></i>
<p>Finance
</p>
Expand All @@ -184,6 +205,7 @@ <h3 class="dropdown-item-title">
</div>
<div style="padding-left: 20px;">
<div class="small">Logged in as:</div>
<span>{{loginService.nome}}<br><a routerLink="" (click)="sair()" class="small" style="color: red;">Sair</a>&nbsp;&nbsp;&nbsp;&nbsp;<a routerLink="edit" class="small">Edit</a> </span>
<span>{{loginService.nome}}<br><a routerLink="" (click)="sair()" class="small"
style="color: red;">Sair</a>&nbsp;&nbsp;&nbsp;&nbsp;<a routerLink="edit" class="small">Edit</a> </span>
</div>
</aside>
</aside>
21 changes: 18 additions & 3 deletions frontend/main/src/app/body/body.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { LoginserviceService } from '../loginservice.service';
import { HttpClient } from '@angular/common/http';
import { Router } from '@angular/router';
import { Observable } from 'rxjs';
import { NotificationService } from '../notification.service';

@Component({
selector: 'app-body',
Expand All @@ -20,18 +21,25 @@ export class BodyComponent implements OnInit {
birthmonth! : string
aniversariantes!: Array<any>
aniversariantesMes!: Array<any>
notificacoes!:Array<any>
notificationCount!:number
id!: number
nome!: string
email!: string
birth!: Date
document!: string

constructor(public loginService:LoginserviceService, private router:Router, private http:HttpClient) { }
constructor(public loginService:LoginserviceService, private router:Router, private http:HttpClient, private notify:NotificationService) { }

ngOnInit(): void {

this.aniversariantes = new Array()
this.aniversariantesMes = new Array()
this.notificacoes = new Array()

if(this.loginService.document == null || this.loginService.birth == null){
this.notificacoes.push({title:"Complete seu Cadastro!", text:"Clique aqui para concluir!", route:"edit"})
}

this.http.get(this.APIBirthNow)
.subscribe((resultado:any) => {
Expand All @@ -40,6 +48,10 @@ export class BodyComponent implements OnInit {

for(let i=0;i<count;i++){

if(resultado[i].id == this.loginService.pessoaID){
this.notificacoes.push({title:"Hoje é seu Aniversário!", text:"Parabéns! Para comemorar temos algumas ofertas para você. Confira!", route:"ship-quote"})
}

this.aniversariantes.push({id: resultado[i].id ,nome: resultado[i].nome, email: resultado[i].email, birth: resultado[i].birth, document: resultado[i].document})

}
Expand All @@ -59,8 +71,11 @@ export class BodyComponent implements OnInit {

});

this.notificationCount = this.notificacoes.length

}

sair(){

this.loginService.succeed = false;}}
this.loginService.succeed = false;
}
}
Loading