#7 Perfil de Personal Administrativo - Listado de empleados (correcciones)

This commit is contained in:
jesus.pelaez 2024-09-03 20:00:09 -04:00
parent 4eebdf6f01
commit 7d6955a5c3
3 changed files with 14 additions and 47 deletions

View File

@ -21,38 +21,30 @@
private String lastName; private String lastName;
private LocalDate birthday; private LocalDate birthday;
private String birthCity; private String birthCity;
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
private MaritalStatus maritalStatus; private MaritalStatus maritalStatus;
private String residenceAddress; private String residenceAddress;
private String phoneNumber; private String phoneNumber;
private String personalEmail; private String personalEmail;
private String emergencyCName; private String emergencyCName;
private String emergencyCAddress; private String emergencyCAddress;
private String emergencyCPhone; private String emergencyCPhone;
private String emergencyCEmail; private String emergencyCEmail;
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
private Status status; private Status status;
public enum Status { public enum Status {
ACTIVE, ACTIVE,
INACTIVE INACTIVE
} }
public enum MaritalStatus { public enum MaritalStatus {
SINGLE, SINGLE,
MARRIED, MARRIED,
WIDOWED, WIDOWED,
DIVORCED DIVORCED
} }
public Status getStatus() { public Status getStatus() {
return status; return status;
} }
public void setStatus(Status status) { public void setStatus(Status status) {
this.status = status; this.status = status;
} }

View File

@ -1,5 +1,4 @@
package com.primefactorsolutions.service; package com.primefactorsolutions.service;
import com.primefactorsolutions.model.Employee; import com.primefactorsolutions.model.Employee;
import org.apache.commons.beanutils.BeanComparator; import org.apache.commons.beanutils.BeanComparator;
import com.primefactorsolutions.repositories.EmployeeRepository; import com.primefactorsolutions.repositories.EmployeeRepository;
@ -16,50 +15,37 @@ import java.util.Collections;
@Data @Data
public class EmployeeService { public class EmployeeService {
private final EmployeeRepository employeeRepository; private final EmployeeRepository employeeRepository;
private List<Employee> pagedBase;
public EmployeeService(EmployeeRepository employeeRepository) { public EmployeeService(EmployeeRepository employeeRepository) {
this.employeeRepository = employeeRepository; this.employeeRepository = employeeRepository;
} }
private void initializePagedBase() {
if (pagedBase == null) {
this.pagedBase = employeeRepository.findAll();
}
}
public List<Employee> findEmployees(int start, int pageSize, String sortProperty, boolean asc) { public List<Employee> findEmployees(int start, int pageSize, String sortProperty, boolean asc) {
initializePagedBase(); // Asegurarse de que pagedBase esté inicializada List<Employee> employees = employeeRepository.findAll();
System.err.println("findAll " + start + " " + pageSize + " sort " + sortProperty + " asc:" + asc );
int end = (int) (start + pageSize);
if (end > pagedBase.size()) {
end = pagedBase.size();
}
Collections.sort(pagedBase, new BeanComparator<Employee>(sortProperty));
if(!asc) { int end = Math.min(start + pageSize, employees.size());
Collections.reverse(pagedBase); employees.sort(new BeanComparator<>(sortProperty));
if (!asc) {
Collections.reverse(employees);
} }
return pagedBase.subList((int) start, end);
return employees.subList(start, end);
} }
public List<Employee> findEmployees(int start, int pageSize) { public List<Employee> findEmployees(int start, int pageSize) {
initializePagedBase(); // Asegurarse de que pagedBase esté inicializada List<Employee> employees = employeeRepository.findAll();
System.err.println("findAll " + start + " " + pageSize);
int end = (int) (start + pageSize); int end = Math.min(start + pageSize, employees.size());
if (end > pagedBase.size()) { return employees.subList(start, end);
end = pagedBase.size();
}
return pagedBase.subList((int) start, end);
} }
public Employee createOrUpdate(final Employee employee) { public Employee createOrUpdate(final Employee employee) {
final Employee saved = employeeRepository.save(employee); return employeeRepository.save(employee);
return saved;
} }
public Employee getEmployee(final UUID id) { public Employee getEmployee(final UUID id) {
Optional<Employee> employee = employeeRepository.findById(id); Optional<Employee> employee = employeeRepository.findById(id);
return employee.orElse(null); return employee.orElse(null);
} }
} }

View File

@ -43,22 +43,11 @@ public class EmployeesListView extends Main {
private void configureTable() { private void configureTable() {
table.setColumns("firstName", "lastName", "status"); table.setColumns("firstName", "lastName", "status");
addStatusColumn();
addEditButtonColumn("Edit", this::navigateToEditView); addEditButtonColumn("Edit", this::navigateToEditView);
addEditButtonColumn("Save", this::navigateToSaveChangeStatus); addEditButtonColumn("Save", this::navigateToSaveChangeStatus);
setupPagingGrid(); setupPagingGrid();
} }
private void addStatusColumn() {
table.addComponentColumn(this::createStatusCheckbox)
.setHeader("Change Status");
}
private Checkbox createStatusCheckbox(Employee employee) {
Checkbox statusCheckbox = new Checkbox( employee.getStatus() == Employee.Status.ACTIVE);
return statusCheckbox;
}
private void updateEmployeeStatus(Employee employee, boolean isActive) { private void updateEmployeeStatus(Employee employee, boolean isActive) {
employee.setStatus(isActive ? Employee.Status.ACTIVE : Employee.Status.INACTIVE); employee.setStatus(isActive ? Employee.Status.ACTIVE : Employee.Status.INACTIVE);
employeeService.createOrUpdate(employee); employeeService.createOrUpdate(employee);