/** * Dispatches Mailchimp mailing * * @param MailingNode $mailing * @param MailingList $list */ public function dispatchMailchimpMailing(MailingNode $mailing, MailingList $list) { $client = $this->getNewMailchimpGuzzleClient(); $mailingId = $mailing->getExternalId($list->getKey()); if ($this->isMailchimpCampaignUpdateable($client, $mailingId)) { $this->makeUpdateMailchimpCampaignRequest($client, $mailingId, $mailing, $list); } else { $response = $this->makeCreateMailchimpCampaignRequest($client, $mailing, $list); $mailingId = $response->json()['id']; $mailing->setExternalId($list->getKey(), $mailingId); } $this->makeUpdateMailchimpCampaignContentRequest($client, $mailingId, $mailing, $list); }
/** * Creates a form for associating lists * * @param int $id * @param Model $model * @param string $resourceMultiple * @return \Kris\LaravelFormBuilder\Form */ protected function getAddListForm($id, Model $model, $resourceMultiple) { $form = $this->form('Reactor\\Html\\Forms\\MailingLists\\AddMailingListForm', ['url' => route('reactor.' . $resourceMultiple . '.lists.associate', $id)]); $choices = MailingList::all()->diff($model->lists)->pluck('name', 'id')->toArray(); $form->modify('list', 'select', ['choices' => $choices]); return [$form, count($choices)]; }
/** * Unlink a list from subscriber * * @param int $id * @return MailingList */ public function dissociateList($id) { return $this->lists()->detach(MailingList::findOrFail($id)); }
/** * Checks if a member is subscribed to a list * * @param Subscriber $subscriber * @param MailingList $list */ protected function isMemberSubscribedTo(Subscriber $subscriber, MailingList $list) { return $subscriber->lists->contains($list->getKey()); }
/** * List the specified resource fields. * * @param int $id * @return Response */ public function mailings($id) { $mailing_list = MailingList::findOrFail($id); $mailings = $mailing_list->mailings()->sortable()->paginate(); return $this->compileView('mailing_lists.mailings', compact('mailing_list', 'mailings'), trans('mailings.title')); }
/** * Dispatches the mailing * * @param MailingService $mailingService * @param int $id * @param int $list * @return response */ public function dispatchMailing(MailingService $mailingService, $id, $list) { $this->authorize('EDIT_MAILINGS'); $mailing = MailingNode::findOrFail($id); $list = MailingList::findOrFail($list); // Before this we are in the reactor theme by default Theme::set(config('themes.active_mailings')); if ($list->type === 'mailchimp') { $mailingService->dispatchMailchimpMailing($mailing, $list); } else { $mailingService->dispatchDefaultMailing($mailing, $list); } $this->notify('mailings.dispatched', 'dispatched_mailing', $mailing); return redirect()->back(); }