service and event
Addded findFirstMeetingsBySupervisor in the FindMeetingsService and maps the result to a record FirstMeetingCalendarEvent. Currently the MyCalendarPanel makes the call to be able to render the first meetings onto the supervisors calendar. There is still some work to be done with the rendering of events to make it prettier
This commit is contained in:
parent
4a4aafda51
commit
b82dc71aa5
core/src/main/java/se/su/dsv/scipro/firstmeeting
view/src/main/java/se/su/dsv/scipro/supervisor/panels
@ -0,0 +1,11 @@
|
||||
package se.su.dsv.scipro.firstmeeting;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
public record FirstMeetingCalendarEvent(
|
||||
String title,
|
||||
LocalDate date,
|
||||
String room,
|
||||
String projectTitle,
|
||||
Long projectId
|
||||
) {}
|
@ -1,10 +1,15 @@
|
||||
package se.su.dsv.scipro.firstmeeting;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import se.su.dsv.scipro.project.Project;
|
||||
import se.su.dsv.scipro.system.User;
|
||||
|
||||
public interface FirstMeetingService {
|
||||
Optional<ProjectFirstMeeting> findByProject(Project project);
|
||||
|
||||
List<FirstMeetingCalendarEvent> findFirstMeetingsBySupervisor(User supervisor);
|
||||
|
||||
ProjectFirstMeeting schedule(Project project, Date date, String room, String description);
|
||||
}
|
||||
|
@ -1,15 +1,23 @@
|
||||
package se.su.dsv.scipro.firstmeeting;
|
||||
|
||||
import com.querydsl.jpa.impl.JPAQuery;
|
||||
import jakarta.inject.Inject;
|
||||
import jakarta.inject.Provider;
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.transaction.Transactional;
|
||||
import java.time.ZoneId;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import se.su.dsv.scipro.activityplan.Activity;
|
||||
import se.su.dsv.scipro.activityplan.ActivityPlanFacade;
|
||||
import se.su.dsv.scipro.activityplan.QActivity;
|
||||
import se.su.dsv.scipro.activityplan.QActivityPlan;
|
||||
import se.su.dsv.scipro.project.Project;
|
||||
import se.su.dsv.scipro.project.ProjectStatus;
|
||||
import se.su.dsv.scipro.project.QProject;
|
||||
import se.su.dsv.scipro.system.AbstractServiceImpl;
|
||||
import se.su.dsv.scipro.system.User;
|
||||
|
||||
public class FirstMeetingServiceImpl
|
||||
extends AbstractServiceImpl<ProjectFirstMeeting, Long>
|
||||
@ -30,6 +38,41 @@ public class FirstMeetingServiceImpl
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<FirstMeetingCalendarEvent> findFirstMeetingsBySupervisor(User supervisor) {
|
||||
JPAQuery<ProjectFirstMeeting> firstMeetingsQuery = createQuery()
|
||||
.select(QProjectFirstMeeting.projectFirstMeeting)
|
||||
.from(QProjectFirstMeeting.projectFirstMeeting)
|
||||
.join(QProjectFirstMeeting.projectFirstMeeting.activity, QActivity.activity)
|
||||
.join(QActivity.activity.activityPlan, QActivityPlan.activityPlan)
|
||||
.join(QActivityPlan.activityPlan.project, QProject.project)
|
||||
.where(
|
||||
QProject.project.headSupervisor
|
||||
.eq(supervisor)
|
||||
.and(QProject.project.projectStatus.eq(ProjectStatus.ACTIVE))
|
||||
);
|
||||
|
||||
List<ProjectFirstMeeting> projectFirstMeetings = firstMeetingsQuery.fetch();
|
||||
|
||||
return projectFirstMeetings
|
||||
.stream()
|
||||
.map(projectFirstMeeting ->
|
||||
new FirstMeetingCalendarEvent(
|
||||
projectFirstMeeting.getActivity().getTitle(),
|
||||
projectFirstMeeting
|
||||
.getActivity()
|
||||
.getDate()
|
||||
.toInstant()
|
||||
.atZone(ZoneId.systemDefault())
|
||||
.toLocalDate(),
|
||||
projectFirstMeeting.getRoom(),
|
||||
projectFirstMeeting.getActivity().getActivityPlan().getProject().getTitle(),
|
||||
projectFirstMeeting.getActivity().getActivityPlan().getProject().getId()
|
||||
)
|
||||
)
|
||||
.toList();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public ProjectFirstMeeting schedule(
|
||||
|
@ -1,5 +1,6 @@
|
||||
package se.su.dsv.scipro.supervisor.panels;
|
||||
|
||||
import jakarta.inject.Inject;
|
||||
import java.time.DayOfWeek;
|
||||
import java.time.LocalDate;
|
||||
import java.time.YearMonth;
|
||||
@ -15,10 +16,20 @@ import org.apache.wicket.markup.html.WebMarkupContainer;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.markup.repeater.RepeatingView;
|
||||
import se.su.dsv.scipro.io.dto.CalendarEvent;
|
||||
import se.su.dsv.scipro.firstmeeting.FirstMeetingCalendarEvent;
|
||||
import se.su.dsv.scipro.firstmeeting.FirstMeetingService;
|
||||
import se.su.dsv.scipro.session.SciProSession;
|
||||
import se.su.dsv.scipro.system.User;
|
||||
import se.su.dsv.scipro.system.UserService;
|
||||
|
||||
public class MyCalendarPanel extends Panel {
|
||||
|
||||
@Inject
|
||||
private UserService userService;
|
||||
|
||||
@Inject
|
||||
private FirstMeetingService firstMeetingService;
|
||||
|
||||
private YearMonth currentMonth;
|
||||
private WebMarkupContainer calendarBody;
|
||||
private Label monthLabel;
|
||||
@ -64,6 +75,12 @@ public class MyCalendarPanel extends Panel {
|
||||
add(calendarBody);
|
||||
|
||||
renderCalendar(calendarBody);
|
||||
|
||||
findCalendarEvents();
|
||||
}
|
||||
|
||||
private void findCalendarEvents() {
|
||||
User user = SciProSession.get().getUser();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -92,7 +109,10 @@ public class MyCalendarPanel extends Panel {
|
||||
days.add(date);
|
||||
}
|
||||
|
||||
List<MyCalendarEvent> events = generateSampleEvents(currentMonth);
|
||||
// List<FirstMeetingCalendarEvent> events = generateSampleEvents(currentMonth);
|
||||
List<FirstMeetingCalendarEvent> events = firstMeetingService.findFirstMeetingsBySupervisor(
|
||||
SciProSession.get().getUser()
|
||||
);
|
||||
|
||||
DayOfWeek firstDayOfWeek = DayOfWeek.MONDAY;
|
||||
int offset = (firstDayOfMonth.getDayOfWeek().getValue() - firstDayOfWeek.getValue() + 7) % 7;
|
||||
@ -114,9 +134,12 @@ public class MyCalendarPanel extends Panel {
|
||||
cell.add(dayLabel);
|
||||
|
||||
RepeatingView eventView = new RepeatingView("calendar-events");
|
||||
for (MyCalendarEvent event : events) {
|
||||
if (event.date.equals(day)) {
|
||||
Label eventLabel = new Label(eventView.newChildId(), event.description());
|
||||
for (FirstMeetingCalendarEvent event : events) {
|
||||
if (event.date().equals(day)) {
|
||||
Label eventLabel = new Label(
|
||||
eventView.newChildId(),
|
||||
String.format("%s - %s - %s", event.title(), event.room(), event.projectId())
|
||||
);
|
||||
eventLabel.add(new AttributeModifier("class", "calendar-event"));
|
||||
eventView.add(eventLabel);
|
||||
}
|
||||
@ -138,19 +161,17 @@ public class MyCalendarPanel extends Panel {
|
||||
return cell;
|
||||
}
|
||||
|
||||
private static List<MyCalendarEvent> generateSampleEvents(YearMonth yearMonth) {
|
||||
List<MyCalendarEvent> events = new ArrayList<>();
|
||||
events.add(new MyCalendarEvent("event2", yearMonth.atDay(8), "Event 2"));
|
||||
events.add(new MyCalendarEvent("event1", yearMonth.atDay(3), "Event 1"));
|
||||
events.add(new MyCalendarEvent("event3", yearMonth.atDay(8), "Event 3"));
|
||||
events.add(new MyCalendarEvent("event4", yearMonth.atDay(10), "Event 4"));
|
||||
events.add(new MyCalendarEvent("event5", yearMonth.atDay(16), "Event 5"));
|
||||
events.add(new MyCalendarEvent("event5", yearMonth.atDay(16), "Event 6"));
|
||||
events.add(new MyCalendarEvent("event5", yearMonth.atDay(16), "Event 7"));
|
||||
events.add(new MyCalendarEvent("event5", yearMonth.atDay(16), "Event 8"));
|
||||
events.add(new MyCalendarEvent("event5", yearMonth.atDay(16), "Event 9"));
|
||||
private static List<FirstMeetingCalendarEvent> generateSampleEvents(YearMonth yearMonth) {
|
||||
List<FirstMeetingCalendarEvent> events = new ArrayList<>();
|
||||
events.add(new FirstMeetingCalendarEvent("event2", yearMonth.atDay(8), "room1", "Project 1", 1l));
|
||||
events.add(new FirstMeetingCalendarEvent("event1", yearMonth.atDay(3), "room2", "Project 2", 2l));
|
||||
events.add(new FirstMeetingCalendarEvent("event3", yearMonth.atDay(8), "room1", "Project 3", 3l));
|
||||
events.add(new FirstMeetingCalendarEvent("event4", yearMonth.atDay(10), "room4", "Project 4", 4l));
|
||||
events.add(new FirstMeetingCalendarEvent("event5", yearMonth.atDay(16), "room1", "Project 5", 5l));
|
||||
events.add(new FirstMeetingCalendarEvent("event5", yearMonth.atDay(16), "room1", "Project 6", 6l));
|
||||
events.add(new FirstMeetingCalendarEvent("event5", yearMonth.atDay(16), "room1", "Project 7", 7l));
|
||||
events.add(new FirstMeetingCalendarEvent("event5", yearMonth.atDay(16), "room2", "Project 8", 8l));
|
||||
events.add(new FirstMeetingCalendarEvent("event5", yearMonth.atDay(16), "rooom2", "Project 9", 9l));
|
||||
return events;
|
||||
}
|
||||
|
||||
record MyCalendarEvent(String id, LocalDate date, String description) {}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user