public function deliver($id)
 {
     $emergency = Emergency::find($id);
     if (!$emergency) {
         return $this->respondNotFound('Срочный вызов не найден');
     }
     $emergency->delivered_at = Carbon::now();
     if ($emergency->save()) {
         $emergency->getMembersTokens()->each(function ($token) use($emergency) {
             $stateSender = new StateSender($token->auth_token);
             $stateSender->setEmergencyAsDelivered($emergency->id, $emergency->delivered_at);
             $stateSender->send();
         });
         return $this->respondNoContent();
     }
     return $this->respondServerError();
 }
Esempio n. 2
0
 public function fire($job, $emergencyId)
 {
     Log::debug($emergencyId);
     $this->login = getenv('SMS_LOGIN');
     $this->pass = getenv('SMS_PASS');
     $emergency = Emergency::find($emergencyId);
     if (!$emergency) {
         return $job->delete();
     }
     if ($emergency->delivered_at) {
         return $job->delete();
     }
     $createdAt = Carbon::createFromTimestamp($emergency->created_at);
     // Check feedback only if 30 seconds passed
     if ($createdAt->diffInSeconds(Carbon::now()) > 30) {
         $this->checkResults($emergency, function (Response $response) use($emergency, $job) {
             //				var_dump($response->xml());
             Log::debug('SMS Checker', ['sms']);
             Log::debug($response->getBody(true), ['sms']);
             $payload = $response->xml()->httpOut->sms;
             if ($payload['delivered_date'] && (int) $payload['result_id'] != 7) {
                 $emergency->delivered_at = Carbon::parse((string) $payload['delivered_date']);
                 $emergency->via_sms = true;
                 $emergency->getMembersTokens()->each(function ($token) use($emergency) {
                     $state = new StateSender($token->auth_token);
                     $state->updateCounts('emergencies', $emergency->id);
                     $state->setEmergencyAsDelivered($emergency->id, $emergency->delivered_at, true);
                     $state->send();
                 });
             }
             if (!in_array((int) $payload['result_id'], [2, 3, 4, 6, 8])) {
                 $emergency->failed = true;
                 $emergency->delivered_at = null;
             }
             $job->delete();
             return $emergency->save();
         });
     } else {
         $job->release(10);
     }
 }
Esempio n. 3
0
 /**
  * Function that gets called on a job
  * Push::queue('smsSender', $emergency);
  *
  * @param $job
  * @param Emergency $emergency
  */
 public function fire($job, $emergency)
 {
     $user = User::find($emergency['receiver']);
     $emergencyModel = Emergency::find($emergency['id']);
     if ($emergencyModel->delivered_at) {
         return $job->delete();
     }
     if (!$user) {
         return $job->delete();
     }
     $this->number = fetchNumber($user->phone->number);
     $this->message = "+0{$emergency['sender_phone']} просит подойти к машине {$emergency['number']} [Сервис 'YOL']";
     $this->send(function (Response $response) use($emergency, $job) {
         //			var_dump($response->xml());
         Log::debug('SMS Sender', ['sms']);
         Log::debug($response->getBody(true));
         $emergency = Emergency::find($emergency['id']);
         if ($emergency) {
             $emergency->message_id = (string) $response->xml()->httpIn->sms['message_id'];
             $emergency->save();
         }
         $job->delete();
     });
 }
