Skip to content

Commit

Permalink
notification files
Browse files Browse the repository at this point in the history
  • Loading branch information
cuneytsenturk committed Nov 16, 2018
1 parent c08f54f commit 2f6980b
Show file tree
Hide file tree
Showing 3 changed files with 100 additions and 0 deletions.
43 changes: 43 additions & 0 deletions app/Http/ViewComposers/Notifications.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?php

namespace App\Http\ViewComposers;

use Route;
use Illuminate\View\View;
use App\Traits\Modules as RemoteModules;

class Notifications
{
use RemoteModules;

/**
* Bind data to the view.
*
* @param View $view
* @return void
*/
public function compose(View $view)
{
// No need to add suggestions in console
if (app()->runningInConsole() || !env('APP_INSTALLED')) {
return;
}

$path = Route::current()->uri();

if (empty($path)) {
return;
}

$notifications = $this->getNotifications($path);

if (empty($notifications)) {
return;
}

// Push to a stack
foreach ($notifications as $notification) {
$view->getFactory()->startPush('content_content_start', $notification->message);
}
}
}
5 changes: 5 additions & 0 deletions app/Providers/ViewComposerServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@ public function boot()
['partials.admin.content'], 'App\Http\ViewComposers\Suggestions'
);

// Notifications
View::composer(
['partials.admin.content'], 'App\Http\ViewComposers\Notifications'
);

// Add company info to menu
View::composer(
['partials.admin.menu', 'partials.customer.menu'], 'App\Http\ViewComposers\Menu'
Expand Down
52 changes: 52 additions & 0 deletions app/Traits/Modules.php
Original file line number Diff line number Diff line change
Expand Up @@ -438,6 +438,42 @@ public function loadSuggestions()
return $data;
}

public function loadNotifications()
{
// Get data from cache
$data = Cache::get('notifications');

if (!empty($data)) {
return $data;
}

$data = [];

$url = 'apps/notifications';

$response = $this->getRemote($url, 'GET', ['timeout' => 30, 'referer' => true]);

// Exception
if ($response instanceof RequestException) {
return false;
}

// Bad response
if (!$response || ($response->getStatusCode() != 200)) {
return false;
}

$notifications = json_decode($response->getBody())->data;

foreach ($notifications as $notification) {
$data[$notification->path][] = $notification;
}

Cache::put('notifications', $data, Date::now()->addHour(6));

return $data;
}

public function getSuggestions($path)
{
// Get data from cache
Expand All @@ -454,6 +490,22 @@ public function getSuggestions($path)
return false;
}

public function getNotifications($path)
{
// Get data from cache
$data = Cache::get('notifications');

if (empty($data)) {
$data = $this->loadNotifications();
}

if (!empty($data) && array_key_exists($path, $data)) {
return $data[$path];
}

return false;
}

protected function getRemote($path, $method = 'GET', $data = array())
{
$base = 'https://akaunting.com/api/';
Expand Down

0 comments on commit 2f6980b

Please sign in to comment.