#7 Perfil de Personal Administrativo - Listado de empleados #8

Merged
alex merged 6 commits from Rama-Ricardo into main 2024-08-27 19:17:53 +00:00
3 changed files with 125 additions and 16 deletions
Showing only changes of commit d751833c18 - Show all commits

View File

@ -17,15 +17,7 @@ import java.util.List;
@NoArgsConstructor @NoArgsConstructor
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class Employee extends BaseEntity { public class Employee extends BaseEntity {
private String username; private String name;
jesus.pelaez marked this conversation as resolved Outdated
Outdated
Review

mantener firstName para este campo para ser mas explicito.

mantener `firstName` para este campo para ser mas explicito.

Cambio realizado, esperando para revisión

Cambio realizado, esperando para revisión
private String firstName;
private String lastName; private String lastName;
private LocalDate dob; private String status;
jesus.pelaez marked this conversation as resolved Outdated
Outdated
Review

definir un enum con los status ACTIVE, INACTIVE. en vez de usar un String.

definir un enum con los status ACTIVE, INACTIVE. en vez de usar un String.

Cambio realizado, esperando para revisión

Cambio realizado, esperando para revisión
private String personalEmail;
@Type(JsonType.class)
@Column(columnDefinition = "json")
private List<String> phoneNumbers;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "employee", cascade = {CascadeType.ALL})
private List<Document> documents;
private Role role;
} }

View File

@ -7,19 +7,26 @@ import org.apache.commons.lang3.NotImplementedException;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.UUID;
@Service @Service
@Data @Data
public class EmployeeService { public class EmployeeService {
private final EmployeeRepository employeeRepository; private final EmployeeRepository employeeRepository;
private List<Employee> getEmployees() { public EmployeeService(EmployeeRepository employeeRepository) {
// TODO: implement this.employeeRepository = employeeRepository;
throw new NotImplementedException();
} }
private Employee createOrUpdateEmployee(final Employee employee) { public Employee createOrUpdate(final Employee assessment) {
// TODO: implement return null;
throw new NotImplementedException(); }
public List<Employee> getEmployees() {
return employeeRepository.findAll();
}
public Employee getEmployee(final UUID id) {
return null;
} }
} }

View File

@ -1,11 +1,28 @@
package com.primefactorsolutions.views; package com.primefactorsolutions.views;
import com.primefactorsolutions.model.Employee;
import com.primefactorsolutions.service.EmployeeService;
import com.vaadin.flow.component.ClickEvent;
import com.vaadin.flow.component.Component;
import com.vaadin.flow.component.ComponentEventListener;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.combobox.ComboBox;
import com.vaadin.flow.component.html.H2;
import com.vaadin.flow.component.html.Main; import com.vaadin.flow.component.html.Main;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.data.provider.DataProvider;
import com.vaadin.flow.data.provider.DataProviderListener;
import com.vaadin.flow.data.provider.Query;
import com.vaadin.flow.function.ValueProvider;
import com.vaadin.flow.router.PageTitle; import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route; import com.vaadin.flow.router.Route;
import com.vaadin.flow.shared.Registration;
import com.vaadin.flow.spring.annotation.SpringComponent; import com.vaadin.flow.spring.annotation.SpringComponent;
import jakarta.annotation.security.PermitAll; import jakarta.annotation.security.PermitAll;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.vaadin.firitin.components.grid.VGrid;
import java.util.stream.Stream;
@SpringComponent @SpringComponent
@Scope("prototype") @Scope("prototype")
@ -13,4 +30,97 @@ import org.springframework.context.annotation.Scope;
@Route(value = "/employees", layout = MainLayout.class) @Route(value = "/employees", layout = MainLayout.class)
@PermitAll @PermitAll
public class EmployeesListView extends Main { public class EmployeesListView extends Main {
private final EmployeeService employeeService;
public EmployeesListView(final EmployeeService employeeService) {
this.employeeService = employeeService;
final H2 title = new H2("Employees list");
final HorizontalLayout hl = new HorizontalLayout();
final HorizontalLayout hf = new HorizontalLayout();
final Button employeeListAscendingOrder = new Button("Employee List in Ascending Order");
employeeListAscendingOrder.addClickListener((ComponentEventListener<ClickEvent<Button>>) buttonClickEvent -> {
// no-op
});
hl.add(employeeListAscendingOrder);
final Button employeeListDescendingOrder = new Button("Employee List in Descending Order");
employeeListDescendingOrder.addClickListener((ComponentEventListener<ClickEvent<Button>>) buttonClickEvent -> {
// no-op
});
hl.add(employeeListDescendingOrder);
final VGrid<Employee> grid = new VGrid<>(Employee.class);
grid.setColumns("name", "lastName", "status");
grid.setAllRowsVisible(true);
grid.addComponentColumn((ValueProvider<Employee, Component>) employee -> {
ComboBox<String> statusComboBox = new ComboBox<>();
statusComboBox.setItems("Active", "Inactive");
return statusComboBox;
}).setHeader("Change Status");
grid.addComponentColumn((ValueProvider<Employee, Component>) employee -> {
final Button edit = new Button("Edit");
edit.addClickListener((ComponentEventListener<ClickEvent<Button>>) buttonClickEvent -> {
// no-op
});
return edit;
});
grid.addComponentColumn((ValueProvider<Employee, Component>) employee -> {
final Button save = new Button("Save");
save.addClickListener((ComponentEventListener<ClickEvent<Button>>) buttonClickEvent -> {
// no-op
});
return save;
});
grid.setDataProvider(new DataProvider<>() {
@Override
public boolean isInMemory() {
return false;
}
@Override
public int size(final Query<Employee, Object> query) {
return employeeService.getEmployees().size();
}
@Override
public Stream<Employee> fetch(final Query<Employee, Object> query) {
int limit = query.getLimit();
int pagerSize = query.getPageSize();
int page = query.getPage();
return employeeService.getEmployees().stream();
}
@Override
public void refreshItem(final Employee employee) {
// no-op
}
@Override
public void refreshAll() {
// no-op
}
@Override
public Registration addDataProviderListener(final DataProviderListener<Employee> dataProviderListener) {
return null;
}
});
final Button previous = new Button("Previous");
previous.addClickListener((ComponentEventListener<ClickEvent<Button>>) buttonClickEvent -> {
// no-op
});
hf.add(previous);
final Button next = new Button("Next");
next.addClickListener((ComponentEventListener<ClickEvent<Button>>) buttonClickEvent -> {
// no-op
});
hf.add(next);
final Button addEmployee = new Button("Add Employee");
addEmployee.addClickListener((ComponentEventListener<ClickEvent<Button>>) buttonClickEvent -> {
//this.getUI().get().navigate(EmployeeView.class, "new");
});
hf.add(addEmployee);
add(title, hl, grid, hf);
}
} }