Added My apps page, it show Purchase and installed app

This commit is contained in:
cuneytsenturk 2018-05-29 12:55:16 +03:00
parent d57537b203
commit 54f10af4d3
10 changed files with 161 additions and 0 deletions

View File

@ -0,0 +1,29 @@
<?php
namespace App\Http\Controllers\Modules;
use App\Http\Controllers\Controller;
use App\Traits\Modules;
use App\Models\Module\Module;
use Illuminate\Routing\Route;
class My extends Controller
{
use Modules;
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
$this->checkApiToken();
$purchased = $this->getMyModules();
$modules = $this->getInstalledModules();
$installed = Module::all()->pluck('status', 'alias')->toArray();
return view('modules.my.index', compact('purchased', 'modules', 'installed'));
}
}

View File

@ -0,0 +1,48 @@
<?php
namespace App\Listeners\Updates;
use App\Events\UpdateFinished;
use App\Models\Auth\Role;
use App\Models\Auth\Permission;
class Version126 extends Listener
{
const ALIAS = 'core';
const VERSION = '1.2.6';
/**
* Handle the event.
*
* @param $event
* @return void
*/
public function handle(UpdateFinished $event)
{
// Check if should listen
if (!$this->check($event)) {
return;
}
// Create permission
$permission = Permission::firstOrCreate([
'name' => 'read-modules-my',
'display_name' => 'Read Modules My',
'description' => 'Read Modules My',
]);
// Attach permission to roles
$roles = Role::all();
foreach ($roles as $role) {
$allowed = ['admin', 'manager'];
if (!in_array($role->name, $allowed)) {
continue;
}
$role->attachPermission($permission);
}
}
}

View File

@ -23,6 +23,7 @@ class EventServiceProvider extends ServiceProvider
'App\Listeners\Updates\Version113',
'App\Listeners\Updates\Version119',
'App\Listeners\Updates\Version120',
'App\Listeners\Updates\Version126',
],
'Illuminate\Auth\Events\Login' => [
'App\Listeners\Auth\Login',

View File

@ -78,6 +78,45 @@ trait Modules
return [];
}
public function getMyModules($data = [])
{
$response = $this->getRemote('apps/my', 'GET', $data);
if ($response && ($response->getStatusCode() == 200)) {
return json_decode($response->getBody())->data;
}
return [];
}
public function getInstalledModules($data = [])
{
$company_id = session('company_id');
$cache = 'installed.' . $company_id . '.module';
$installed = Cache::get($cache);
if ($installed) {
return $installed;
}
$installed = [];
$modules = Module::all();
foreach ($modules as $module) {
$result = $this->getModule($module->alias);
if ($result) {
$installed[] = $result;
}
}
Cache::put($cache, $installed, Date::now()->addHour(6));
return $installed;
}
public function getPaidModules($data = [])
{
$response = $this->getRemote('apps/paid', 'GET', $data);

View File

@ -4,6 +4,7 @@ return [
'title' => 'API Token',
'api_token' => 'Token',
'my_apps' => 'My Apps',
'top_paid' => 'Top Paid',
'new' => 'New',
'top_free' => 'Top Free',
@ -49,4 +50,9 @@ return [
'disable' => 'Disable',
'enable' => 'Enable',
],
'my' => [
'purchased' => 'Purchased',
'installed' => 'Installed',
],
];

View File

@ -4,6 +4,7 @@
@section('new_button')
<span class="new-button"><a href="{{ url('apps/token/create') }}" class="btn btn-success btn-sm"><span class="fa fa-key"></span> &nbsp;{{ trans('modules.api_token') }}</a></span>
<span class="new-button"><a href="{{ url('apps/my') }}" class="btn btn-default btn-sm"><span class="fa fa-rocket"></span> &nbsp;{{ trans('modules.my_apps') }}</a></span>
@endsection
@section('content')

View File

@ -4,6 +4,7 @@
@section('new_button')
<span class="new-button"><a href="{{ url('apps/token/create') }}" class="btn btn-success btn-sm"><span class="fa fa-key"></span> &nbsp;{{ trans('modules.api_token') }}</a></span>
<span class="new-button"><a href="{{ url('apps/my') }}" class="btn btn-default btn-sm"><span class="fa fa-rocket"></span> &nbsp;{{ trans('modules.my_apps') }}</a></span>
@endsection
@section('content')

View File

@ -0,0 +1,34 @@
@extends('layouts.modules')
@section('title', trans_choice('general.modules', 2))
@section('new_button')
<span class="new-button"><a href="{{ url('apps/token/create') }}" class="btn btn-success btn-sm"><span class="fa fa-key"></span> &nbsp;{{ trans('modules.api_token') }}</a></span>
<span class="new-button"><a href="{{ url('apps/my') }}" class="btn btn-default btn-sm"><span class="fa fa-rocket"></span> &nbsp;{{ trans('modules.my_apps') }}</a></span>
@endsection
@section('content')
@include('partials.modules.bar')
<div class="row">
<div class="col-md-12">
<div class="content-header no-padding-left">
<h3>{{ trans('modules.my.purchased') }}</h3>
</div>
@foreach ($purchased as $module)
@include('partials.modules.item')
@endforeach
</div>
<div class="col-md-12">
<div class="content-header no-padding-left">
<h3>{{ trans('modules.my.installed') }}</h3>
</div>
@foreach ($modules as $module)
@include('partials.modules.item')
@endforeach
</div>
</div>
@endsection

View File

@ -4,6 +4,7 @@
@section('new_button')
<span class="new-button"><a href="{{ url('apps/token/create') }}" class="btn btn-success btn-sm"><span class="fa fa-key"></span> &nbsp;{{ trans('modules.api_token') }}</a></span>
<span class="new-button"><a href="{{ url('apps/my') }}" class="btn btn-default btn-sm"><span class="fa fa-rocket"></span> &nbsp;{{ trans('modules.my_apps') }}</a></span>
@endsection
@section('content')

View File

@ -116,6 +116,7 @@ Route::group(['middleware' => 'language'], function () {
Route::group(['prefix' => 'apps'], function () {
Route::resource('token', 'Modules\Token');
Route::resource('home', 'Modules\Home');
Route::resource('my', 'Modules\My');
Route::get('categories/{alias}', 'Modules\Tiles@categoryModules');
Route::get('paid', 'Modules\Tiles@paidModules');
Route::get('new', 'Modules\Tiles@newModules');