diff --git a/src/main/java/com/primefactorsolutions/views/EmployeeView.java b/src/main/java/com/primefactorsolutions/views/EmployeeView.java index bdf5a82..a8c4f51 100644 --- a/src/main/java/com/primefactorsolutions/views/EmployeeView.java +++ b/src/main/java/com/primefactorsolutions/views/EmployeeView.java @@ -1,8 +1,10 @@ package com.primefactorsolutions.views; import com.primefactorsolutions.model.Employee; +import com.primefactorsolutions.model.Team; import com.primefactorsolutions.service.EmployeeService; import com.primefactorsolutions.service.ReportService; +import com.primefactorsolutions.service.TeamService; import com.vaadin.componentfactory.pdfviewer.PdfViewer; import com.vaadin.flow.component.ClickEvent; import com.vaadin.flow.component.Component; @@ -27,6 +29,7 @@ import com.vaadin.flow.router.*; import com.vaadin.flow.server.StreamResource; import com.vaadin.flow.spring.annotation.SpringComponent; import jakarta.annotation.security.PermitAll; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.vaadin.firitin.components.datepicker.VDatePicker; import org.vaadin.firitin.form.BeanValidationForm; @@ -47,6 +50,7 @@ public class EmployeeView extends BeanValidationForm implements HasUrl private final EmployeeService employeeService; private final ReportService reportService; + private final TeamService teamService; // TODO: campo usado para registrar al empleado en LDAP. Este campo podria estar en otro form eventualmente. private final TextField username = createTextField("Username: ", 30, true); @@ -67,7 +71,7 @@ public class EmployeeView extends BeanValidationForm implements HasUrl private final EmailField personalEmail = createEmailField("E-mail"); private final TextField cod = createTextField("Codigo de Empleado", 30, false); private final TextField position = createTextField("Cargo", 30, false); - private final TextField team = createTextField("Equipo", 30, false); + private final ComboBox team = new ComboBox<>("Equipo"); private final TextField leadManager = createTextField("Lead/Manager", 30, false); private final TextField project = createTextField("Proyecto", 30, false); private final TextField emergencyCName = createTextField("Nombres y Apellidos de Contacto", 50, false); @@ -135,10 +139,13 @@ public class EmployeeView extends BeanValidationForm implements HasUrl private final H3 datBanc = new H3("Datos Bancados"); private final H3 datGest = new H3("Datos Gestora Pública y Seguro Social"); - public EmployeeView(final EmployeeService employeeService, final ReportService reportService) { + public EmployeeView(final EmployeeService employeeService, + final ReportService reportService, + final TeamService teamService) { super(Employee.class); this.employeeService = employeeService; this.reportService = reportService; + this.teamService = teamService; saveButton.addThemeVariants(ButtonVariant.LUMO_PRIMARY); configureComponents(); @@ -155,6 +162,7 @@ public class EmployeeView extends BeanValidationForm implements HasUrl editButton.setVisible(true); reportButton.setVisible(true); birthday.addValueChangeListener(event -> calculateAge()); + createTeamComboBox(); reportButton.addClickListener((ComponentEventListener>) buttonClickEvent -> { var employee = getEntity(); @@ -262,12 +270,11 @@ public class EmployeeView extends BeanValidationForm implements HasUrl return emailField; } - private ComboBox createComboBox(final String label, final T[] items) { - ComboBox comboBox = new ComboBox<>(label); - comboBox.setItems(items); - comboBox.setItemLabelGenerator(Object::toString); - comboBox.setWidthFull(); - return comboBox; + private void createTeamComboBox() { + List teams = teamService.findAllTeams(); + team.setItems(teams); + team.setItemLabelGenerator(Team::getName); + team.setWidthFull(); } private ComboBox createGenderComboBox() { @@ -317,6 +324,7 @@ public class EmployeeView extends BeanValidationForm implements HasUrl UUID employeeId = UUID.fromString(s); var employee = employeeService.getEmployee(employeeId); setEntityWithEnabledSave(employee); + team.setValue(employee.getTeam()); if ("edit".equals(action) && !s.isEmpty()) { saveButton.setVisible(true);