/** * Test the unsubscribe event * * @return void */ public function testUnsubscribeOfficialAccount() { factory(App\Models\Subscriber::class)->create(); $this->trigger("<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[1234567]]></FromUserName><CreateTime>123456789</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[unsubscribe]]></Event></xml>"); $this->assertResponseOk(); $this->see('success'); $this->assertFalse(Subscriber::where('openId', 1234567)->first()->subscribed()); }
private function createList() { DB::transaction(function () { $this->mailing->status = 'working'; $this->mailing->save(); /** @var ListMailing $list */ $list = ListMailing::forceCreate(['mailing_id' => $this->mailing->id, 'name' => 'some auto name', 'status' => 'pending']); Subscriber::where('status', 'active')->get()->each(function (Subscriber $subscriber) use($list) { ListMember::forceCreate(['list_id' => $list->id, 'subscriber_id' => $subscriber->id]); }); }); }
public function listing($page, $limit) { $response = array('data' => array(), 'paginator' => ''); if (!empty($limit)) { $subscribers = Subscriber::paginate($limit); } else { $subscribers = Subscriber::where('id', '>', '0')->get(); } if (!empty($subscribers)) { foreach ($subscribers as $key => $subscriber) { $response['data'][] = $this->get($subscriber->id, false); } } if (!empty($limit)) { $response = Utility::paginator($response, $subscribers, $limit); } return $response; }
/** * Show the application dashboard to the user. * * @return Response */ public function contact(Request $request) { $this->validate($request, ['name' => 'required|min:3|max:255', 'email' => 'required|email', 'contact_no' => 'numeric|min:10', 'subject' => 'required', 'message' => 'required']); Mail::send('emails.contact_admin', array('input' => Input::get()), function ($message) { $message->from(Input::get('email'), Input::get('name'))->to(env('MAIL_FROM_EMAIL'), env('MAIL_FROM_NAME'))->subject('Received new request'); }); Mail::send('emails.contact_user', array(), function ($message) { $message->to(Input::get('email'), Input::get('name'))->subject('Thanks for contacting us.'); }); Contact::create(Input::get()); if (Input::get('subscribe')) { $subscriber = Subscriber::where('email', '=', Input::get('email'))->first(); if (!isset($subscriber->exists)) { $subscriber_create = Subscriber::create(Input::get()); } } return response()->json(['message' => 'Thanks for your request. Our representative will contact you soon.']); }
/** * Handle the event. * * @param \App\Events\WechatUserSubscribed $event * @return \App\Models\Message */ public function handle(WechatUserSubscribed $event) { $m = $event->message; /** * openId is always unique to our official account, so if user subscribes * again, we just need to toggle un-subscribed flag. */ if ($subscriber = Subscriber::where('openId', $m->fromUserName)->where('unsubscribed', true)->first()) { $subscriber->unsubscribed = false; } else { $subscriber = new Subscriber(); $subscriber->openId = $m->fromUserName; } $subscriber->save(); // Link profile with subscriber if subscribe comes from profile page. if ($key = $m->messageable->eventKey) { Profile::find(Str::substr($key, Str::length('qrscene_')))->update(['weixin' => $m->fromUserName]); event(new ChangeSubscriberGroup($subscriber)); } return $this->greetMessage($m->fromUserName, !is_null($key)); }
/** * Check if user has subscribed to our official account * * @return Boolean */ public function subscribed() { return !is_null(Subscriber::where('openId', $this->weixin)->first()); }
/** * Handle the event. * * @param WechatUserUnsubscribed $event * @return void */ public function handle(WechatUserUnsubscribed $event) { $subscriber = Subscriber::where('openId', $event->message->fromUserName)->first(); $subscriber->unsubscribed = true; $subscriber->save(); }