From 92f77370ae82fc2da40a270549df0e2a6b75277b Mon Sep 17 00:00:00 2001 From: prodigygirl Date: Sun, 2 Apr 2023 12:16:33 +0400 Subject: [PATCH] lab4 --- .../lab3/controller/CompanyController.java | 19 ++++++++++++++- .../lab3/controller/EmployeeController.java | 23 ++++++++++++++++++- .../example/springip/lab3/models/Company.java | 13 +++++------ .../springip/lab3/models/Employee.java | 4 +++- .../springip/lab3/service/CompanyService.java | 8 +++---- .../lab3/service/EmployeeService.java | 8 +++---- 6 files changed, 57 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/example/springip/lab3/controller/CompanyController.java b/src/main/java/com/example/springip/lab3/controller/CompanyController.java index c874c05..70fcaa4 100644 --- a/src/main/java/com/example/springip/lab3/controller/CompanyController.java +++ b/src/main/java/com/example/springip/lab3/controller/CompanyController.java @@ -2,7 +2,9 @@ package com.example.springip.lab3.controller; import com.example.springip.lab3.dto.CompanyDto; import com.example.springip.lab3.dto.EmployeeDto; +import com.example.springip.lab3.models.Employee; import com.example.springip.lab3.service.CompanyService; +import com.example.springip.lab3.service.EmployeeService; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -11,9 +13,11 @@ import java.util.List; @RequestMapping("/company") public class CompanyController { private final CompanyService companyService; + private final EmployeeService employeeService; - public CompanyController(CompanyService companyService) { + public CompanyController(CompanyService companyService, EmployeeService employeeService) { this.companyService = companyService; + this.employeeService = employeeService; } @GetMapping("/{id}") @@ -43,4 +47,17 @@ public class CompanyController { public CompanyDto delete(@PathVariable Long id) { return new CompanyDto(companyService.deleteCompany(id)); } + + @PutMapping("/{id}/hire") + public EmployeeDto hire(@PathVariable Long id, @RequestParam Long employeeId) { + Employee e = employeeService.findEmployee(employeeId); + return new EmployeeDto(companyService.addNewEmployee(id, e)); + } + + @PutMapping("/{id}/dismiss") + public EmployeeDto dismiss(@PathVariable Long id, @RequestParam Long employeeId) { + Employee e = employeeService.findEmployee(employeeId); + return new EmployeeDto(companyService.deleteEmployee(id, e)); + } + } diff --git a/src/main/java/com/example/springip/lab3/controller/EmployeeController.java b/src/main/java/com/example/springip/lab3/controller/EmployeeController.java index ff15952..68ba6fb 100644 --- a/src/main/java/com/example/springip/lab3/controller/EmployeeController.java +++ b/src/main/java/com/example/springip/lab3/controller/EmployeeController.java @@ -1,7 +1,9 @@ package com.example.springip.lab3.controller; import com.example.springip.lab3.dto.EmployeeDto; +import com.example.springip.lab3.models.Position; import com.example.springip.lab3.service.EmployeeService; +import com.example.springip.lab3.service.PositionService; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -10,9 +12,11 @@ import java.util.List; @RequestMapping("/employee") public class EmployeeController { private final EmployeeService employeeService; + private final PositionService positionService; - public EmployeeController(EmployeeService employeeService) { + public EmployeeController(EmployeeService employeeService, PositionService positionService) { this.employeeService = employeeService; + this.positionService = positionService; } @GetMapping("/{id}") @@ -49,4 +53,21 @@ public class EmployeeController { public EmployeeDto deleteEmployee(@PathVariable Long id) { return new EmployeeDto(employeeService.deleteEmployee(id)); } + + @PutMapping("/{id}/addPos") + public EmployeeDto addPosition(@PathVariable Long id, + @RequestParam("position") Long position) { + Position p = positionService.findPosition(position); + if (p == null) + return null; + return new EmployeeDto(employeeService.addPosition(id, p)); + } + @PutMapping("/{id}/delPos") + public EmployeeDto delPosition(@PathVariable Long id, + @RequestParam("position") Long position) { + Position p = positionService.findPosition(position); + if (p == null) + return null; + return new EmployeeDto(employeeService.deletePosition(id, p)); + } } diff --git a/src/main/java/com/example/springip/lab3/models/Company.java b/src/main/java/com/example/springip/lab3/models/Company.java index bf5a9ba..2686eb1 100644 --- a/src/main/java/com/example/springip/lab3/models/Company.java +++ b/src/main/java/com/example/springip/lab3/models/Company.java @@ -1,10 +1,9 @@ package com.example.springip.lab3.models; +import com.fasterxml.jackson.annotation.JsonRootName; import jakarta.persistence.*; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import java.util.*; @Entity public class Company { @@ -14,9 +13,9 @@ public class Company { @Column(unique = true) private String name; @OneToMany(mappedBy = "company", cascade = CascadeType.ALL, fetch = FetchType.EAGER) - private List employees = new ArrayList<>(); + private Set employees = new HashSet<>(); - public Company(String name, List employees) { + public Company(String name, Set employees) { this.name = name; this.employees = employees; } @@ -51,11 +50,11 @@ public class Company { return Id; } - public List getEmployees() { + public Set getEmployees() { return employees; } - public void setEmployees(List employees) { + public void setEmployees(Set employees) { this.employees = employees; } diff --git a/src/main/java/com/example/springip/lab3/models/Employee.java b/src/main/java/com/example/springip/lab3/models/Employee.java index e6683d5..ad2ee11 100644 --- a/src/main/java/com/example/springip/lab3/models/Employee.java +++ b/src/main/java/com/example/springip/lab3/models/Employee.java @@ -1,5 +1,6 @@ package com.example.springip.lab3.models; +import com.fasterxml.jackson.annotation.JsonInclude; import jakarta.persistence.*; import java.util.*; @@ -20,7 +21,7 @@ public class Employee { private Set positions = new HashSet<>(); - public Employee(String phoneNumber, String name, String surname) { + public Employee(String surname, String name, String phoneNumber) { this.phoneNumber = phoneNumber; this.name = name; this.surname = surname; @@ -77,6 +78,7 @@ public class Employee { company.deleteEmployee(this); } this.company = null; + this.positions.clear(); } public void addNewPosition(Position p) { diff --git a/src/main/java/com/example/springip/lab3/service/CompanyService.java b/src/main/java/com/example/springip/lab3/service/CompanyService.java index a5a9c76..59123b6 100644 --- a/src/main/java/com/example/springip/lab3/service/CompanyService.java +++ b/src/main/java/com/example/springip/lab3/service/CompanyService.java @@ -70,17 +70,17 @@ public class CompanyService { } @Transactional - public void addNewEmployee(Long id, Employee employee) { + public Employee addNewEmployee(Long id, Employee employee) { Company currentCompany = findCompany(id); currentCompany.addNewEmployee(employee); companyRepository.save(currentCompany); + return employee; } @Transactional - public void deleteEmployee(Long id, Employee employee) { + public Employee deleteEmployee(Long id, Employee employee) { Company currentCompany = findCompany(id); currentCompany.deleteEmployee(employee); - //em.merge(employee); !!! - employeeRepository.save(employee); + return employeeRepository.save(employee); } } diff --git a/src/main/java/com/example/springip/lab3/service/EmployeeService.java b/src/main/java/com/example/springip/lab3/service/EmployeeService.java index 3b6fe4b..12dd04c 100644 --- a/src/main/java/com/example/springip/lab3/service/EmployeeService.java +++ b/src/main/java/com/example/springip/lab3/service/EmployeeService.java @@ -82,18 +82,18 @@ public class EmployeeService { } @Transactional - public void addPosition(Long id, Position p) { + public Employee addPosition(Long id, Position p) { Employee e = findEmployee(id); e.addNewPosition(p); System.out.println(e.getPositions().size()); - employeeRepository.save(e); + return employeeRepository.save(e); } @Transactional - public void deletePosition(Long id, Position p) { + public Employee deletePosition(Long id, Position p) { Employee e = findEmployee(id); e.removePosition(p); - employeeRepository.save(e); + return employeeRepository.save(e); } @Transactional