Exemple #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;
 }
Exemple #2
0
$app->register(new Silex\Provider\DoctrineServiceProvider(), ['db.options' => $config->get('db')]);
\Sasik\Db\DbSingleton::setDb($app['db']);
$db = \Sasik\Db\DbSingleton::getDb();
/**
 * ОСТОРОЖНО
 */
foreach (['children', 'parents', 'tokens', 'children_to_parents'] as $table) {
    $query = $db->createQueryBuilder();
    $query->delete($table)->execute();
    //    $db->fetchAll('DELETE FROM ' . $table );
}
//$db->delete('children', []);
//$db->delete('parents', []);
//$db->delete('tokens', []);
//$db->delete('children_to_parents', []);
$childrens = [Children::createObj(['name' => 'Children' . uniqid()]), Children::createObj(['name' => 'TestChildren']), Children::createObj(['name' => 'Children' . uniqid()]), Children::createObj(['name' => 'Children' . uniqid()]), Children::createObj(['name' => 'Children' . uniqid()])];
saveAll($childrens);
$parents = [Parents::createObj(['login' => 'Parent' . uniqid(), 'password' => uniqid()]), Parents::createObj(['login' => 'TestParent', 'password' => 'ParentPass']), Parents::createObj(['login' => 'Parent' . uniqid(), 'password' => uniqid()]), Parents::createObj(['login' => 'Parent' . uniqid(), 'password' => uniqid()])];
saveAll($parents);
$tokens = addTokens($parents);
saveAll($tokens);
addRelation($parents, $childrens);
function addTokens($parents)
{
    $tokens = [];
    foreach ($parents as $parent) {
        $tokens[] = Tokens::createObj(['parent_id' => $parent->id, 'token' => uniqid('token-'), 'type' => rand(0, 1)]);
    }
    return $tokens;
}
function saveAll(array $collection)
Exemple #3
0
 public function addChildren(Children $children)
 {
     $children->save();
     $this->childrens[] = $children;
     $mapper = DbSingleton::getParentChildrenMapper();
     $mapper->addRelation($this, $children);
 }