Erweiterungen
This commit is contained in:
@@ -78,7 +78,6 @@ public class AddJobService {
|
|||||||
.peek(te -> te.setJobId(jobId))
|
.peek(te -> te.setJobId(jobId))
|
||||||
.toList();
|
.toList();
|
||||||
taskRepository.saveAll(prepared);
|
taskRepository.saveAll(prepared);
|
||||||
modified = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -95,23 +94,6 @@ public class AddJobService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Aktualisiert einen bestehenden Auftrag
|
|
||||||
*/
|
|
||||||
public Job updateJob(Job job) {
|
|
||||||
try {
|
|
||||||
job.setUpdatedAt(LocalDateTime.now());
|
|
||||||
Job updatedJob = jobRepository.save(job);
|
|
||||||
log.info("Auftrag erfolgreich aktualisiert: {}", updatedJob.getJobNumber());
|
|
||||||
return updatedJob;
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Fehler beim Aktualisieren des Auftrags: {}", e.getMessage(), e);
|
|
||||||
throw new RuntimeException("Auftrag konnte nicht aktualisiert werden: " + e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generiert eine eindeutige Auftragsnummer
|
* Generiert eine eindeutige Auftragsnummer
|
||||||
*/
|
*/
|
||||||
@@ -135,48 +117,6 @@ public class AddJobService {
|
|||||||
return jobNumber;
|
return jobNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Speichert einen Auftrag als Entwurf (für automatisches Speichern)
|
|
||||||
*/
|
|
||||||
public void saveDraft(Job job) {
|
|
||||||
try {
|
|
||||||
// Prüfen ob bereits ein Entwurf für diesen Benutzer existiert
|
|
||||||
String currentUser = securityService.getCurrentUsername();
|
|
||||||
List<Job> existingDrafts = jobRepository.findByCreatedByAndIsDraftTrue(currentUser);
|
|
||||||
|
|
||||||
Job draftJob;
|
|
||||||
if (!existingDrafts.isEmpty()) {
|
|
||||||
// Bestehenden Entwurf aktualisieren
|
|
||||||
draftJob = existingDrafts.getFirst();
|
|
||||||
updateJobFromForm(draftJob, job);
|
|
||||||
draftJob.setUpdatedAt(LocalDateTime.now());
|
|
||||||
} else {
|
|
||||||
// Neuen Entwurf erstellen
|
|
||||||
draftJob = job;
|
|
||||||
LocalDateTime now = LocalDateTime.now();
|
|
||||||
draftJob.setCreatedAt(now);
|
|
||||||
draftJob.setUpdatedAt(now);
|
|
||||||
draftJob.setStatus(JobStatus.CREATED);
|
|
||||||
draftJob.setCreatedBy(currentUser);
|
|
||||||
draftJob.setDraft(true);
|
|
||||||
|
|
||||||
// Spezielle Entwurfs-Auftragsnummer
|
|
||||||
draftJob.setJobNumber("DRAFT_" + currentUser.replace("@", "_") + "_" +
|
|
||||||
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd_HHmmss")));
|
|
||||||
}
|
|
||||||
|
|
||||||
jobRepository.save(draftJob);
|
|
||||||
|
|
||||||
log.info("Entwurf automatisch gespeichert für Benutzer: {}", currentUser);
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Fehler beim Speichern des Entwurfs: {}", e.getMessage(), e);
|
|
||||||
throw new RuntimeException("Entwurf konnte nicht gespeichert werden: " + e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Aktualisiert einen bestehenden Job mit neuen Formulardaten
|
* Aktualisiert einen bestehenden Job mit neuen Formulardaten
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -35,11 +35,6 @@ public class PasswordResetService {
|
|||||||
this.mailUtil = mailUtil;
|
this.mailUtil = mailUtil;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initiateReset(String email, UserType userType, String baseUrl) {
|
|
||||||
// existing typed initiation
|
|
||||||
initiateResetInternal(email, userType, baseUrl);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initiate reset without asking for user type. Looks up the email in both collections
|
* Initiate reset without asking for user type. Looks up the email in both collections
|
||||||
* and only proceeds if it exists in exactly one of them. Otherwise, it silently returns
|
* and only proceeds if it exists in exactly one of them. Otherwise, it silently returns
|
||||||
|
|||||||
@@ -26,9 +26,8 @@ public class ForgetPasswordView extends VerticalLayout implements BeforeEnterObs
|
|||||||
private String token;
|
private String token;
|
||||||
private PasswordResetService.UserType userType;
|
private PasswordResetService.UserType userType;
|
||||||
|
|
||||||
private PasswordField newPassword;
|
private final PasswordField newPassword;
|
||||||
private PasswordField confirmPassword;
|
private final PasswordField confirmPassword;
|
||||||
private Button submit;
|
|
||||||
|
|
||||||
public ForgetPasswordView(PasswordResetService passwordResetService) {
|
public ForgetPasswordView(PasswordResetService passwordResetService) {
|
||||||
this.passwordResetService = passwordResetService;
|
this.passwordResetService = passwordResetService;
|
||||||
@@ -49,7 +48,7 @@ public class ForgetPasswordView extends VerticalLayout implements BeforeEnterObs
|
|||||||
newPassword = new PasswordField("Neues Passwort");
|
newPassword = new PasswordField("Neues Passwort");
|
||||||
confirmPassword = new PasswordField("Passwort bestätigen");
|
confirmPassword = new PasswordField("Passwort bestätigen");
|
||||||
|
|
||||||
submit = new Button("Passwort speichern", e -> onSubmit());
|
Button submit = new Button("Passwort speichern", e -> onSubmit());
|
||||||
submit.addThemeVariants(ButtonVariant.LUMO_PRIMARY);
|
submit.addThemeVariants(ButtonVariant.LUMO_PRIMARY);
|
||||||
|
|
||||||
container.add(title, newPassword, confirmPassword, submit);
|
container.add(title, newPassword, confirmPassword, submit);
|
||||||
@@ -59,8 +58,8 @@ public class ForgetPasswordView extends VerticalLayout implements BeforeEnterObs
|
|||||||
@Override
|
@Override
|
||||||
public void beforeEnter(BeforeEnterEvent event) {
|
public void beforeEnter(BeforeEnterEvent event) {
|
||||||
Map<String, java.util.List<String>> params = event.getLocation().getQueryParameters().getParameters();
|
Map<String, java.util.List<String>> params = event.getLocation().getQueryParameters().getParameters();
|
||||||
String tokenParam = params.getOrDefault("token", java.util.List.of("")) .get(0);
|
String tokenParam = params.getOrDefault("token", java.util.List.of("")).getFirst();
|
||||||
String typeParam = params.getOrDefault("type", java.util.List.of("")) .get(0);
|
String typeParam = params.getOrDefault("type", java.util.List.of("")).getFirst();
|
||||||
this.token = tokenParam != null ? tokenParam.trim() : "";
|
this.token = tokenParam != null ? tokenParam.trim() : "";
|
||||||
this.userType = "app_user".equalsIgnoreCase(typeParam) ? PasswordResetService.UserType.APP_USER : PasswordResetService.UserType.USERS;
|
this.userType = "app_user".equalsIgnoreCase(typeParam) ? PasswordResetService.UserType.APP_USER : PasswordResetService.UserType.USERS;
|
||||||
|
|
||||||
|
|||||||
@@ -19,10 +19,7 @@ import de.assecutor.votianlt.pages.service.PasswordResetService;
|
|||||||
@AnonymousAllowed
|
@AnonymousAllowed
|
||||||
public class ForgotPasswordRequestView extends VerticalLayout {
|
public class ForgotPasswordRequestView extends VerticalLayout {
|
||||||
|
|
||||||
private final PasswordResetService passwordResetService;
|
|
||||||
|
|
||||||
public ForgotPasswordRequestView(PasswordResetService passwordResetService) {
|
public ForgotPasswordRequestView(PasswordResetService passwordResetService) {
|
||||||
this.passwordResetService = passwordResetService;
|
|
||||||
|
|
||||||
setSizeFull();
|
setSizeFull();
|
||||||
setJustifyContentMode(FlexComponent.JustifyContentMode.CENTER);
|
setJustifyContentMode(FlexComponent.JustifyContentMode.CENTER);
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ public class JobSummaryView extends Main implements HasUrlParameter<String> {
|
|||||||
private final TaskRepository taskRepository;
|
private final TaskRepository taskRepository;
|
||||||
private final AppUserService appUserService;
|
private final AppUserService appUserService;
|
||||||
|
|
||||||
private VerticalLayout content;
|
private final VerticalLayout content;
|
||||||
|
|
||||||
public JobSummaryView(JobRepository jobRepository,
|
public JobSummaryView(JobRepository jobRepository,
|
||||||
CargoItemRepository cargoItemRepository,
|
CargoItemRepository cargoItemRepository,
|
||||||
@@ -211,7 +211,7 @@ public class JobSummaryView extends Main implements HasUrlParameter<String> {
|
|||||||
String wid = ci.getWidthMm() != null ? ci.getWidthMm().intValue() + " mm" : "";
|
String wid = ci.getWidthMm() != null ? ci.getWidthMm().intValue() + " mm" : "";
|
||||||
String hei = ci.getHeightMm() != null ? ci.getHeightMm().intValue() + " mm" : "";
|
String hei = ci.getHeightMm() != null ? ci.getHeightMm().intValue() + " mm" : "";
|
||||||
String combined = String.join(" x ", java.util.stream.Stream.of(len, wid, hei)
|
String combined = String.join(" x ", java.util.stream.Stream.of(len, wid, hei)
|
||||||
.filter(s -> s != null && !s.isBlank()).toList());
|
.filter(s -> !s.isBlank()).toList());
|
||||||
return combined.isBlank() ? "" : combined;
|
return combined.isBlank() ? "" : combined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -178,13 +178,17 @@ public class RegisterView extends VerticalLayout {
|
|||||||
new FormLayout.ResponsiveStep("0", 2)
|
new FormLayout.ResponsiveStep("0", 2)
|
||||||
);
|
);
|
||||||
|
|
||||||
// Erste Reihe: Zugangsdaten
|
// Firma zuerst, volle Breite
|
||||||
|
form.add(companyField);
|
||||||
|
form.setColspan(companyField, 2);
|
||||||
|
|
||||||
|
// Zugangsdaten
|
||||||
form.add(emailField, passwordField, confirmPasswordField);
|
form.add(emailField, passwordField, confirmPasswordField);
|
||||||
form.setColspan(emailField, 2);
|
form.setColspan(emailField, 2);
|
||||||
|
|
||||||
// Personen-/Firmendaten
|
// Personen-/Adressdaten
|
||||||
form.add(firstNameField, lastNameField);
|
form.add(firstNameField, lastNameField);
|
||||||
form.add(phoneField, companyField);
|
form.add(phoneField);
|
||||||
form.add(streetField, houseNumberField);
|
form.add(streetField, houseNumberField);
|
||||||
form.add(zipField, cityField);
|
form.add(zipField, cityField);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user