static function create($user_id, $msg = "", $date = null)
 {
     $not = new Notification();
     $not->user_id = $user_id;
     //Pode receber uma data por parametro, neste caso, utiliza essa data como a data da criação da notificação
     if ($date) {
         $not->date = $date;
     } else {
         $not->date = DateUtils::now();
     }
     $not->type = Notification::TYPE_TOPOLOGY;
     $not->viewed = 0;
     $not->info = json_encode($msg);
     $not->save();
 }
 static function createToGroup($group_id, $domain, $reservation_id, $auth_id, $date = null)
 {
     $group = Group::findOne($group_id);
     $domain = Domain::findOne(['name' => $domain]);
     if (!$group || !$domain) {
         return false;
     }
     //Confere todos papeis associados ao grupo
     $roles = UserDomainRole::findByGroup($group);
     foreach ($roles->all() as $role) {
         if ($role->domain == null || $role->domain == $domain->name) {
             //Se papel for para todos dominios ou para dominio espeficido
             //Confere se já foi feita uma notificação de algum circuito desta reserva, se sim, reutiliza a mesma notificação
             $not = null;
             $notifications = Notification::find()->where(['user_id' => $role->user_id, 'type' => Notification::TYPE_AUTHORIZATION])->all();
             foreach ($notifications as $notification) {
                 $cauth = ConnectionAuth::findOne($notification->info);
                 if ($cauth) {
                     if ($cauth->domain == $domain->name) {
                         $conn = Connection::findOne($cauth->connection_id);
                         if ($conn) {
                             if ($conn->reservation_id == $reservation_id) {
                                 $not = $notification;
                                 break;
                             }
                         }
                     }
                 }
             }
             if ($not) {
                 //Se já existe, atualiza e coloca nova data
                 //Pode receber uma data por parametro, neste caso, utiliza essa data como a data da criação da notificação
                 if ($date) {
                     $not->date = $date;
                 } else {
                     //Pequena maquipulação do horário para que nunca existam duas notificações com o mesmo horário
                     $date = new \DateTime('now', new \DateTimeZone("UTC"));
                     $dateAux = $date->format("Y-m-d H:i:s");
                     while (Notification::find()->where(['user_id' => $role->user_id, 'date' => $dateAux])->one()) {
                         $date->modify('-1 second');
                         $dateAux = $date->format("Y-m-d H:i:s");
                     }
                     $not->date = $dateAux;
                 }
                 $not->viewed = 0;
                 $not->save();
             } else {
                 //Se for nova, cria notificação
                 $not = new Notification();
                 $not->user_id = $role->user_id;
                 if (isset($date)) {
                     $not->date = $date;
                 } else {
                     //Pequena maquipulação do horário para que nunca existam duas notificações com o mesmo horário
                     $date = new \DateTime('now', new \DateTimeZone("UTC"));
                     $dateAux = $date->format("Y-m-d H:i:s");
                     while (Notification::find()->where(['user_id' => $role->user_id, 'date' => $dateAux])->one()) {
                         $date->modify('-1 second');
                         $dateAux = $date->format("Y-m-d H:i:s");
                     }
                     $not->date = $dateAux;
                 }
                 $not->date = $dateAux;
                 $not->type = Notification::TYPE_AUTHORIZATION;
                 $not->viewed = 0;
                 $not->info = (string) $auth_id;
                 $not->save();
             }
         }
     }
 }
 static function create($connection_id)
 {
     $connection = Connection::findOne($connection_id);
     if (!$connection) {
         return;
     }
     $reservation = Reservation::findOne($connection->reservation_id);
     if (!$reservation) {
         return;
     }
     if ($reservation->type == Reservation::TYPE_TEST) {
         return;
     }
     $user_id = $reservation->request_user_id;
     //Confere se já foi feita uma notificação de algum circuito desta reserva, se sim, reutiliza a mesma notificação
     $not = null;
     $notifications = Notification::find()->where(['user_id' => $reservation->request_user_id, 'type' => Notification::TYPE_RESERVATION])->all();
     foreach ($notifications as $notification) {
         if ($notification->info == $reservation->id) {
             $not = $notification;
             break;
         }
     }
     if ($not) {
         //Se já existe, atualiza e coloca nova data
         //Pequena maquipulação do horário para que nunca existam duas notificações com o mesmo horário
         $date = new \DateTime('now', new \DateTimeZone("UTC"));
         $dateAux = $date->format("Y-m-d H:i:s");
         while (Notification::find()->where(['user_id' => $user_id, 'date' => $dateAux])->one()) {
             $date->modify('-1 second');
             $dateAux = $date->format("Y-m-d H:i:s");
         }
         $not->date = $dateAux;
         $not->viewed = 0;
         $not->save();
     } else {
         //Se for nova, cria notificação
         $not = new Notification();
         $not->user_id = $reservation->request_user_id;
         //Pequena maquipulação do horário para que nunca existam duas notificações com o mesmo horário
         $date = new \DateTime('now', new \DateTimeZone("UTC"));
         $dateAux = $date->format("Y-m-d H:i:s");
         while (Notification::find()->where(['user_id' => $user_id, 'date' => $dateAux])->one()) {
             $date->modify('-1 second');
             $dateAux = $date->format("Y-m-d H:i:s");
         }
         $not->date = $dateAux;
         $not->type = Notification::TYPE_RESERVATION;
         $not->viewed = 0;
         $not->info = (string) $reservation->id;
         $not->save();
     }
 }
