Skip to content

Commit 00d4dc0

Browse files
committed
implementation usecase: dataModel and controller
1 parent 5c9fe09 commit 00d4dc0

17 files changed

+898
-0
lines changed

UTILS.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Link:
2+
https://docs.spring.io/
3+
https://docs.spring.io/spring-security/
4+
https://www.tutorialspoint.com/postgresql/
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
2+
import org.springframework.beans.factory.annotation.Autowired;
3+
import org.springframework.http.HttpStatus;
4+
import org.springframework.http.ResponseEntity;
5+
import org.springframework.web.bind.annotation.*;
6+
7+
import com.skia.lab.models.usecase.Employee;
8+
import com.skia.lab.repository.usecase.EmployeeRepository;
9+
10+
import java.util.List;
11+
12+
@RestController
13+
@RequestMapping("/employees")
14+
public class EmployeeController {
15+
16+
17+
@Autowired
18+
EmployeeRepository employeeRepository;
19+
20+
@Autowired
21+
public EmployeeController(EmployeeRepository employeeRepository) {
22+
this.employeeRepository = employeeRepository;
23+
}
24+
25+
@PostMapping
26+
public ResponseEntity<Employee> createEmployee(@RequestBody Employee employee) {
27+
Employee createdEmployee = employeeRepository.createEmployee(employee);
28+
return ResponseEntity.status(HttpStatus.CREATED).body(createdEmployee);
29+
}
30+
31+
@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);
36+
} else {
37+
return ResponseEntity.notFound().build();
38+
}
39+
}
40+
41+
@GetMapping
42+
public ResponseEntity<List<Employee>> getAllEmployees() {
43+
List<Employee> employees = employeeRepository.getAllEmployees();
44+
return ResponseEntity.ok(employees);
45+
}
46+
47+
@PutMapping("/{id}")
48+
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);
52+
} else {
53+
return ResponseEntity.notFound().build();
54+
}
55+
}
56+
57+
@DeleteMapping("/{id}")
58+
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();
64+
}
65+
}
66+
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+
}
72+
}
Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
package com.skia.lab.models.usecase;
2+
3+
import java.time.LocalDate;
4+
import java.time.LocalTime;
5+
6+
import jakarta.persistence.Column;
7+
import jakarta.persistence.Entity;
8+
import jakarta.persistence.FetchType;
9+
import jakarta.persistence.GeneratedValue;
10+
import jakarta.persistence.GenerationType;
11+
import jakarta.persistence.Id;
12+
import jakarta.persistence.JoinColumn;
13+
import jakarta.persistence.ManyToOne;
14+
import jakarta.persistence.Table;
15+
16+
17+
@Entity
18+
@Table(name = "attendances")
19+
public class Attendance {
20+
@Id
21+
@GeneratedValue(strategy = GenerationType.IDENTITY)
22+
private Long id;
23+
24+
private LocalDate date;
25+
26+
@Column(name = "entry_time")
27+
private LocalTime entryTime;
28+
29+
@Column(name = "exit_time")
30+
private LocalTime exitTime;
31+
32+
@Column(name = "absence_type")
33+
private String absenceType;
34+
35+
// Relationships
36+
@ManyToOne(fetch = FetchType.LAZY)
37+
@JoinColumn(name = "employee_id")
38+
private Employee employee;
39+
40+
// Constructors
41+
42+
// Getters and Setters
43+
44+
// Other methods (if needed)
45+
46+
/**
47+
* @return Long return the id
48+
*/
49+
public Long getId() {
50+
return id;
51+
}
52+
53+
/**
54+
* @param id the id to set
55+
*/
56+
public void setId(Long id) {
57+
this.id = id;
58+
}
59+
60+
/**
61+
* @return LocalDate return the date
62+
*/
63+
public LocalDate getDate() {
64+
return date;
65+
}
66+
67+
/**
68+
* @param date the date to set
69+
*/
70+
public void setDate(LocalDate date) {
71+
this.date = date;
72+
}
73+
74+
/**
75+
* @return LocalTime return the entryTime
76+
*/
77+
public LocalTime getEntryTime() {
78+
return entryTime;
79+
}
80+
81+
/**
82+
* @param entryTime the entryTime to set
83+
*/
84+
public void setEntryTime(LocalTime entryTime) {
85+
this.entryTime = entryTime;
86+
}
87+
88+
/**
89+
* @return LocalTime return the exitTime
90+
*/
91+
public LocalTime getExitTime() {
92+
return exitTime;
93+
}
94+
95+
/**
96+
* @param exitTime the exitTime to set
97+
*/
98+
public void setExitTime(LocalTime exitTime) {
99+
this.exitTime = exitTime;
100+
}
101+
102+
/**
103+
* @return String return the absenceType
104+
*/
105+
public String getAbsenceType() {
106+
return absenceType;
107+
}
108+
109+
/**
110+
* @param absenceType the absenceType to set
111+
*/
112+
public void setAbsenceType(String absenceType) {
113+
this.absenceType = absenceType;
114+
}
115+
116+
/**
117+
* @return Employee return the employee
118+
*/
119+
public Employee getEmployee() {
120+
return employee;
121+
}
122+
123+
/**
124+
* @param employee the employee to set
125+
*/
126+
public void setEmployee(Employee employee) {
127+
this.employee = employee;
128+
}
129+
130+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package com.skia.lab.models.usecase;
2+
3+
4+
import java.util.List;
5+
6+
import jakarta.persistence.*;
7+
8+
@Entity
9+
@Table(name = "departments")
10+
public class Department {
11+
@Id
12+
@GeneratedValue(strategy = GenerationType.IDENTITY)
13+
private Long id;
14+
15+
private String name;
16+
17+
// Relationships
18+
@OneToMany(mappedBy = "department", cascade = CascadeType.ALL, orphanRemoval = true)
19+
private List<Employee> employees;
20+
21+
// Getters and Setters
22+
23+
/**
24+
* @return Long return the id
25+
*/
26+
public Long getId() {
27+
return id;
28+
}
29+
30+
/**
31+
* @param id the id to set
32+
*/
33+
public void setId(Long id) {
34+
this.id = id;
35+
}
36+
37+
/**
38+
* @return String return the name
39+
*/
40+
public String getName() {
41+
return name;
42+
}
43+
44+
/**
45+
* @param name the name to set
46+
*/
47+
public void setName(String name) {
48+
this.name = name;
49+
}
50+
51+
/**
52+
* @return List<Employee> return the employees
53+
*/
54+
public List<Employee> getEmployees() {
55+
return employees;
56+
}
57+
58+
/**
59+
* @param employees the employees to set
60+
*/
61+
public void setEmployees(List<Employee> employees) {
62+
this.employees = employees;
63+
}
64+
65+
}
66+
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
package com.skia.lab.models.usecase;
2+
3+
import java.time.LocalDate;
4+
5+
import jakarta.persistence.*;
6+
7+
@Entity
8+
@Table(name = "employees")
9+
public class Employee {
10+
@Id
11+
@GeneratedValue(strategy = GenerationType.IDENTITY)
12+
private Long id;
13+
14+
private String firstName;
15+
private String lastName;
16+
private LocalDate birthDate;
17+
private String address;
18+
private String phoneNumber;
19+
private String email;
20+
21+
// Relationships
22+
@ManyToOne(fetch = FetchType.LAZY)
23+
@JoinColumn(name = "department_id")
24+
private Department department;
25+
26+
@ManyToOne(fetch = FetchType.LAZY)
27+
@JoinColumn(name = "manager_id")
28+
private Employee manager;
29+
30+
// Getters and Setters
31+
32+
public Long getId() {
33+
return id;
34+
}
35+
36+
public void setId(Long id) {
37+
this.id = id;
38+
}
39+
40+
public String getFirstName() {
41+
return firstName;
42+
}
43+
44+
public void setFirstName(String firstName) {
45+
this.firstName = firstName;
46+
}
47+
48+
public String getLastName() {
49+
return lastName;
50+
}
51+
52+
public void setLastName(String lastName) {
53+
this.lastName = lastName;
54+
}
55+
56+
public LocalDate getBirthDate() {
57+
return birthDate;
58+
}
59+
60+
public void setBirthDate(LocalDate birthDate) {
61+
this.birthDate = birthDate;
62+
}
63+
64+
public String getAddress() {
65+
return address;
66+
}
67+
68+
public void setAddress(String address) {
69+
this.address = address;
70+
}
71+
72+
public String getPhoneNumber() {
73+
return phoneNumber;
74+
}
75+
76+
public void setPhoneNumber(String phoneNumber) {
77+
this.phoneNumber = phoneNumber;
78+
}
79+
80+
public String getEmail() {
81+
return email;
82+
}
83+
84+
public void setEmail(String email) {
85+
this.email = email;
86+
}
87+
88+
public Department getDepartment() {
89+
return department;
90+
}
91+
92+
public void setDepartment(Department department) {
93+
this.department = department;
94+
}
95+
96+
public Employee getManager() {
97+
return manager;
98+
}
99+
100+
public void setManager(Employee manager) {
101+
this.manager = manager;
102+
}
103+
}

0 commit comments

Comments
 (0)