/** * @param Request $request * @return static */ protected function createMailing(Request $request) { $mailing = new MailingNode(); $mailing->setNodeTypeByKey($request->input('type')); $locale = $this->validateLocale($request, true); $mailing->fill([$locale => $request->all()]); $mailing->makeRoot(); $mailing->save(); return $mailing; }
/** * 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(); }
/** * Populates a mailchimp campaign content * * @param Client $client * @param string $mailingId * @param MailingNode $mailing * @param MailingList $list * @return string $campaignId */ protected function makeUpdateMailchimpCampaignContentRequest(Client $client, $mailingId, MailingNode $mailing, MailingList $list) { $translation = $mailing->translateOrFirst(); set_app_locale($translation->locale); $_inBrowser = false; $mail = view($mailing->getNodeTypeName(), compact('mailing', 'list', 'translation', '_inBrowser'))->render(); return $client->post('campaigns/' . $mailingId . '/content', ['headers' => ['X-HTTP-Method-Override' => 'PUT'], 'json' => ['html' => $mail, 'url' => route('reactor.mailings.preview', $mailing->translateOrFirst()->node_name)]]); }