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(); }
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); } }
/** * 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(); }); }
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' =>