Skip to content

Commit fb74aba

Browse files
committed
EmployeeController
1 parent 00d4dc0 commit fb74aba

15 files changed

+168
-108
lines changed

pom.xml

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,6 @@
5252
<version>0.11.5</version>
5353
<scope>runtime</scope>
5454
</dependency>
55-
<dependency>
56-
<groupId>org.springframework.boot</groupId>
57-
<artifactId>spring-boot-starter-test</artifactId>
58-
<scope>test</scope>
59-
</dependency>
6055
<dependency>
6156
<groupId>org.postgresql</groupId>
6257
<artifactId>postgresql</artifactId>
@@ -74,6 +69,18 @@
7469
<groupId>org.springframework.boot</groupId>
7570
<artifactId>spring-boot-starter-security</artifactId>
7671
</dependency>
72+
<!-- <dependency>
73+
<groupId>io.springfox</groupId>
74+
<artifactId>springfox-swagger2</artifactId>
75+
<version>2.4.0</version>
76+
</dependency>
77+
78+
<dependency>
79+
<groupId>io.springfox</groupId>
80+
<artifactId>springfox-boot-starter</artifactId>
81+
<version>3.0.0</version>
82+
</dependency> -->
83+
7784
</dependencies>
7885
<build>
7986
<plugins>

src/main/java/com/skia/lab/LabApplication.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
import org.springframework.boot.SpringApplication;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
55

