Example #1
0
 /**
  * Create event messages. If the message is reporting location, we use
  * eventKey to store coordinates in order to save estate.
  *
  * @param array $fields
  * @return Message|null
  */
 protected function createEvent(array $fields)
 {
     $basic = $this->createBasic($fields);
     $event = new Event();
     $extra = collect($fields)->filter(function ($val, $name) {
         return !in_array($name, $this->common);
     });
     $event->event = Str::lower($extra->get('Event'));
     $event->ticket = $extra->get('Ticket');
     // Weixin sent empty array for unsubscribe event
     $event->eventKey = $extra->get('EventKey') ?: null;
     if ($extra->has('Latitude')) {
         $event->eventKey = implode(';', $extra->only('Latitude', 'Longitude', 'Precision')->values()->toArray());
     }
     $event->save();
     $event->message()->save($basic);
     return $basic;
 }