Skip to content

Commit

Permalink
#339 acceptance, release and reopen date use html5 month-year picker
Browse files Browse the repository at this point in the history
  • Loading branch information
KlausRicharz committed Aug 1, 2024
1 parent 23336fd commit f6589d8
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 37 deletions.
35 changes: 16 additions & 19 deletions src/main/java/org/tb/dailyreport/action/ShowReleaseAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -128,12 +128,12 @@ protected ActionForward executeAuthenticated(ActionMapping mapping,
return mapping.getInputForward();
}

LocalDate releaseDate = LocalDate.parse(releaseForm.getReleaseDate());
LocalDate releaseDate = releaseForm.getReleaseDate();
timereportService.releaseTimereports(employeecontract.getId(), releaseDate);

Employeecontract employeeContract = employeecontractDAO.getEmployeeContractById(employeecontract.getId());
releaseDateFromContract = employeeContract.getReportReleaseDate();
releaseForm.setReleaseDate(releaseDateFromContract.toString());
releaseForm.setReleaseDate(releaseDateFromContract);
request.getSession().setAttribute("currentEmployeeContract", employeeContract);

// build recipient for releasemail for BL
Expand Down Expand Up @@ -184,25 +184,25 @@ protected ActionForward executeAuthenticated(ActionMapping mapping,
return mapping.getInputForward();
}

LocalDate acceptanceDate = LocalDate.parse(releaseForm.getAcceptanceDate());
LocalDate acceptanceDate = releaseForm.getAcceptanceDate();
timereportService.acceptTimereports(employeecontract.getId(), acceptanceDate);

Employeecontract employeeContract = employeecontractDAO.getEmployeeContractById(employeecontract.getId());
acceptanceDateFromContract = employeeContract.getReportAcceptanceDate();
releaseForm.setAcceptanceDate(acceptanceDateFromContract.toString());
releaseForm.setAcceptanceDate(acceptanceDateFromContract);
request.getSession().setAttribute("currentEmployeeContract", employeeContract);
}

if (request.getParameter("task") != null && request.getParameter("task").equals("reopen")) {
LocalDate reopenDate = LocalDate.parse(releaseForm.getReopenDate());
LocalDate reopenDate = releaseForm.getReopenDate();
timereportService.reopenTimereports(employeecontract.getId(), reopenDate);

// reload potenial updated data to feed the session and form
employeecontract = employeecontractDAO.getEmployeeContractById(employeecontract.getId());
releaseDateFromContract = employeecontract.getReportReleaseDate();
releaseForm.setReleaseDate(releaseDateFromContract.toString());
releaseForm.setReleaseDate(releaseDateFromContract);
acceptanceDateFromContract = employeecontract.getReportAcceptanceDate();
releaseForm.setAcceptanceDate(acceptanceDateFromContract.toString());
releaseForm.setAcceptanceDate(acceptanceDateFromContract);
}

