diff --git a/src/main/java/com/devsuperior/bds01/controllers/DepartmentController.java b/src/main/java/com/devsuperior/bds01/controllers/DepartmentController.java new file mode 100644 index 0000000..ad2f43c --- /dev/null +++ b/src/main/java/com/devsuperior/bds01/controllers/DepartmentController.java @@ -0,0 +1,30 @@ +package com.devsuperior.bds01.controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.devsuperior.bds01.dto.DepartmentDTO; +import com.devsuperior.bds01.services.DepartmentService; + +@RestController +@RequestMapping(value = "/departments") +public class DepartmentController { + + @Autowired + DepartmentService departmentService; + + @GetMapping + public ResponseEntity> findAll(){ + + List listDepartment = departmentService.findAll(); + + return ResponseEntity.ok().body(listDepartment); + } + + +} diff --git a/src/main/java/com/devsuperior/bds01/controllers/EmployeeController.java b/src/main/java/com/devsuperior/bds01/controllers/EmployeeController.java new file mode 100644 index 0000000..348bb53 --- /dev/null +++ b/src/main/java/com/devsuperior/bds01/controllers/EmployeeController.java @@ -0,0 +1,51 @@ +package com.devsuperior.bds01.controllers; + +import java.net.URI; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +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.RestController; +import org.springframework.web.servlet.support.ServletUriComponentsBuilder; + +import com.devsuperior.bds01.dto.EmployeeDTO; +import com.devsuperior.bds01.services.EmployeeService; + + +@RestController +@RequestMapping(value = "/employees") +public class EmployeeController { + + @Autowired + EmployeeService employeeService; + + @GetMapping + ResponseEntity> findAll(Pageable pageable){ + PageRequest pageRequest = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.by("name")); + + Page pageEmployess = employeeService.findAll(pageRequest); + + return ResponseEntity.ok().body(pageEmployess); + } + + @PostMapping + ResponseEntity insert(@RequestBody EmployeeDTO employee) { + EmployeeDTO newEmployeeDto = employeeService.insert(employee); + + URI uri = ServletUriComponentsBuilder.fromCurrentRequest() + .path("/{id}") + .buildAndExpand(newEmployeeDto.getId()) + .toUri(); + + return ResponseEntity.created(uri).body(newEmployeeDto); // o método created, retorna um status 201, criado. + + } + +} diff --git a/src/main/java/com/devsuperior/bds01/dto/DepartmentDTO.java b/src/main/java/com/devsuperior/bds01/dto/DepartmentDTO.java new file mode 100644 index 0000000..233a7bd --- /dev/null +++ b/src/main/java/com/devsuperior/bds01/dto/DepartmentDTO.java @@ -0,0 +1,45 @@ +package com.devsuperior.bds01.dto; + +import java.io.Serializable; + +import com.devsuperior.bds01.entities.Department; + +public class DepartmentDTO implements Serializable{ + private static final long serialVersionUID = 1L; + + public Long id; + public String name; + + + public DepartmentDTO () { + } + + public DepartmentDTO(Long id, String name) { + this.id = id; + this.name = name; + } + + + public DepartmentDTO(Department entity) { + id = entity.getId(); + name = entity.getName(); + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + +} diff --git a/src/main/java/com/devsuperior/bds01/repositories/DepartmentRepository.java b/src/main/java/com/devsuperior/bds01/repositories/DepartmentRepository.java new file mode 100644 index 0000000..f5a1d25 --- /dev/null +++ b/src/main/java/com/devsuperior/bds01/repositories/DepartmentRepository.java @@ -0,0 +1,9 @@ +package com.devsuperior.bds01.repositories; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.devsuperior.bds01.entities.Department; + +public interface DepartmentRepository extends JpaRepository { + +} diff --git a/src/main/java/com/devsuperior/bds01/repositories/EmployeeRepository.java b/src/main/java/com/devsuperior/bds01/repositories/EmployeeRepository.java new file mode 100644 index 0000000..fb5a1a2 --- /dev/null +++ b/src/main/java/com/devsuperior/bds01/repositories/EmployeeRepository.java @@ -0,0 +1,9 @@ +package com.devsuperior.bds01.repositories; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.devsuperior.bds01.entities.Employee; + +public interface EmployeeRepository extends JpaRepository { + +} diff --git a/src/main/java/com/devsuperior/bds01/services/DepartmentService.java b/src/main/java/com/devsuperior/bds01/services/DepartmentService.java new file mode 100644 index 0000000..47fac01 --- /dev/null +++ b/src/main/java/com/devsuperior/bds01/services/DepartmentService.java @@ -0,0 +1,28 @@ +package com.devsuperior.bds01.services; + +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; + +import com.devsuperior.bds01.dto.DepartmentDTO; +import com.devsuperior.bds01.entities.Department; +import com.devsuperior.bds01.repositories.DepartmentRepository; + +@Service +public class DepartmentService { + + @Autowired + public DepartmentRepository departmentRepository; + + public List findAll() { + List listDepartment = departmentRepository.findAll(Sort.by("name")); + + List listDepartmentDto = listDepartment.stream().map(x -> new DepartmentDTO(x)).collect(Collectors.toList()); + + return listDepartmentDto; + } + +} diff --git a/src/main/java/com/devsuperior/bds01/services/EmployeeService.java b/src/main/java/com/devsuperior/bds01/services/EmployeeService.java new file mode 100644 index 0000000..b595e2a --- /dev/null +++ b/src/main/java/com/devsuperior/bds01/services/EmployeeService.java @@ -0,0 +1,43 @@ +package com.devsuperior.bds01.services; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.devsuperior.bds01.dto.EmployeeDTO; +import com.devsuperior.bds01.entities.Department; +import com.devsuperior.bds01.entities.Employee; +import com.devsuperior.bds01.repositories.EmployeeRepository; + +@Service +public class EmployeeService { + + @Autowired + EmployeeRepository employeeRepository; + + @Transactional(readOnly = true) + public Page findAll(Pageable pageable ) { + Page pageEmployee = employeeRepository.findAll(pageable); + + Page pageEmployeeDto = pageEmployee.map(x -> new EmployeeDTO(x)); + + return pageEmployeeDto; + + } + + public EmployeeDTO insert(EmployeeDTO employee) { + + Employee newEmployee = new Employee(); + + newEmployee.setName(employee.getName()); + newEmployee.setEmail(employee.getEmail()); + newEmployee.setDepartment(new Department(employee.getDepartmentId(), "Desenvolvimento")); + + newEmployee = employeeRepository.save(newEmployee); + + return new EmployeeDTO(newEmployee); + } + +}