Пример #1
0
 /**
  * Ребенок пришел/ушел в/из школу - на вход получаешь id ребенка и тип действия
  * (0-пришел в школу, 1-ушел из школы)Находишь всех родителей ребенка,
  * и делаешь запрос к серверу GCM как написано вот тут
  * https://developers.google.com/cloud-messaging/
  * @param $childId
  * @return integer ResponseCode::consts
  */
 public function event($childId, $data)
 {
     $child = Children::find($childId);
     if (!$child) {
         return ResponseCode::CHILDREN_NOT_FOUND;
     }
     $dataArray = json_decode($data, true);
     $responses = [];
     $parents = $child->getParents();
     foreach ($parents as $parent) {
         /**
          * @var $parent Parents
          */
         $tokens = $parent->getTokens();
         if ($tokens === null) {
             $responses[] = ResponseCode::PARENT_NOT_HAVE_TOKEN;
             continue;
         }
         foreach ($tokens as $token) {
             /** @var $token Tokens */
             $resp = CloudMessaging::send($token->token, $dataArray);
             $code = ResponseCode::fromResponse($resp);
             if ($code === ResponseCode::NOT_REGISTERED || $code === ResponseCode::UNKNOWN_ERROR) {
                 $token->delete();
             }
             if ($code === ResponseCode::OK) {
                 $message = new Message();
                 $message->message = $dataArray['message'];
                 $message->child_id = $child->id;
                 $message->parent_id = $parent->id;
                 $message->date = date("Y-m-d H:i:s");
                 $message->save();
             }
             $responses[] = $code;
         }
     }
     return $responses;
 }
 private function handleEventResult($result)
 {
     if (is_array($result)) {
         $resp = [];
         foreach ($result as $res) {
             $resp[] = ['code' => $res, 'msg' => ResponseCode::getMessageFromCode($res)];
         }
         return [$resp, 200];
     }
     if ($result === ResponseCode::CHILDREN_NOT_FOUND) {
         return [ResponseCode::getMessageFromCode(ResponseCode::CHILDREN_NOT_FOUND), 404];
     }
     return [ResponseCode::getMessageFromCode(ResponseCode::UNKNOWN_RESPONSE), 400];
 }