if (request.getParameter("task") != null && request.getParameter("task").equals("updateSupervisor")) {
Expand All @@ -220,8 +220,8 @@ protected ActionForward executeAuthenticated(ActionMapping mapping,
}

if (request.getParameter("task") == null || updateEmployee) {
releaseForm.setReleaseDate(releaseDateFromContract.toString());
releaseForm.setAcceptanceDate(acceptanceDateFromContract.toString());
releaseForm.setReleaseDate(releaseDateFromContract);
releaseForm.setAcceptanceDate(acceptanceDateFromContract);
releaseForm.setReopenDate(releaseForm.getReleaseDate());
}

Expand All @@ -243,7 +243,7 @@ private ActionMessages validateFormDataForRelease(
errors = new ActionMessages();
}

LocalDate date = LocalDate.parse(releaseForm.getReleaseDate());
LocalDate date = releaseForm.getReleaseDate();

if (date.isBefore(selectedEmployeecontract.getValidFrom())
|| selectedEmployeecontract.getValidUntil() != null
Expand Down Expand Up @@ -279,25 +279,22 @@ private ActionMessages validateFormDataForAcceptance(
errors = new ActionMessages();
}

LocalDate date = LocalDate.parse(releaseForm.getAcceptanceDate());
LocalDate acceptanceDate = releaseForm.getAcceptanceDate();

if (date.isBefore(selectedEmployeecontract.getValidFrom())
|| selectedEmployeecontract.getValidUntil() != null && date.isAfter(selectedEmployeecontract.getValidUntil())) {
if (acceptanceDate.isBefore(selectedEmployeecontract.getValidFrom())
|| selectedEmployeecontract.getValidUntil() != null && acceptanceDate.isAfter(selectedEmployeecontract.getValidUntil())) {
errors.add("acceptancedate", new ActionMessage("form.release.error.date.invalid.foremployeecontract"));
}

LocalDate releaseDate = selectedEmployeecontract.getReportReleaseDate();

if (selectedEmployeecontract.getReportReleaseDate() != null && date.isAfter(selectedEmployeecontract.getReportReleaseDate())) {
if (selectedEmployeecontract.getReportReleaseDate() != null && acceptanceDate.isAfter(selectedEmployeecontract.getReportReleaseDate())) {
errors.add("acceptancedate", new ActionMessage("form.release.error.date.after.release"));
}

if (selectedEmployeecontract.getReportAcceptanceDate() != null && date.isBefore(selectedEmployeecontract.getReportAcceptanceDate())) {
if (selectedEmployeecontract.getReportAcceptanceDate() != null && acceptanceDate.isBefore(selectedEmployeecontract.getReportAcceptanceDate())) {
errors.add("acceptancedate", new ActionMessage("form.release.error.date.before.stored"));
}

Employee loginEmployee = (Employee) request.getSession().getAttribute(
"loginEmployee");
Employee loginEmployee = (Employee) request.getSession().getAttribute("loginEmployee");
if (selectedEmployeecontract.getEmployee().equals(loginEmployee)) {
errors.add("acceptancedate", new ActionMessage("form.release.error.foureyesprinciple"));
}
Expand Down
71 changes: 62 additions & 9 deletions src/main/java/org/tb/dailyreport/action/ShowReleaseForm.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,12 @@
import static org.tb.common.util.DateUtils.today;

import jakarta.servlet.http.HttpServletRequest;
import java.time.LocalDate;
import java.time.YearMonth;
import java.time.format.DateTimeFormatter;
import lombok.Getter;
import lombok.Setter;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.tb.employee.domain.Employeecontract;
Expand All @@ -17,28 +21,77 @@ public class ShowReleaseForm extends ActionForm {
private Long employeeContractId;
private Long supervisorId;

private String releaseDate;
private String acceptanceDate;
private String reopenDate;
private LocalDate releaseDate;
private LocalDate acceptanceDate;
private LocalDate reopenDate;

private String releaseDateString;
private String acceptanceDateString;
private String reopenDateString;

@Override
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
syncDateFields();
return super.validate(mapping, request);
}

@Override
public void reset(ActionMapping mapping, HttpServletRequest request) {
Employeecontract employeecontract = (Employeecontract) request.getSession().getAttribute("loginEmployeeContract");
releaseDate = today().toString();
acceptanceDate = today().toString();
releaseDate = today();
acceptanceDate = today();
if (employeecontract != null) {
if (employeecontract.getReportReleaseDate() == null) {
releaseDate = employeecontract.getValidFrom().toString();
releaseDate = employeecontract.getValidFrom();
} else {
releaseDate = employeecontract.getReportReleaseDate().toString();
releaseDate = employeecontract.getReportReleaseDate();
}
if (employeecontract.getReportAcceptanceDate() == null) {
acceptanceDate = employeecontract.getValidFrom().toString();
acceptanceDate = employeecontract.getValidFrom();
} else {
acceptanceDate = employeecontract.getReportAcceptanceDate().toString();
acceptanceDate = employeecontract.getReportAcceptanceDate();
}
}
reopenDate = releaseDate;
syncStringFields();
}

private void syncDateFields() {
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM");
if(releaseDateString != null && !releaseDateString.isEmpty()) {
releaseDate = YearMonth.parse(releaseDateString, fmt).atEndOfMonth();
} else {
releaseDate = null;
}
if(acceptanceDateString != null && !acceptanceDateString.isEmpty()) {
acceptanceDate = YearMonth.parse(acceptanceDateString, fmt).atEndOfMonth();
} else {
acceptanceDate = null;
}
if(reopenDateString != null && !reopenDateString.isEmpty()) {
reopenDate = YearMonth.parse(releaseDateString, fmt).atEndOfMonth();
} else {
reopenDate = null;
}
}

private void syncStringFields() {
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM");
if(releaseDate != null) {
releaseDateString = fmt.format(releaseDate);
} else {
releaseDateString = "";
}
if(acceptanceDate != null) {
acceptanceDateString = fmt.format(acceptanceDate);
} else {
acceptanceDateString = "";
}
if(reopenDate != null) {
reopenDateString = fmt.format(reopenDate);
} else {
reopenDateString = "";
}
}

}
14 changes: 5 additions & 9 deletions src/main/webapp/dailyreport/showRelease.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@
<b><bean:message key="main.release.release.until.text" />:</b>
</td>
<td align="left" class="noBborderStyle">
<input type="date" name="releaseDate" value="<bean:write name="showReleaseForm" property="releaseDate" />"/>
<input type="month" name="releaseDateString" value="<bean:write name="showReleaseForm" property="releaseDateString" />"/>
</td>

<td class="noBborderStyle">
Expand All @@ -205,10 +205,8 @@
<b><bean:message key="main.release.accept.until.text" />:</b>
</td>
<td align="left" class="noBborderStyle">
<input type="date" name="acceptanceDate" value="<bean:write name="showReleaseForm" property="acceptanceDate" />" />
<span style="color: red"><html:errors
property="acceptancedate" />
</span>
<input type="month" name="acceptanceDateString" value="<bean:write name="showReleaseForm" property="acceptanceDateString" />" />
<span style="color: red"><html:errors property="acceptancedate" /></span>
</td>

<td class="noBborderStyle">
Expand All @@ -233,10 +231,8 @@
<b><bean:message key="main.release.reopen.until.text" />:</b>
</td>
<td align="left" class="noBborderStyle">
<input type="date" name="reopenDate" value="<bean:write name="showReleaseForm" property="reopenDate" />" />
<span style="color: red"><html:errors
property="reopendate" />
</span>
<input type="month" name="reopenDateString" value="<bean:write name="showReleaseForm" property="reopenDateString" />" />
<span style="color: red"><html:errors property="reopendate" /></span>
</td>

<td class="noBborderStyle">
Expand Down

0 comments on commit f6589d8

Please sign in to comment.