Skip to content

Commit

Permalink
#405 add workingdaytype to matrix data
Browse files Browse the repository at this point in the history
  • Loading branch information
KlausRicharz committed Aug 19, 2024
1 parent 1ca866d commit 8bf73ab
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,11 @@ public static String fromDBtimeToString(Employeecontract ec, int hours, int minu

public static String hoursMinToString(int[] time) {

int trainingHours = time[0];
int trainingMinutes = time[1];
long trainingHours = time[0];
long trainingMinutes = time[1];

trainingHours += trainingMinutes / 60;
trainingMinutes = trainingMinutes % 60;
trainingHours += trainingMinutes / MINUTES_PER_HOUR;
trainingMinutes = trainingMinutes % MINUTES_PER_HOUR;

StringBuilder trainingString = new StringBuilder();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

import lombok.Data;
import org.tb.common.util.DurationUtils;
import org.tb.dailyreport.domain.Workingday.WorkingDayType;

import static org.tb.common.util.TimeFormatUtils.timeFormatMinutes;

Expand All @@ -22,11 +23,14 @@ public class MatrixDayTotal {
private boolean invalidStartOfWork;
private Long breakMinutes;
private boolean invalidBreakTime;
private WorkingDayType workingDayType;
private Duration contractWorkingTime;

public MatrixDayTotal(LocalDate date, int day, Duration workingTime) {
public MatrixDayTotal(LocalDate date, int day, Duration workingTime, Duration contractWorkingTime) {
this.date = date;
this.day = day;
this.workingTime = workingTime;
this.contractWorkingTime = contractWorkingTime;
}

public String getWorkingTimeString() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -215,13 +215,13 @@ private List<MatrixDayTotal> initializeDayTotals(long employeeContractId,
boolean fillStartAndBreakTime) {

// initialize MatrixDayTotals for each dates between dateFirst and dateLast

var contract = employeecontractDAO.getEmployeeContractById(employeeContractId);
List<MatrixDayTotal> dayTotals = new ArrayList<>();

Map<LocalDate, Workingday> workingDays = queryWorkingDays(dateFirst, dateLast, employeeContractId);
var dates = dateFirst.datesUntil(dateLast.plusDays(1)).toList(); // to include the last date too
int day = 1;
for(var date: dates) {
var dayTotal = new MatrixDayTotal(date, day, Duration.ZERO);
var dayTotal = new MatrixDayTotal(date, day, Duration.ZERO, contract.getDailyWorkingTime());

// mark weekends
var dayOfWeek = dayTotal.getDate().getDayOfWeek();
Expand All @@ -236,20 +236,24 @@ private List<MatrixDayTotal> initializeDayTotals(long employeeContractId,
dayTotal.setPublicHolidayName(publicHolidayMap.get(date).getName());
}

var workingDay = workingDays.get(date);
if(workingDay != null) {
dayTotal.setWorkingDayType(workingDay.getType());
}

dayTotals.add(dayTotal);
day++;
}

if (fillStartAndBreakTime) {
var invalidBreakTimes = timereportService.validateBreakTimes(employeeContractId, dateFirst, dateLast);
var invalidStartOfWorkDays = timereportService.validateBeginOfWorkingDays(employeeContractId, dateFirst, dateLast);
Map<LocalDate, Workingday> workingDays = queryWorkingDays(dateFirst, dateLast, employeeContractId);
for(var dayTotal : dayTotals) {
var date = dayTotal.getDate();
var workingDay = workingDays.get(date);
if (workingDay != null) {
dayTotal.setBreakMinutes(workingDay.getBreakminutes() + workingDay.getBreakhours() * MINUTES_PER_HOUR);
dayTotal.setStartOfWorkMinute(workingDay.getStarttimeminute() + workingDay.getStarttimehour() * 60L);
dayTotal.setStartOfWorkMinute(workingDay.getStarttimeminute() + workingDay.getStarttimehour() * MINUTES_PER_HOUR);
}
boolean invalidStartOfWork = invalidStartOfWorkDays.containsKey(date) && invalidStartOfWorkDays.get(date) != NONE;
boolean invalidBreakTime = invalidBreakTimes.containsKey(date) && invalidBreakTimes.get(date) != NONE;
Expand Down

0 comments on commit 8bf73ab

Please sign in to comment.