ultimatepos/Modules/Spreadsheet/Http/Controllers/DataController.php

124 lines
4.1 KiB
PHP

<?php
namespace Modules\Spreadsheet\Http\Controllers;
use App\Http\MenuIcons;
use App\Utils\ModuleUtil;
use Illuminate\Routing\Controller;
use Menu;
use Modules\Spreadsheet\Entities\Spreadsheet;
use Modules\Spreadsheet\Entities\SpreadsheetShare;
class DataController extends Controller
{
public function superadmin_package()
{
return [
[
'name' => 'spreadsheet_module',
'label' => __('spreadsheet::lang.spreadsheet_module'),
'default' => false,
],
];
}
/**
* Defines user permissions for the module.
*
* @return array
*/
public function user_permissions()
{
$permissions = [
[
'value' => 'access.spreadsheet',
'label' => __('spreadsheet::lang.access_spreadsheet'),
'default' => false,
],
[
'value' => 'create.spreadsheet',
'label' => __('spreadsheet::lang.create_spreadsheet'),
'default' => false,
],
];
return $permissions;
}
/**
* Adds Spreadsheet menus
*
* @return null
*/
public function modifyAdminMenu()
{
$business_id = session()->get('user.business_id');
$module_util = new ModuleUtil();
$is_spreadsheet_enabled = (bool) $module_util->hasThePermissionInSubscription($business_id, 'spreadsheet_module');
$background_color = '';
if (config('app.env') == 'demo') {
$background_color = '#0086f9 !important';
}
if ($is_spreadsheet_enabled && auth()->user()->can('access.spreadsheet')) {
Menu::modify('admin-sidebar-menu', function ($menu) use ($background_color) {
$menu->url(
action([\Modules\Spreadsheet\Http\Controllers\SpreadsheetController::class, 'index']),
__('spreadsheet::lang.spreadsheet'),
['icon' => MenuIcons::svg('spreadsheet'), 'active' => request()->segment(1) == 'spreadsheet', 'style' => 'background-color:'.$background_color, 'data-module' => 'Spreadsheet', 'data-menu-group' => 'management']
)
->order(90);
});
}
}
/**
* Parses notification message from database.
*
* @return array
*/
public function parse_notification($notification)
{
$notification_datas = [];
if ($notification->type == 'Modules\Spreadsheet\Notifications\SpreadsheetShared') {
$data = $notification->data;
$spreadsheet = Spreadsheet::with('createdBy')->find($data['sheet_id']);
if (! empty($spreadsheet)) {
$msg = __(
'spreadsheet::lang.spreadsheet_shared_notif_text',
[
'shared_by' => $spreadsheet->createdBy->user_full_name,
'name' => $spreadsheet->name,
]
);
$notification_datas = [
'msg' => $msg,
'icon_class' => 'fas fa fa-file-excel bg-green',
'read_at' => $notification->read_at,
'link' => action([\Modules\Spreadsheet\Http\Controllers\SpreadsheetController::class, 'show'], [$spreadsheet->id]),
'created_at' => format_relative_time($notification->created_at),
];
}
}
return $notification_datas;
}
public function getSharedSpreadsheetForGivenData($params)
{
$business_id = $params['business_id'];
$shared_with = $params['shared_with'];
$shared_id = $params['shared_id'];
$sheets = SpreadsheetShare::where('shared_with', $shared_with)
->where('shared_id', $shared_id)
->join('sheet_spreadsheets as ss', 'sheet_spreadsheet_shares.sheet_spreadsheet_id', '=', 'ss.id')
->where('ss.business_id', $business_id)
->select('name as sheet_name', 'sheet_spreadsheet_id as sheet_id')
->get();
return $sheets;
}
}