Skip to content

Commit

Permalink
............
Browse files Browse the repository at this point in the history
  • Loading branch information
precious authored and precious committed Mar 30, 2022
1 parent ebb8e9b commit 6b77db1
Show file tree
Hide file tree
Showing 78 changed files with 552 additions and 138 deletions.
5 changes: 5 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@
<artifactId>json-patch</artifactId>
<version>1.13</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package africa.semicolon.employeemanagement.data.dto;
package africa.semicolon.employeemanagement.data.dto.request;

import africa.semicolon.employeemanagement.data.model.JobDepartment;
import africa.semicolon.employeemanagement.data.model.Level;
import lombok.*;

import javax.validation.constraints.NotNull;
Expand All @@ -11,7 +13,7 @@
@NoArgsConstructor
public class DepartmentRequest {
@NotNull(message="Field can not be empty")
private String fieldName;
private JobDepartment fieldName;
@NotNull(message="Field can not be empty")
private String level;
private Level level;
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package africa.semicolon.employeemanagement.data.dto;
package africa.semicolon.employeemanagement.data.dto.request;

import lombok.*;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package africa.semicolon.employeemanagement.data.dto;
package africa.semicolon.employeemanagement.data.dto.request;

import lombok.AllArgsConstructor;
import lombok.Getter;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package africa.semicolon.employeemanagement.data.dto.request;

import lombok.*;

@Builder
@AllArgsConstructor
@NoArgsConstructor
@Setter
@Getter
public class QualificationRequest {
private String qualificationName;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package africa.semicolon.employeemanagement.data.dto.request;

import lombok.*;

@Builder
@AllArgsConstructor
@NoArgsConstructor
@Setter
@Getter
public class RoleRequest {
private Long employeeId;
private String position;
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package africa.semicolon.employeemanagement.data.dto;
package africa.semicolon.employeemanagement.data.dto.response;

import africa.semicolon.employeemanagement.data.model.Level;
import africa.semicolon.employeemanagement.data.model.Role;

import java.time.LocalDateTime;

public class DepartmentResponse {
private Long id;
private String fieldName;
private String description;
private Level employeeJobLevel;
private Role jobRole;
private LocalDateTime creationDate;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package africa.semicolon.employeemanagement.data.dto.response;

import africa.semicolon.employeemanagement.data.model.Level;
import africa.semicolon.employeemanagement.data.model.Role;
import lombok.*;

import java.time.LocalDateTime;


@Setter
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class EmployeeResponse {
private Long id;
private String firstName;
private String lastName;
private String email;
private int age;
private String departmentName;
private Integer employeeSalary;
private Level employeeJobLevel;
private Role jobRole;
private Boolean isSuspended;
private LocalDateTime creationDate;
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package africa.semicolon.employeemanagement.data.dto;
package africa.semicolon.employeemanagement.data.dto.response;


import lombok.AllArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package africa.semicolon.employeemanagement.data.model;

import lombok.*;
import org.hibernate.annotations.CreationTimestamp;

import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.List;

@Builder
Expand All @@ -14,7 +16,7 @@
public class Department {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private Long id;

@Column(unique = true)
private JobDepartment fieldName;
Expand All @@ -24,6 +26,6 @@ public class Department {
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
private List<Employee> employees;

@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
private Role jobRole;
@CreationTimestamp
private LocalDateTime creationDate = LocalDateTime.now();
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package africa.semicolon.employeemanagement.data.model;

import lombok.*;
import org.hibernate.annotations.CreationTimestamp;

import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;

Expand Down Expand Up @@ -32,8 +34,13 @@ public class Employee {
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
private Level employeeJobLevel;

@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
private Role jobRole;

@OneToMany
private List<Qualification> employeeQualifications;
private Boolean isSuspended = false;

@CreationTimestamp
private LocalDateTime creationDate = LocalDateTime.now();
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public class Qualification {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long QualificationId;
private String qualificationName;
private SchoolQualification qualificationName;
@CreationTimestamp
private LocalDateTime dateSubmitted;
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer roleId;
private Integer employeeId;
private Long roleId;
private Long employeeId;
private String position;
@CreationTimestamp
private LocalDateTime appointmentDate;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package africa.semicolon.employeemanagement.data.model;

public enum SchoolQualification {
BACHELORS_DEGREE,
POSTGRADUATE_DIPLOMA,
MASTERS_DEGREE,
DOCTORATE_DEGREE;

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,13 @@
import africa.semicolon.employeemanagement.data.model.Department;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

@Repository
public interface DepartmentRepository extends JpaRepository<Department, Integer> {
public interface DepartmentRepository extends JpaRepository<Department, Long> {

Department findByFieldName(String fieldName);

@Transactional
void deleteByFieldName(String departmentName);
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package africa.semicolon.employeemanagement.service;

import africa.semicolon.employeemanagement.data.dto.EmployeeRequest;
import africa.semicolon.employeemanagement.data.dto.EmployeeResponse;
import africa.semicolon.employeemanagement.data.dto.request.EmployeeRequest;
import africa.semicolon.employeemanagement.data.dto.request.QualificationRequest;
import africa.semicolon.employeemanagement.data.dto.request.RoleRequest;
import africa.semicolon.employeemanagement.data.dto.response.EmployeeResponse;
import africa.semicolon.employeemanagement.data.model.Employee;
import africa.semicolon.employeemanagement.web.exception.EmployeeAlreadyExistsException;
import africa.semicolon.employeemanagement.web.exception.EmployeeDoesNotExistsException;
Expand All @@ -20,6 +22,8 @@ public interface EmployeeService {
EmployeeResponse updateEmployeeSalaryByJobLevel(Long employeeId) throws EmployeeDoesNotExistsException;
Employee activateSuspendEmployeeByEmployeeId(Long employeeId) throws EmployeeDoesNotExistsException;
Employee deactivateSuspendEmployeeByEmployeeId(Long employeeId) throws EmployeeDoesNotExistsException;
Employee setEmployeeRoleByEmployeeId(Long employeeId, RoleRequest request) throws EmployeeDoesNotExistsException;
Employee setEmployeeQualificationByEmployeeId(Long employeeId, QualificationRequest request) throws EmployeeDoesNotExistsException;
Employee updateEmployee(String email, JsonPatch jsonpatch) throws EmployeeDoesNotExistsException, JsonPatchException, JsonProcessingException, EmployeeRequestException;
String deleteAllEmployees();
String deleteEmployeeById(Long id);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package africa.semicolon.employeemanagement.service;

import africa.semicolon.employeemanagement.data.dto.EmployeeRequest;
import africa.semicolon.employeemanagement.data.dto.EmployeeResponse;
import africa.semicolon.employeemanagement.data.model.ConstantSalary;
import africa.semicolon.employeemanagement.data.model.Employee;
import africa.semicolon.employeemanagement.data.model.JobLevel;
import africa.semicolon.employeemanagement.data.model.Level;
import africa.semicolon.employeemanagement.data.dto.request.EmployeeRequest;
import africa.semicolon.employeemanagement.data.dto.request.QualificationRequest;
import africa.semicolon.employeemanagement.data.dto.request.RoleRequest;
import africa.semicolon.employeemanagement.data.dto.response.EmployeeResponse;
import africa.semicolon.employeemanagement.data.model.*;
import africa.semicolon.employeemanagement.data.repository.EmployeeRepository;
import africa.semicolon.employeemanagement.web.exception.EmployeeAlreadyExistsException;
import africa.semicolon.employeemanagement.web.exception.EmployeeDoesNotExistsException;
Expand Down Expand Up @@ -35,7 +34,7 @@ public EmployeeServiceImpl(EmployeeRepository employeeRepository, ModelMapper ma
}

@Override
public EmployeeResponse createEmployee(EmployeeRequest employeeDto) throws EmployeeAlreadyExistsException {
public EmployeeResponse createEmployee(EmployeeRequest employeeDto) {
if(employeeDto == null) throw new IllegalArgumentException("Employee records can not be empty");

Optional<Employee> foundEmployee = employeeRepository.findByEmail(employeeDto.getEmail());
Expand Down Expand Up @@ -102,6 +101,30 @@ public Employee deactivateSuspendEmployeeByEmployeeId(Long employeeId) throws Em
return employee;
}

@Override
public Employee setEmployeeRoleByEmployeeId(Long employeeId, RoleRequest request) throws EmployeeDoesNotExistsException {
Employee employee = employeeRepository.findById(employeeId).orElse(null);
if (employee == null) throw new EmployeeDoesNotExistsException("Employee with this "+ employeeId+" employee id does not exist");

Role role = mapper.map(request, Role.class);
return employee = Employee.builder()
.jobRole(role)
.build();
}

@Override
public Employee setEmployeeQualificationByEmployeeId(Long employeeId, QualificationRequest request) throws EmployeeDoesNotExistsException {
Employee employee = employeeRepository.findById(employeeId).orElse(null);
if (employee == null) throw new EmployeeDoesNotExistsException("Employee with this "+ employeeId+" employee id does not exist");

Qualification qualify = mapper.map(request, Qualification.class);

List<Qualification> qualification = List.of(qualify);
return employee = Employee.builder()
.employeeQualifications(qualification)
.build();
}

@Override
public Employee updateEmployee(String email, JsonPatch jsonpatch) throws EmployeeDoesNotExistsException,
JsonPatchException, JsonProcessingException, EmployeeRequestException {
Expand Down Expand Up @@ -164,6 +187,4 @@ public Optional<Employee> findEmployeeById(Long id) throws EmployeeDoesNotExists

return found;
}


}
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
package africa.semicolon.employeemanagement.service.departmentService;

import africa.semicolon.employeemanagement.data.dto.DepartmentRequest;
import africa.semicolon.employeemanagement.data.dto.DepartmentResponse;
import africa.semicolon.employeemanagement.data.dto.request.DepartmentRequest;
import africa.semicolon.employeemanagement.data.dto.response.DepartmentResponse;
import africa.semicolon.employeemanagement.data.model.Department;

import java.util.List;

public interface DepartmentService {
DepartmentResponse createDepartment(DepartmentRequest request);
Department updateDepartment(String departmentId);
String deleteDepartmentByDepartmentId(String departmentId);
Department updateDepartmentByDepartmentId(Long departmentId);
String deleteDepartmentByDepartmentId(Long departmentId);
String deleteDepartmentByDepartmentName(String departmentName);
void deleteAllDepartments();
List<Department> findAllDepartment();
Department findDepartmentById(String departmentId);
Department findDepartmentById(Long departmentId);
Department findDepartmentByName(String departmentName);

}
Loading

0 comments on commit 6b77db1

Please sign in to comment.