diff --git a/backend/TMSProject/pom.xml b/backend/TMSProject/pom.xml index cfdbdbf..e3214f1 100644 --- a/backend/TMSProject/pom.xml +++ b/backend/TMSProject/pom.xml @@ -39,6 +39,14 @@ spring-boot-starter-test test + + org.springframework.boot + spring-boot-starter-jdbc + + + org.springframework.boot + spring-boot-starter-data-jpa + com.fasterxml.jackson.core jackson-databind diff --git a/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/TmsProjectApplication.java b/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/TmsProjectApplication.java index c95e423..ebccb8c 100644 --- a/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/TmsProjectApplication.java +++ b/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/TmsProjectApplication.java @@ -2,16 +2,25 @@ import java.util.ArrayList; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.jdbc.core.JdbcTemplate; +import br.com.entra21.teamroxo.TMSProject.interfaces.PessoaRepository; +import br.com.entra21.teamroxo.TMSProject.template.Login; import br.com.entra21.teamroxo.TMSProject.template.Pessoa; @SpringBootApplication public class TmsProjectApplication implements CommandLineRunner { - - public static ArrayList pessoas=new ArrayList(); + + private static PessoaRepository pessoaRepository; + + public static ArrayList login = new ArrayList(); + + @Autowired + private JdbcTemplate jdbc; public static void main(String[] args) { SpringApplication.run(TmsProjectApplication.class, args); @@ -20,12 +29,6 @@ public static void main(String[] args) { @Override public void run(String... args) throws Exception { - pessoas.add(new Pessoa("Kalil", "kjfakhouri@gmail.com", (byte) 21)); - pessoas.add(new Pessoa("Kalil", "kjfakhouri@gmail.com", (byte) 21)); - pessoas.add(new Pessoa("Kalil", "kjfakhouri@gmail.com", (byte) 21)); - pessoas.add(new Pessoa("Kalil", "kjfakhouri@gmail.com", (byte) 21)); - pessoas.add(new Pessoa("Kalil", "kjfakhouri@gmail.com", (byte) 21)); - } } diff --git a/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/WebConfig.java b/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/WebConfig.java new file mode 100644 index 0000000..0030d2a --- /dev/null +++ b/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/WebConfig.java @@ -0,0 +1,17 @@ +package br.com.entra21.teamroxo.TMSProject; + +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +public class WebConfig implements WebMvcConfigurer { + + @Override + public void addCorsMappings(CorsRegistry registry) { + + registry.addMapping("/**") + .allowedOrigins("*") + .allowedMethods("GET", "POST", "DELETE", "PUT"); + + } + +} diff --git a/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/controllers/LoginController.java b/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/controllers/LoginController.java new file mode 100644 index 0000000..61ae14b --- /dev/null +++ b/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/controllers/LoginController.java @@ -0,0 +1,86 @@ +package br.com.entra21.teamroxo.TMSProject.controllers; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestController; + +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +import br.com.entra21.teamroxo.TMSProject.TmsProjectApplication; +import br.com.entra21.teamroxo.TMSProject.interfaces.PessoaRepository; +import br.com.entra21.teamroxo.TMSProject.template.ItemNivel3; +import br.com.entra21.teamroxo.TMSProject.template.Login; +import br.com.entra21.teamroxo.TMSProject.template.Pessoa; + +@RestController +@CrossOrigin(origins = "*") +@RequestMapping("/login") +public class LoginController { + + private final String PATH = "http://localhost:8080/login"; + + @Autowired + private PessoaRepository pessoaRepository; + + @PostMapping() + @ResponseStatus(code = HttpStatus.OK) + public @ResponseBody List login(@RequestBody Login credentials){ + + List response = new ArrayList(pessoaRepository.findAll()).stream() + .filter(login -> (login.getUser().equals(credentials.getUser())) && + login.getSenha().equals(credentials.getSenha())) + .toList(); + response.forEach(pessoa -> { + setMaturidadeLvl3(pessoa); + }); + + return response; + + } + + @PostMapping("/register") + @ResponseStatus(code = HttpStatus.CREATED) + public @ResponseBody Pessoa register(@RequestBody Pessoa credentials){ + return pessoaRepository.save(credentials); + } + + private void setMaturidadeLvl3(Login pessoa) { + + ArrayList headers = new ArrayList<>(Arrays.asList( + + "Accept:application/json", + "Content-Type:application/json" + + )); + + ObjectMapper mapper = new ObjectMapper(); + + mapper.setSerializationInclusion(Include.NON_NULL); + + pessoa.setLinks(null); + + try { + + String json = mapper.writeValueAsString(pessoa); + pessoa.setLinks(new ArrayList<>()); + pessoa.getLinks().add(new ItemNivel3("POST", PATH+"/login", headers, json)); + + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + + } + +} diff --git a/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/controllers/PessoaController.java b/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/controllers/PessoaController.java index af35037..7e34830 100644 --- a/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/controllers/PessoaController.java +++ b/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/controllers/PessoaController.java @@ -3,10 +3,13 @@ import java.util.ArrayList; import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; @@ -15,25 +18,34 @@ import com.fasterxml.jackson.databind.ObjectMapper; import br.com.entra21.teamroxo.TMSProject.TmsProjectApplication; +import br.com.entra21.teamroxo.TMSProject.interfaces.PessoaRepository; import br.com.entra21.teamroxo.TMSProject.template.ItemNivel3; import br.com.entra21.teamroxo.TMSProject.template.Pessoa; @RestController @CrossOrigin(origins = "*") -@RequestMapping("/login") +@RequestMapping("/user") public class PessoaController { - private final String PATH = "http://localhost:8080/pessoas"; + private final String PATH = "http://localhost:8080/users"; + + @Autowired + private PessoaRepository pessoaRepository; @GetMapping() @ResponseStatus(code = HttpStatus.OK) public ListlistAll(){ return obterListaCompleta(); } + + @GetMapping("/{user}") + public Listlist(@PathVariable String user){ + return null; + } private List obterListaCompleta() { - List response = TmsProjectApplication.pessoas.stream().toList(); + List response = pessoaRepository.findAll(); response.forEach(pessoa -> { setMaturidadeNivel3(pessoa); }); diff --git a/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/interfaces/PessoaRepository.java b/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/interfaces/PessoaRepository.java new file mode 100644 index 0000000..d8d0095 --- /dev/null +++ b/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/interfaces/PessoaRepository.java @@ -0,0 +1,9 @@ +package br.com.entra21.teamroxo.TMSProject.interfaces; + +import org.springframework.data.jpa.repository.JpaRepository; + +import br.com.entra21.teamroxo.TMSProject.template.Pessoa; + +public interface PessoaRepository extends JpaRepository { + +} diff --git a/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/template/Login.java b/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/template/Login.java new file mode 100644 index 0000000..c1f46da --- /dev/null +++ b/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/template/Login.java @@ -0,0 +1,54 @@ +package br.com.entra21.teamroxo.TMSProject.template; + +public class Login extends MaturidadeNivel3Richardson { + + private String user; + private String senha; + private boolean admin; + private boolean enterprise; + + public Login() { + super(); + } + + public Login(String user, String senha, boolean admin, boolean enterprise) { + super(); + this.user = user; + this.senha = senha; + this.admin = admin; + this.enterprise = enterprise; + } + + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } + + public String getSenha() { + return senha; + } + + public void setSenha(String senha) { + this.senha = senha; + } + + public boolean isAdmin() { + return admin; + } + + public void setAdmin(boolean admin) { + this.admin = admin; + } + + public boolean isEnterprise() { + return enterprise; + } + + public void setEnterprise(boolean enterprise) { + this.enterprise = enterprise; + } + +} diff --git a/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/template/Pessoa.java b/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/template/Pessoa.java index 888198d..68bbefe 100644 --- a/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/template/Pessoa.java +++ b/backend/TMSProject/src/main/java/br/com/entra21/teamroxo/TMSProject/template/Pessoa.java @@ -1,42 +1,52 @@ package br.com.entra21.teamroxo.TMSProject.template; -public class Pessoa extends MaturidadeNivel3Richardson{ +import java.time.LocalDate; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = "pessoa") +public class Pessoa extends Login { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; private String nome; private String email; - private byte idade; - - - - //CONSTRUCTORS + private LocalDate birth; + private long document; public Pessoa() { super(); } - - public Pessoa(String nome, String email, byte idade) { + + public Pessoa(Integer id, String nome, String email, LocalDate birth, long document) { super(); + this.id = id; this.nome = nome; - this.idade = idade; this.email = email; + this.birth = birth; + this.document = document; } - - // GETTERS... - public String getNome() { - return nome; + public Integer getId() { + return id; } - public void setNome(String nome) { - this.nome = nome; + public void setId(Integer id) { + this.id = id; } - public int getIdade() { - return idade; + public String getNome() { + return nome; } - public void setIdade(byte idade) { - this.idade = idade; + public void setNome(String nome) { + this.nome = nome; } public String getEmail() { @@ -46,5 +56,21 @@ public String getEmail() { public void setEmail(String email) { this.email = email; } + + public LocalDate getBirth() { + return birth; + } + + public void setBirth(LocalDate birth) { + this.birth = birth; + } + + public long getDocument() { + return document; + } + + public void setDocument(long document) { + this.document = document; + } } diff --git a/backend/TMSProject/src/main/resources/application.properties b/backend/TMSProject/src/main/resources/application.properties index 8b13789..a55f04f 100644 --- a/backend/TMSProject/src/main/resources/application.properties +++ b/backend/TMSProject/src/main/resources/application.properties @@ -1 +1,16 @@ +spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase +spring.datasource.username=root + +spring.datasource.password=Mr_kak4k0ur1 + + +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver + +spring.jpa.hibernate.ddl-auto=update + +spring.jpa.show-sql=true + +spring.jpa.properties.hibernate.format_sql=true + +spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57InnoDBDialect diff --git a/frontend/main/src/app/home/home.component.css b/frontend/main/src/app/home/home.component.css index d41e7ca..47930f1 100644 --- a/frontend/main/src/app/home/home.component.css +++ b/frontend/main/src/app/home/home.component.css @@ -14,3 +14,11 @@ transition: ease-in-out 200ms ; color: lightslategrey; } +.card-title{ + color: white; +} +#card-body-dash:hover{ + cursor: pointer; +} +.card-body:hover{ +} diff --git a/frontend/main/src/app/home/home.component.html b/frontend/main/src/app/home/home.component.html index 8afae69..40847b6 100644 --- a/frontend/main/src/app/home/home.component.html +++ b/frontend/main/src/app/home/home.component.html @@ -15,8 +15,8 @@

Where do you want to go?

-
-

+ @@ -60,7 +60,7 @@

  Packages

-

  Finance

+

  Finance


  • diff --git a/frontend/main/src/app/login/login.component.html b/frontend/main/src/app/login/login.component.html index a95f153..84e655c 100644 --- a/frontend/main/src/app/login/login.component.html +++ b/frontend/main/src/app/login/login.component.html @@ -36,6 +36,11 @@

    Sign Up

    autocomplete="on" [(ngModel)]="nameReg" required (keyup.enter)="register()" [disabled]="loginService.progress">
+
+ + +
diff --git a/frontend/main/src/app/login/login.component.ts b/frontend/main/src/app/login/login.component.ts index b55c52f..cc04348 100644 --- a/frontend/main/src/app/login/login.component.ts +++ b/frontend/main/src/app/login/login.component.ts @@ -12,6 +12,7 @@ export class LoginComponent implements OnInit { emailReg!:string nameReg!:string + userReg!:string passwordReg!:string user!:string @@ -47,14 +48,14 @@ export class LoginComponent implements OnInit { register(){ if(this.nameReg != null && this.emailReg != null && this.passwordReg != null){ - this.loginService.registering(this.nameReg, this.emailReg, this.passwordReg) + this.loginService.registering(this.nameReg, this.userReg , this.emailReg, this.passwordReg) .pipe( catchError((error)=>{ - return of(['Deu erro parcero é isso', 'tu não vai encontrar detalhe aqui','pode sair já...', error, 'só pq sou teu amigo vou deixar esse error ai']) + return of(['Error!', error]) }) ) - .subscribe((response)=>{ - console.log('Running...', response); + .subscribe((response:any)=>{ + console.log('Successful Login!'); }); }else{ alert('DIGITE TODOS OS CAMPOS OBRIGATÓRIOS!') diff --git a/frontend/main/src/app/loginservice.service.ts b/frontend/main/src/app/loginservice.service.ts index 13b7fa0..86c3c97 100644 --- a/frontend/main/src/app/loginservice.service.ts +++ b/frontend/main/src/app/loginservice.service.ts @@ -1,8 +1,8 @@ -import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { InjectSetupWrapper } from '@angular/core/testing'; import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router'; -import { Observable } from 'rxjs'; +import { catchError, Observable } from 'rxjs'; import { LoginComponent } from './login/login.component'; @Injectable({ @@ -11,7 +11,7 @@ import { LoginComponent } from './login/login.component'; export class LoginserviceService implements CanActivate { user!: string - TMSLoginAPI: string = "https://randomuser.me/api/?results=1" + TMSLoginAPI: string = "http://localhost:8080" succeed!: boolean progress: boolean = false @@ -37,24 +37,28 @@ export class LoginserviceService implements CanActivate { return this.http.get(this.TMSLoginAPI + '/' + user + '/' + password) } - registering(user: string, password: string, email: string) { + registering(name:string ,user: string, password: string, email: string) { + this.progress = true - fetch(this.TMSLoginAPI) - .then((resp) => resp.json()) - .then((data) => { - let ranUsers = data.results; - return ranUsers.map((ranUser: any) => { - this.user = `${ranUser.name.first}` - this.succeed = true - new LoginComponent(this.router, this).gotoHome() - }) - }) - .catch((error) => { - console.log(error); - this.progress = false + + let build:any = { + 'name':name, + 'user':user, + 'password':password, + 'email':email + } + + this.http.post(this.TMSLoginAPI+'/register', build) + .pipe( + catchError((error)=>{ + return error }) + ) + .subscribe((response)=>{ + return response + }) - return this.http.get(this.TMSLoginAPI + '/' + user + '/' + password) + return build } diff --git a/frontend/main/src/index.html b/frontend/main/src/index.html index 6c9a21f..85c2739 100644 --- a/frontend/main/src/index.html +++ b/frontend/main/src/index.html @@ -7,7 +7,7 @@ - +