6+
// import springfox.documentation.swagger2.annotations.EnableSwagger2;
7+
8+
// @EnableSwagger2
69
@SpringBootApplication
710
public class LabApplication {
811

src/main/java/com/skia/lab/controllers/AuthController.java

Lines changed: 35 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,6 @@
3232
import com.skia.lab.security.jwt.JwtUtils;
3333
import com.skia.lab.security.services.UserDetailsImpl;
3434

35-
36-
37-
38-
39-
4035
@CrossOrigin(origins = "*", maxAge = 3600)
4136
@RestController
4237
@RequestMapping("/api/auth")
@@ -57,11 +52,11 @@ public class AuthController {
5752
JwtUtils jwtUtils;
5853

5954
// /api/auth/signin
60-
// authenticate { username, pasword }
61-
// update SecurityContext using Authentication object
62-
// generate JWT
63-
// get UserDetails from Authentication object
64-
// response contains JWT and UserDetails data
55+
// authenticate { username, pasword }
56+
// update SecurityContext using Authentication object
57+
// generate JWT
58+
// get UserDetails from Authentication object
59+
// response contains JWT and UserDetails data
6560
@PostMapping("/signin")
6661
public ResponseEntity<?> authenticateUser(@Valid @RequestBody LoginRequest loginRequest) {
6762

@@ -70,24 +65,23 @@ public ResponseEntity<?> authenticateUser(@Valid @RequestBody LoginRequest login
7065

7166
SecurityContextHolder.getContext().setAuthentication(authentication);
7267
String jwt = jwtUtils.generateJwtToken(authentication);
73-
74-
UserDetailsImpl userDetails = (UserDetailsImpl) authentication.getPrincipal();
68+
69+
UserDetailsImpl userDetails = (UserDetailsImpl) authentication.getPrincipal();
7570
List<String> roles = userDetails.getAuthorities().stream()
7671
.map(item -> item.getAuthority())
7772
.collect(Collectors.toList());
7873

79-
return ResponseEntity.ok(new JwtResponse(jwt,
80-
userDetails.getId(),
81-
userDetails.getUsername(),
82-
userDetails.getEmail(),
83-
roles));
74+
return ResponseEntity.ok(new JwtResponse(jwt,
75+
userDetails.getId(),
76+
userDetails.getUsername(),
77+
userDetails.getEmail(),
78+
roles));
8479
}
8580

86-
87-
// /api/auth/signup
88-
// check existing username/email
89-
// create new User (with ROLE_USER if not specifying role)
90-
// save User to database using UserRepository
81+
// /api/auth/signup
82+
// check existing username/email
83+
// create new User (with ROLE_USER if not specifying role)
84+
// save User to database using UserRepository
9185
@PostMapping("/signup")
9286
public ResponseEntity<?> registerUser(@Valid @RequestBody SignupRequest signUpRequest) {
9387
if (userRepository.existsByUsername(signUpRequest.getUsername())) {
@@ -103,9 +97,9 @@ public ResponseEntity<?> registerUser(@Valid @RequestBody SignupRequest signUpRe
10397
}
10498

10599
// Create new user's account
106-
User user = new User(signUpRequest.getUsername(),
107-
signUpRequest.getEmail(),
108-
encoder.encode(signUpRequest.getPassword()));
100+
User user = new User(signUpRequest.getUsername(),
101+
signUpRequest.getEmail(),
102+
encoder.encode(signUpRequest.getPassword()));
109103

110104
Set<String> strRoles = signUpRequest.getRole();
111105
Set<Role> roles = new HashSet<>();
@@ -117,22 +111,22 @@ public ResponseEntity<?> registerUser(@Valid @RequestBody SignupRequest signUpRe
117111
} else {
118112
strRoles.forEach(role -> {
119113
switch (role) {
120-
case "admin":
121-
Role adminRole = roleRepository.findByName(ERole.ROLE_ADMIN)
122-
.orElseThrow(() -> new RuntimeException("Error: Role is not found."));
123-
roles.add(adminRole);
124-
125-
break;
126-
case "mod":
127-
Role modRole = roleRepository.findByName(ERole.ROLE_MODERATOR)
128-
.orElseThrow(() -> new RuntimeException("Error: Role is not found."));
129-
roles.add(modRole);
130-
131-
break;
132-
default:
133-
Role userRole = roleRepository.findByName(ERole.ROLE_USER)
134-
.orElseThrow(() -> new RuntimeException("Error: Role is not found."));
135-
roles.add(userRole);
114+
case "admin":
115+
Role adminRole = roleRepository.findByName(ERole.ROLE_ADMIN)
116+
.orElseThrow(() -> new RuntimeException("Error: Role is not found."));
117+
roles.add(adminRole);
118+
119+
break;
120+
case "mod":
121+
Role modRole = roleRepository.findByName(ERole.ROLE_MODERATOR)
122+
.orElseThrow(() -> new RuntimeException("Error: Role is not found."));
123+
roles.add(modRole);
124+
125+
break;
126+
default:
127+
Role userRole = roleRepository.findByName(ERole.ROLE_USER)
128+
.orElseThrow(() -> new RuntimeException("Error: Role is not found."));
129+
roles.add(userRole);
136130
}
137131
});
138132
}
Lines changed: 72 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
package com.skia.lab.controllers.usecase;
12

23
import org.springframework.beans.factory.annotation.Autowired;
34
import org.springframework.http.HttpStatus;
@@ -7,66 +8,106 @@
78
import com.skia.lab.models.usecase.Employee;
89
import com.skia.lab.repository.usecase.EmployeeRepository;
910

11+
import java.util.ArrayList;
1012
import java.util.List;
13+
import java.util.Optional;
1114

15+
//@CrossOrigin(origins = "http://localhost:8081")
1216
@RestController
13-
@RequestMapping("/employees")
17+
@RequestMapping("/api/employee")
1418
public class EmployeeController {
1519

16-
1720
@Autowired
1821
EmployeeRepository employeeRepository;
1922

20-
@Autowired
21-
public EmployeeController(EmployeeRepository employeeRepository) {
22-
this.employeeRepository = employeeRepository;
23-
}
23+
// @Autowired
24+
// public EmployeeController(EmployeeRepository employeeRepository) {
25+
// this.employeeRepository = employeeRepository;
26+
// }
2427

2528
@PostMapping
2629
public ResponseEntity<Employee> createEmployee(@RequestBody Employee employee) {
27-
Employee createdEmployee = employeeRepository.createEmployee(employee);
28-
return ResponseEntity.status(HttpStatus.CREATED).body(createdEmployee);
30+
try {
31+
Employee _employee = employeeRepository
32+
.save(new Employee(employee.getFirstName(), employee.getLastName(), employee.getBirthDate(),
33+
employee.getAddress(), employee.getPhoneNumber(), employee.getEmail()));
34+
return new ResponseEntity<>(_employee, HttpStatus.CREATED);
35+
} catch (Exception e) {
36+
return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR);
37+
}
2938
}
3039

3140
@GetMapping("/{id}")
32-
public ResponseEntity<Employee> getEmployee(@PathVariable Long id) {
33-
Employee employee = employeeRepository.getEmployee(id);
34-
if (employee != null) {
35-
return ResponseEntity.ok(employee);
41+
public ResponseEntity<Employee> getEmployeeById(@PathVariable Long id) {
42+
Optional<Employee> employeeData = employeeRepository.findById(id);
43+
if (employeeData.isPresent()) {
44+
return new ResponseEntity<>(employeeData.get(), HttpStatus.OK);
3645
} else {
37-
return ResponseEntity.notFound().build();
46+
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
3847
}
3948
}
4049

41-
@GetMapping
42-
public ResponseEntity<List<Employee>> getAllEmployees() {
43-
List<Employee> employees = employeeRepository.getAllEmployees();
44-
return ResponseEntity.ok(employees);
50+
@GetMapping("/")
51+
public ResponseEntity<List<Employee>> getAllEmployees(@RequestParam(required = false) Long departmentId,
52+
@RequestParam(required = false) Long managerId) {
53+
54+
try {
55+
List<Employee> employee = new ArrayList<Employee>();
56+
57+
if (departmentId != null && managerId == null)
58+
employeeRepository.findByDepartmentId(departmentId).forEach(employee::add);
59+
else if (departmentId == null && managerId != null)
60+
employeeRepository.findByManagerId(managerId).forEach(employee::add);
61+
else
62+
employeeRepository.findAll().forEach(employee::add);
63+
64+
if (employee.isEmpty()) {
65+
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
66+
}
67+
68+
return new ResponseEntity<>(employee, HttpStatus.OK);
69+
} catch (Exception e) {
70+
return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR);
71+
}
72+
4573
}
4674

4775
@PutMapping("/{id}")
4876
public ResponseEntity<Employee> updateEmployee(@PathVariable Long id, @RequestBody Employee employee) {
49-
Employee updatedEmployee = employeeRepository.updateEmployee(id, employee);
50-
if (updatedEmployee != null) {
51-
return ResponseEntity.ok(updatedEmployee);
77+
Optional<Employee> employeeData = employeeRepository.findById(id);
78+
79+
if (employeeData.isPresent()) {
80+
Employee _employee = employeeData.get();
81+
_employee.setFirstName(employee.getFirstName());
82+
_employee.setLastName(employee.getLastName());
83+
_employee.setBirthDate(employee.getBirthDate());
84+
_employee.setAddress(employee.getAddress());
85+
_employee.setPhoneNumber(employee.getPhoneNumber());
86+
_employee.setEmail(employee.getEmail());
87+
return new ResponseEntity<>(employeeRepository.save(_employee), HttpStatus.OK);
5288
} else {
53-
return ResponseEntity.notFound().build();
89+
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
5490
}
5591
}
5692

5793
@DeleteMapping("/{id}")
5894
public ResponseEntity<Void> deleteEmployee(@PathVariable Long id) {
59-
boolean deleted = employeeRepository.deleteEmployee(id);
60-
if (deleted) {
61-
return ResponseEntity.noContent().build();
62-
} else {
63-
return ResponseEntity.notFound().build();
95+
try {
96+
employeeRepository.deleteById(id);
97+
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
98+
} catch (Exception e) {
99+
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
64100
}
65101
}
66102

67-
@GetMapping("/search")
68-
public ResponseEntity<List<Employee>> findEmployees(@RequestParam String query) {
69-
List<Employee> employees = employeeRepository.findEmployees(query);
70-
return ResponseEntity.ok(employees);
71-
}
103+
// @GetMapping("/search")
104+
// public ResponseEntity<List<Employee>> findEmployees(@RequestParam String query) {
105+
// List<Employee> employees = employeeRepository.findEmployees(query);
106+
// return ResponseEntity.ok(employees);
107+
// }
108+
109+
//setmanager
110+
111+
//setDepartment
112+
72113
}

src/main/java/com/skia/lab/models/usecase/Department.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.skia.lab.models.usecase;
22

3-
43
import java.util.List;
54

65
import jakarta.persistence.*;
@@ -11,15 +10,15 @@ public class Department {
1110
@Id
1211
@GeneratedValue(strategy = GenerationType.IDENTITY)
1312
private Long id;
14-
13+
1514
private String name;
16-
15+
1716
// Relationships
1817
@OneToMany(mappedBy = "department", cascade = CascadeType.ALL, orphanRemoval = true)
1918
private List<Employee> employees;
20-
19+
2120
// Getters and Setters
22-
21+
2322
/**
2423
* @return Long return the id
2524
*/
@@ -63,4 +62,3 @@ public void setEmployees(List<Employee> employees) {
6362
}
6463

6564
}
66-

src/main/java/com/skia/lab/models/usecase/Employee.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
@Table(name = "employees")
99
public class Employee {
1010
@Id
11-
@GeneratedValue(strategy = GenerationType.IDENTITY)
11+
@GeneratedValue(strategy = GenerationType.AUTO)
1212
private Long id;
1313

1414
private String firstName;
@@ -27,6 +27,24 @@ public class Employee {
2727
@JoinColumn(name = "manager_id")
2828
private Employee manager;
2929

30+
public Employee(String firstName, String lastName, LocalDate dateOfBirth, String email) {
31+
this.firstName = firstName;
32+
this.lastName = lastName;
33+
this.birthDate = dateOfBirth;
34+
this.email = email;
35+
}
36+
37+
public Employee(String firstName, String lastName, LocalDate dateOfBirth, String address,
38+
String phoneNumber, String email) {
39+
40+
this.firstName = firstName;
41+
this.lastName = lastName;
42+
this.birthDate = dateOfBirth;
43+
this.address = address;
44+
this.phoneNumber = phoneNumber;
45+
this.email = email;
46+
}
47+
3048
// Getters and Setters
3149

3250
public Long getId() {

src/main/java/com/skia/lab/models/usecase/Training.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.skia.lab.models.usecase;
22

33
import java.time.LocalDate;
4-
54
import jakarta.persistence.Column;
65
import jakarta.persistence.Entity;
76
import jakarta.persistence.FetchType;

src/main/java/com/skia/lab/models/usecase/Wages.java renamed to src/main/java/com/skia/lab/models/usecase/Wage.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
package com.skia.lab.models.usecase;
22

33
import java.time.LocalDate;
4-
54
import jakarta.persistence.Column;
5+
import jakarta.persistence.Entity;
66
import jakarta.persistence.FetchType;
77
import jakarta.persistence.GeneratedValue;
88
import jakarta.persistence.GenerationType;
99
import jakarta.persistence.Id;
1010
import jakarta.persistence.JoinColumn;
1111
import jakarta.persistence.ManyToOne;
12+
import jakarta.persistence.Table;
1213

13-
public class Wages {
14+
@Entity
15+
@Table(name = "wages")
16+
public class Wage {
1417
@Id
1518
@GeneratedValue(strategy = GenerationType.IDENTITY)
1619
private Long id;

0 commit comments

Comments
 (0)