En-desarrollo #27
@ -42,6 +42,7 @@ public class DocumentView extends BeanValidationForm<Document> implements HasUrl
|
||||
private final EmployeeService employeeService;
|
||||
private final AuthenticationContext authContext;
|
||||
private boolean fileUploaded = false;
|
||||
private Button saveButton;
|
||||
|
||||
public DocumentView(final DocumentService documentService,
|
||||
final EmployeeService employeeService,
|
||||
@ -83,7 +84,7 @@ public class DocumentView extends BeanValidationForm<Document> implements HasUrl
|
||||
}
|
||||
|
||||
protected Button createSaveButton() {
|
||||
Button saveButton = new Button("Save");
|
||||
saveButton = new Button("Save");
|
||||
saveButton.addClickListener(event -> saveDocument());
|
||||
return saveButton;
|
||||
}
|
||||
@ -110,13 +111,18 @@ public class DocumentView extends BeanValidationForm<Document> implements HasUrl
|
||||
|
||||
private void saveDocument() {
|
||||
if (isFormValid()) {
|
||||
Document document = createDocument();
|
||||
Document document = getEntity(); // Obtenemos el documento actual del formulario
|
||||
document.setFileName(fileName.getValue());
|
||||
document.setDocumentType(documentType.getValue());
|
||||
document.setEmployee(employeeComboBox.getValue());
|
||||
document.setFileData(readFileData()); // Actualizamos el archivo si es necesario
|
||||
|
||||
authContext.getAuthenticatedUser(UserDetails.class).ifPresent(user -> {
|
||||
String creator = user.getUsername();
|
||||
document.setCreator(creator); // Asignar el nombre del creador al documento
|
||||
document.setCreator(creator); // Asignar el nombre del creador al documento si corresponde
|
||||
});
|
||||
documentService.saveDocument(document);
|
||||
|
||||
documentService.saveDocument(document); // Guardamos el documento actualizado
|
||||
Notification.show("File saved successfully.");
|
||||
clearForm();
|
||||
} else {
|
||||
@ -155,6 +161,18 @@ public class DocumentView extends BeanValidationForm<Document> implements HasUrl
|
||||
fileUploaded = false;
|
||||
}
|
||||
|
||||
private void checkFormModifications() {
|
||||
boolean hasModifications = !fileName.isEmpty()
|
||||
&& documentType.getValue() != null
|
||||
&& employeeComboBox.getValue() != null;
|
||||
|
||||
if (hasModifications || fileUploaded) {
|
||||
saveButton.setEnabled(true);
|
||||
} else {
|
||||
saveButton.setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setParameter(final BeforeEvent beforeEvent, final String action) {
|
||||
@ -166,7 +184,8 @@ public class DocumentView extends BeanValidationForm<Document> implements HasUrl
|
||||
} else {
|
||||
UUID documentId = UUID.fromString(s);
|
||||
var document = documentService.getDocument(documentId);
|
||||
setEntityWithEnabledSave(document);
|
||||
setEntity(document);
|
||||
employeeComboBox.setValue(document.getEmployee());
|
||||
|
||||
if ("edit".equals(action) && !s.isEmpty()) {
|
||||
setFieldsReadOnly(false);
|
||||
@ -174,6 +193,7 @@ public class DocumentView extends BeanValidationForm<Document> implements HasUrl
|
||||
setFieldsReadOnly(true);
|
||||
}
|
||||
}
|
||||
checkFormModifications();
|
||||
}
|
||||
|
||||
private void setFieldsReadOnly(final boolean option) {
|
||||
|
@ -8,16 +8,20 @@ import com.primefactorsolutions.service.EmployeeService;
|
||||
import com.vaadin.flow.component.button.Button;
|
||||
import com.vaadin.flow.component.combobox.ComboBox;
|
||||
import com.vaadin.flow.component.grid.GridSortOrder;
|
||||
import com.vaadin.flow.component.html.Anchor;
|
||||
import com.vaadin.flow.component.html.Main;
|
||||
import com.vaadin.flow.component.html.Span;
|
||||
import com.vaadin.flow.data.provider.SortDirection;
|
||||
import com.vaadin.flow.router.PageTitle;
|
||||
import com.vaadin.flow.router.Route;
|
||||
import com.vaadin.flow.server.StreamRegistration;
|
||||
import com.vaadin.flow.server.StreamResource;
|
||||
import com.vaadin.flow.spring.annotation.SpringComponent;
|
||||
import jakarta.annotation.security.PermitAll;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.vaadin.firitin.components.grid.PagingGrid;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.util.Base64;
|
||||
import java.util.List;
|
||||
|
||||
@ -138,23 +142,14 @@ public class DocumentsListView extends Main {
|
||||
}
|
||||
|
||||
private void downloadDocument(final Document document) {
|
||||
String base64Data = Base64.getEncoder().encodeToString(document.getFileData());
|
||||
String jsCode = "var byteCharacters = atob('" + base64Data + "');"
|
||||
+ "var byteNumbers = new Array(byteCharacters.length);"
|
||||
+ "for (var i = 0; i < byteCharacters.length; i++) {"
|
||||
+ " byteNumbers[i] = byteCharacters.charCodeAt(i);"
|
||||
+ "}"
|
||||
+ "var byteArray = new Uint8Array(byteNumbers);"
|
||||
+ "var blob = new Blob([byteArray], { type: 'application/pdf' });"
|
||||
+ "var url = URL.createObjectURL(blob);"
|
||||
+ "var a = document.createElement('a');"
|
||||
+ "a.href = url;"
|
||||
+ "a.download = '" + document.getFileName() + "';"
|
||||
+ "document.body.appendChild(a);"
|
||||
+ "a.click();"
|
||||
+ "document.body.removeChild(a);"
|
||||
+ "URL.revokeObjectURL(url);";
|
||||
getElement().executeJs(jsCode);
|
||||
StreamResource resource = new StreamResource(document.getFileName(),
|
||||
() -> new ByteArrayInputStream(document.getFileData()));
|
||||
resource.setContentType("application/pdf");
|
||||
resource.setHeader("Content-Disposition", "attachment; filename=\"" + document.getFileName() + ".pdf\"");
|
||||
getUI().ifPresent(ui -> {
|
||||
StreamRegistration registration = ui.getSession().getResourceRegistry().registerResource(resource);
|
||||
ui.getPage().open(registration.getResourceUri().toString());
|
||||
});
|
||||
}
|
||||
|
||||
@FunctionalInterface
|
||||
|
Loading…
Reference in New Issue
Block a user