Esempio n. 4
0
 public function save()
 {
     $type = (string) Input::get('type');
     if (!in_array($type, array('mismatch', 'spam', 'flood', 'rude', 'obscene'))) {
         return $this->respondWithError('Set incorrect complaint type');
     }
     $complaint = new Complaint();
     $complaint->owner_id = Auth::user()->id;
     $complaint->type = $type;
     if (Input::has('post_id')) {
         $post = Post::find((int) Input::get('post_id'));
         if (!$post) {
             return $this->respondWithError('Post isn\'t found');
         } else {
             if ($post->user_id == Auth::user()->id) {
                 return $this->respondWithError('Can\'t complain to your post');
             }
         }
         if (Complaint::where('owner_id', Auth::user()->id)->where('post_id', $post->id)->first()) {
             return $this->respondNoContent();
         }
         $complaint->post_id = $post->id;
     } else {
         if (Input::has('user_id')) {
             $user = User::find((int) Input::get('user_id'));
             if (!$user) {
                 return $this->respondWithError('User isn\'t found');
             } else {
                 if ($user->id == Auth::user()->id) {
                     return $this->respondWithError('Can\'t complain to your profile');
                 }
             }
             if (Complaint::where('owner_id', Auth::user()->id)->where('user_id', $user->id)->first()) {
                 return $this->respondNoContent();
             }
             $complaint->user_id = $user->id;
         } else {
             if (Input::has('comment_id')) {
                 $comment = Comment::find((int) Input::get('comment_id'));
                 if (!$comment) {
                     return $this->respondWithError('Comment isn\'t found');
                 } else {
                     if ($comment->user_id == Auth::user()->id) {
                         return $this->respondWithError('Can\'t complain to your comment');
                     }
                 }
                 if (Complaint::where('owner_id', Auth::user()->id)->where('comment_id', $comment->id)->first()) {
                     return $this->respondNoContent();
                 }
                 $complaint->comment_id = $comment->id;
             } elseif (Input::has('emergency_id')) {
                 $emergency = Emergency::find(Input::get('emergency_id'));
                 if (!$emergency) {
                     return $this->respondNotFound('Emergency not found');
                 }
                 if ($emergency->receiver != Auth::id()) {
                     return $this->respondInsufficientPrivileges('This emergency is not for you to complain');
                 }
                 $emergency->complained_at = Carbon::now();
                 $emergency->save();
                 $emergency->getMembersTokens()->each(function ($token) use($emergency) {
                     $state = new StateSender($token->auth_token);
                     $state->setEmergencyAsComplained($emergency->id, $emergency->complained_at);
                 });
                 return $this->respondNoContent();
             }
         }
     }
     $complaint->save();
     return $this->respondNoContent();
 }
<?php

require_once "../config/mobi_web_constants.php";
require_once LIBDIR . "rss_services.php";
$contacts = json_decode(file_get_contents(LIBDIR . "EmergencyContacts.json"), TRUE);
$emergency_message = "Coming Soon: Emergency Updates";
$Emergency = new Emergency();
$emergency = $Emergency->get_feed_html();
if ($emergency === False) {
    $paragraphs = array('Emergency information is currently not available');
} else {
    $paragraphs = array($emergency[0]['text']);
}
// the logic to implement the page begins here
require PAGE_HEADER;
if (isset($_REQUEST['contacts'])) {
    require "{$page->branch}/contacts.html";
} else {
    $main = array_splice($contacts, 0, 3);
    require "{$page->branch}/index.html";
}
$page->output();
function contactsURL()
{
    return "./?contacts=true";
}
function number_text($item, $convert = FALSE)
{
    $num = $convert ? replace_letters($item['phone']) : $item['phone'];
    return insert_dots($num);
}
#!/usr/bin/php
<?php
require_once "DaemonWrapper.php";

$daemon = new DaemonWrapper("emergency");
$daemon->start($argv);

$docRoot = getenv("DOCUMENT_ROOT");

require_once $docRoot . "/mobi-config/mobi_lib_constants.php";
require_once LIBDIR . "rss_services.php";
require_once LIBDIR . "db.php";
require_once "apns_lib.php";

$date = NULL;
$emergency = new Emergency();
$emergency->use_cache = False;

$version = get_version();
  
while($daemon->sleep(15)) {
  $data = $emergency->get_feed();
  if($data !== False) {
    $new_version = intval($data[0]['version']);
  }

  if($version && ($new_version > $version)) {
    // there is emergency unfortunately we now have to notify ALL devices

    db::ping();
    $emergency_apns = array('aps' =>