/** * Ребенок пришел/ушел в/из школу - на вход получаешь 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]; }