package models.helpers; import models.Attendee; import models.Meeting; import models.User; import models.Attendee.MeetingResponse; /** * Helps with various functions on model items relating to a Meeting. * * @see Meeting * @author Alex Jarvis axj7@aber.ac.uk */ public class MeetingHelper { /** * Creates an Attendee for a Meeting with the User specified. * @param meeting * @param user */ public static void createAttendee(Meeting meeting, User user) { Attendee attendee = new Attendee(); attendee.meeting = meeting; attendee.user = user; attendee.create(); meeting.attendees.add(attendee); meeting.save(); user.meetingsRelated.add(attendee); user.save(); } /** * Removes the Attendee from the Meeting where the Attendee is the User specified. * @param meeting * @param user * @return */ public static boolean removeAttendee(Meeting meeting, User user) { for (Attendee attendee : meeting.attendees) { if (attendee.user.equals(user)) { attendee.delete(); return true; } } return false; } /** * Sets an Attendee's MeetingResponse (RSVP) status to that specified. * @param meeting * @param user * @param rsvp * @return */ public static boolean setAttendeeRSVP(Meeting meeting, User user, Attendee.MeetingResponse rsvp) { if (user != null) { for (Attendee attendee : meeting.attendees) { if (attendee.user.equals(user)) { attendee.rsvp = rsvp; // By default set the minutes before to 15 when accepting meeting request if (attendee.rsvp == MeetingResponse.YES && attendee.minutesBefore == null) { attendee.minutesBefore = 15; } attendee.save(); return true; } } } return false; } /** * Sets the User's MeetingResponse (RSVP) status to YES for a meeting * where they are already an Attendee. * @see MeetingResponse * @param meeting * @param user * @return */ public static boolean acceptMeetingRequest(Meeting meeting, User user) { return setAttendeeRSVP(meeting, user, MeetingResponse.YES); } /** * Sets the User's MeetingResponse (RSVP) status to NO for a meeting * where they are already an Attendee. * @see MeetingResponse * @param meeting * @param user * @return */ public static boolean declineMeetingRequest(Meeting meeting, User user) { return setAttendeeRSVP(meeting, user, MeetingResponse.NO); } /** * Updates the minutes before a Meeting that the specified User wants to be notified. * @param meeting * @param user * @return */ public static boolean updateAttendeesMinutesBefore(Integer minutesBefore, Meeting meeting, User user) { if (user != null) { for (Attendee attendee : meeting.attendees) { if (attendee.user.equals(user)) { attendee.minutesBefore = minutesBefore; attendee.save(); return true; } } } return false; } }