/**
  * A method to process POST request for editing an existing meeting
  * @param null $post the $_POST array
  */
 public function editPost($post = null)
 {
     if (isset($post)) {
         # Create an object of existing meeting
         $meeting = $this->model('Meeting', $post['id']);
         # Check if we have access to editing
         $this->checkAuthIsApproved($meeting);
         $this->checkAuthCancelled($meeting);
         $this->checkAuthProjectScope($meeting->getProjectId());
         # Set googleEventId to the value provided from database (if any)
         $googleEventId = $meeting->getGoogleEventId();
         # Get details from post request
         $deadline = $post['deadline'];
         $deadline_time_hours = $post['deadline_time_hours'];
         $deadline_time_minutes = $post['deadline_time_minutes'];
         $isApproved = 0;
         if (isset($post['isApproved'])) {
             $isApproved = 1;
         }
         # If it's the supervisor who edits, it's automatically approved
         if (HTTPSession::getInstance()->USER_TYPE == User::USER_TYPE_SUPERVISOR) {
             $isApproved = 1;
         }
         $arrivedOnTime = 0;
         if (isset($post['arrivedOnTime'])) {
             $arrivedOnTime = 1;
         }
         $takenPlace = 0;
         if (isset($post['takenPlace'])) {
             $takenPlace = 1;
         }
         $isCancelled = 0;
         if (isset($post['isCancelled'])) {
             $isCancelled = 1;
         }
         # Set correct format of provided date
         $dateTime = DateTime::createFromFormat('d-m-Y H:i', $deadline . " " . $deadline_time_hours . ":" . $deadline_time_minutes);
         $date = $dateTime->format('Y-m-d H:i:s');
         # Set meeting with provided details
         $meeting->setDatetime($date);
         $meeting->setIsApproved($isApproved);
         $meeting->setTakenPlace($takenPlace);
         $meeting->setArrivedOnTime($arrivedOnTime);
         $meeting->setIsCancelled($isCancelled);
         # Check if meeting is approved by a supervisor and user is logged in as google user
         # Also check if googleEventId exists for this meeting
         if ($isApproved && !empty(GoogleAuth::$auth) && !empty($googleEventId)) {
             # Get google auth format of datetime
             $datetimeGoogleStart = DatetimeConverter::getGoogleAuthDateTimeFormat($date);
             $datetimeGoogleEnd = $dateTime;
             $datetimeGoogleEnd->modify("+1 hour");
             $datetimeGoogleEnd = DatetimeConverter::getGoogleAuthDateTimeFormat($datetimeGoogleEnd->format('Y-m-d H:i:s'));
             # In that case, we can add it to the google calendar and save the id of this event
             $googleEventId = GoogleAuth::getInstance()->editEventInCalendar($googleEventId, $datetimeGoogleStart, $datetimeGoogleEnd);
         }
         if (!empty($googleEventId)) {
             $meeting->setGoogleEventId($googleEventId);
         }
         # Save changes
         $meeting->Save();
         # If meeting has taken place, create a notification
         if ($takenPlace) {
             new NotificationMeeting($meeting->getID(), NotificationMeeting::TAKEN_PLACE);
         }
     }
     # Redirect back to meetings
     header('Location: ' . SITE_URL . 'meetings/' . $post['id']);
     die;
 }