mirror of
https://github.com/st-tu-dresden-praktikum/swt23w23
synced 2024-07-19 21:04:36 +02:00
Add orderCalender
This commit is contained in:
parent
391ddaf03b
commit
b836a38942
|
@ -11,6 +11,7 @@ import org.salespointframework.useraccount.Role;
|
||||||
import org.salespointframework.useraccount.UserAccount;
|
import org.salespointframework.useraccount.UserAccount;
|
||||||
import org.salespointframework.useraccount.web.LoggedIn;
|
import org.salespointframework.useraccount.web.LoggedIn;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.data.domain.Sort;
|
||||||
import org.springframework.data.jpa.repository.query.Procedure;
|
import org.springframework.data.jpa.repository.query.Procedure;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
|
@ -23,10 +24,7 @@ import java.time.LocalTime;
|
||||||
import java.time.temporal.ChronoUnit;
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.time.temporal.TemporalUnit;
|
import java.time.temporal.TemporalUnit;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
|
@ -196,4 +194,54 @@ public class OrderController {
|
||||||
}
|
}
|
||||||
return "redirect:/event";
|
return "redirect:/event";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/orders/calender")
|
||||||
|
public String calender(Model model) {
|
||||||
|
ArrayList<ArrayList<String>> datesOfMonth = new ArrayList<ArrayList<String>>(28);
|
||||||
|
LocalDateTime startDateTime = LocalDateTime.now();
|
||||||
|
LocalDateTime endDateTime = startDateTime.plusDays(27).withHour(23).withMinute(59).withSecond(59); // FIXME: set me to end of day
|
||||||
|
LocalDate startDate = startDateTime.toLocalDate();
|
||||||
|
LocalDate endDate = endDateTime.toLocalDate();
|
||||||
|
|
||||||
|
// create all dates of the calender
|
||||||
|
for (LocalDate date = startDate; !date.isAfter(endDate); date = date.plusDays(1)) {
|
||||||
|
ArrayList<String> x = new ArrayList<String>(2);
|
||||||
|
x.add(Integer.toString(date.getDayOfMonth()));
|
||||||
|
x.add(date.toString());
|
||||||
|
datesOfMonth.add(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
// add each order overlapping with the calender to the days it overlaps with
|
||||||
|
for (CustomOrder order : this.orderManagement.findBy(Interval.from(startDateTime).to(endDateTime))) {
|
||||||
|
int start_index_inclusive = Math.max((int) startDate.until(order.getStart().toLocalDate(), ChronoUnit.DAYS),0);
|
||||||
|
int end_index_exclusive = Math.min((int) startDate.until(order.getFinish().toLocalDate(), ChronoUnit.DAYS), 27) + 1;
|
||||||
|
String order_id = Objects.requireNonNull(order.getId()).toString();
|
||||||
|
for (int i = start_index_inclusive; i < end_index_exclusive; i++) {
|
||||||
|
datesOfMonth.get(i).add(order_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// get names of weekdays for table header starting with the current day
|
||||||
|
LocalDate endOfWeekDate = startDate.plusDays(6);
|
||||||
|
ArrayList<String> dayNames = new ArrayList<String>(7);
|
||||||
|
for (LocalDate date = startDate; !date.isAfter(endOfWeekDate); date = date.plusDays(1)) {
|
||||||
|
dayNames.add(date.getDayOfWeek().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayList<ArrayList<ArrayList<String>>> weeksOfMonth = new ArrayList<ArrayList<ArrayList<String>>>();
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
weeksOfMonth.add(new ArrayList<ArrayList<String>>(7));
|
||||||
|
for (int j = 0; j < 7; j++) {
|
||||||
|
weeksOfMonth.get(i).add(new ArrayList<String>());
|
||||||
|
weeksOfMonth.get(i).get(j).addAll(datesOfMonth.get(
|
||||||
|
(i==0) ? j : (j==0) ? i : i*j
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
model.addAttribute("weeksOfMonth", weeksOfMonth);
|
||||||
|
model.addAttribute("dayNames", dayNames);
|
||||||
|
return "orders_calender";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue