public function afterSaveCommit(CakeEvent $cakeEvent, Event $event, ArrayObject $options)
 {
     if (!empty($event->admin_status_override)) {
         return;
     }
     if ($event->isNew() && !empty($event->parent_event_id)) {
         //This is an instantiation of a recurring event, so no further
         //notifications necessary
         return;
     }
     if ($event->status == $event->getOriginal('status') && !$event->isNew()) {
         //No status change, so no further notifications
         return;
     }
     if (empty($event->club) && !empty($event->club_id)) {
         //All notification letters refer to event's Club name,
         //so ensure that club data is available
         $event->club = $this->Clubs->get($event->club_id);
     }
     if ($event->status == 'Pending') {
         $data = ['settings' => ['to' => TableRegistry::get('Users')->roleEmails(['admin', 'student_admin']), 'subject' => "Club Event Submitted - {$event->title}", 'template' => 'Admin/event_submitted', 'emailFormat' => 'both'], 'vars' => ['modified' => $event->getOriginal('status') == 'Modifications Requested', 'event' => $event]];
         QueueBYUEmailTask::createJob($data);
     } elseif ($event->status == 'Advisor Pending') {
         $this->Clubs->notifyAdvisor($event->club_id, 'Club Event Submitted', 'Advisor/event_submitted', compact('event'));
     } elseif ($event->status == 'Modifications Requested') {
         $this->Clubs->notifyPresident($event->club_id, 'Modifications requested for BYU Club Event', 'Officer/event_modifications_requested', compact('event'));
     } elseif ($event->status == 'Approved') {
         //TODO: notfiy advisor AND president
         $this->instantiateRecurrences($event);
     }
 }
 public function afterSaveCommit(Event $event, EventApprovalRequest $request, ArrayObject $options)
 {
     if ($request->isNew()) {
         $data = ['settings' => ['to' => $request->email, 'subject' => 'Club Event Approval Request', 'template' => "Admin/event_approval_request", 'emailFormat' => 'both'], 'vars' => ['request' => $request]];
         QueueBYUEmailTask::createJob($data);
     }
 }
 public function notifyRequested($advisorId)
 {
     $advisor = $this->get($advisorId, ['contain' => ['Users', 'Clubs']]);
     if (empty($advisor->user->email)) {
         return;
     }
     if (empty($advisor->user->name)) {
         $to = $advisor->user->email;
     } else {
         $to = [$advisor->user->email => $advisor->user->name];
     }
     $data = ['settings' => ['to' => $to, 'subject' => 'Club Advisor Request', 'template' => "Advisor/requested", 'emailFormat' => 'both'], 'vars' => ['advisor' => $advisor->toArray()]];
     QueueBYUEmailTask::createJob($data);
 }
 public function afterSaveCommit(Event $event, Transaction $transaction, ArrayObject $options)
 {
     if ($transaction->isNew()) {
         $this->Clubs->notifyAdvisor($transaction->club_id, 'Club Expenditure Request Submitted', 'Advisor/transaction_submitted', compact('transaction'));
         return;
     }
     if ($transaction->status == $transaction->getOriginal('status')) {
         //No status change, so no further notifications
         return;
     }
     if ($transaction->status == 'Pending') {
         $data = ['settings' => ['to' => TableRegistry::get('Users')->roleEmails(['admin', 'student_admin']), 'subject' => 'Club Expenditure Request Submitted', 'template' => "Admin/transaction_submitted", 'emailFormat' => 'both'], 'vars' => ['transaction' => $transaction]];
         QueueBYUEmailTask::createJob($data);
     }
 }
 public function notify($clubId, $type, $appeal = false, $adminForce = false)
 {
     $approval = $this->find()->contain(['Clubs'])->where(['club_id' => $clubId, 'Approvals.type' => $type])->first();
     if (empty($approval)) {
         return false;
     }
     if (!empty($approval->notification_sent) && !$appeal && !$adminForce) {
         //Already sent!
         return false;
     }
     if ($type == 'Dean') {
         if (empty($approval->email)) {
             return false;
         }
         $to = $approval->email;
         if (empty($approval->club->department)) {
             return false;
         }
         $approval->club->department = TableRegistry::get('Departments')->getFullInfo($approval->club->department);
     } else {
         $emails = TableRegistry::get('Users')->roleEmails(strtolower($type));
         if (empty($emails)) {
             return false;
         }
         $to = $emails;
     }
     $data = ['settings' => ['to' => $to, 'subject' => 'Club Approval Requested', 'template' => "{$type}/approve", 'emailFormat' => 'both'], 'vars' => ['club' => $approval->club->toArray(), 'appealed' => $appeal]];
     if ($type == 'Dean') {
         $data['vars']['auth_hash'] = $approval->auth_hash;
     }
     if ($appeal && !empty($approval->appeal_notes)) {
         $data['vars']['appealNotes'] = $approval->appeal_notes;
     }
     if (!QueueBYUEmailTask::createJob($data)) {
         return false;
     }
     $approval->notification_sent = new Time();
     if ($approval->status == 'Not Sent') {
         $approval->status = 'Pending';
     }
     return $this->save($approval);
 }
 protected function notifyAdvisorPresidentIneligible($officer)
 {
     if (empty($officer->member->club->advisor->user->email)) {
         return;
     }
     $data = ['settings' => ['to' => $officer->member->club->advisor->user->email, 'subject' => 'BYU Club President eligibility changed', 'template' => "Advisor/president_ineligible", 'emailFormat' => 'both'], 'vars' => ['officer' => $officer]];
     QueueBYUEmailTask::createJob($data);
 }
 protected function _notifyUsers($users, $subject, $template, $vars = [], $bulk = false)
 {
     $to = [];
     if (!is_array($users)) {
         $users = [$users];
     }
     foreach ($users as $user) {
         if (empty($user->email)) {
             continue;
         }
         if (empty($user->name)) {
             $to[] = $user->email;
         } else {
             $to[$user->email] = $user->name;
         }
     }
     if (empty($to)) {
         return false;
     }
     $data = ['settings' => ['subject' => $subject, 'template' => $template, 'emailFormat' => 'both'], 'vars' => $vars];
     if (!empty($bulk)) {
         $data['settings']['to'] = $bulk;
         $data['settings']['bcc'] = $to;
     } else {
         $data['settings']['to'] = $to;
     }
     return QueueBYUEmailTask::createJob($data);
 }