public function postIntegrations(MailchimpIntegrationRequest $request) { /** @var Group $group */ $group = Group::findOrFail($request->route('group')); /** @var Settings $settings */ $settings = $group->settings; $settings->setMailchimpEnabled($request->get('mailchimp-enabled')); $settings->setMailchimpKey($request->get('mailchimp-key')); $settings->setMailchimpListId($request->get('mailchimp-list-id')); $group->settings = $settings; $group->save(); Session::setGroup($group); return redirect('/group/' . $group->id . '/settings/integrations')->withFlashSuccess('Your integration settings have been saved'); }
/** * Get the validation rules that apply to the request. * * @return array */ public function rules() { // validate that the provided API key is accurate Validator::extend('valid_mailchimp_key', function ($attr, $val) { // maintain running tests offline if (app()->environment('testing')) { return true; } $easychimp = new Easychimp(new Mailchimp($val)); try { $easychimp->validateKey(); // we'll reuse this when validating the list id MailchimpIntegrationRequest::$easychimp = $easychimp; } catch (InvalidApiKey $e) { return false; } return true; }); // validate that the provided list id is accurate Validator::extend('valid_mailchimp_list_id', function ($attr, $val) { // maintain running tests offline if (app()->environment('testing')) { return true; } return MailchimpIntegrationRequest::$easychimp->mailingList($val)->exists(); }); return ['mailchimp-key' => 'required_if:mailchimp-enabled,1|valid_mailchimp_key', 'mailchimp-list-id' => 'required_with:mailchimp-enabled|valid_mailchimp_list_id']; }