Example #4
0
 static function create($user_id, $type, $group, $domain = null, $date = null)
 {
     $notice = [];
     $notice[0] = $type;
     //Tipo da noticia
     $notice[1] = $group;
     if ($domain) {
         $notice[2] = $domain;
     }
     $not = new Notification();
     $not->user_id = $user_id;
     //Pode receber uma data por parametro, neste caso, utiliza essa data como a data da criação da notificação
     if ($date) {
         $not->date = $date;
     } else {
         //Pequena maquipulação do horário para que nunca existam duas notificações com o mesmo horário
         $date = new \DateTime('now', new \DateTimeZone("UTC"));
         $dateAux = $date->format("Y-m-d H:i:s");
         while (Notification::find()->where(['user_id' => $user_id, 'date' => $dateAux])->one()) {
             $date->modify('-1 second');
             $dateAux = $date->format("Y-m-d H:i:s");
         }
         $not->date = $dateAux;
     }
     $not->type = Notification::TYPE_NOTICE;
     $not->viewed = 0;
     $not->info = json_encode($notice);
     //Armazena todos dados em um JSON
     $not->save();
 }
Example #5
0
 /**
  * CREATE TOPOLOGY NOTIFICAION
  * @param string $msg (A tag no caso)
  * @param string $date
  * Cria notificação de mudança na topologia. VERSÃO BETA
  */
 public static function createTopologyNotification($msg, $date = null)
 {
     $users = User::find()->all();
     foreach ($users as $user) {
         $not = Notification::findOne(['user_id' => $user->id, 'type' => self::TYPE_TOPOLOGY, 'info' => $msg]);
         if ($not) {
             //Pode receber uma data por parametro, neste caso, utiliza essa data como a data da criação da notificação
             if ($date) {
                 $not->date = $date;
             } else {
                 $not->date = DateUtils::now();
             }
             $not->viewed = 0;
             $not->save();
         } else {
             $not = new Notification();
             $not->user_id = $user->id;
             //Pode receber uma data por parametro, neste caso, utiliza essa data como a data da criação da notificação
             if ($date) {
                 $not->date = $date;
             } else {
                 $not->date = DateUtils::now();
             }
             $not->type = self::TYPE_TOPOLOGY;
             $not->viewed = 0;
             $not->info = $msg;
             $not->save();
         }
     }
 }