248 lines
8.7 KiB
PHP
248 lines
8.7 KiB
PHP
<?php
|
|
|
|
namespace Modules\Superadmin\Http\Controllers;
|
|
|
|
use App\System;
|
|
use App\Utils\BusinessUtil;
|
|
use App\Utils\ModuleUtil;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Response;
|
|
use Modules\Superadmin\Entities\Package;
|
|
use Modules\Superadmin\Entities\Subscription;
|
|
use Illuminate\Routing\Controller;
|
|
|
|
class PackagesController extends Controller
|
|
{
|
|
/**
|
|
* All Utils instance.
|
|
*/
|
|
protected $businessUtil;
|
|
|
|
protected $moduleUtil;
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @param ProductUtils $product
|
|
* @return void
|
|
*/
|
|
public function __construct(BusinessUtil $businessUtil, ModuleUtil $moduleUtil)
|
|
{
|
|
$this->businessUtil = $businessUtil;
|
|
$this->moduleUtil = $moduleUtil;
|
|
}
|
|
|
|
/**
|
|
* Display a listing of the resource.
|
|
*
|
|
* @return Response
|
|
*/
|
|
public function index()
|
|
{
|
|
if (! auth()->user()->can('superadmin')) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
|
|
$packages = Package::orderby('sort_order', 'asc')
|
|
->paginate(20);
|
|
|
|
//Get all module permissions and convert them into name => label
|
|
$permissions = $this->moduleUtil->getModuleData('superadmin_package');
|
|
$permission_formatted = [];
|
|
foreach ($permissions as $permission) {
|
|
foreach ($permission as $details) {
|
|
$permission_formatted[$details['name']] = $details['label'];
|
|
}
|
|
}
|
|
|
|
return view('superadmin::packages.index')
|
|
->with(compact('packages', 'permission_formatted'));
|
|
}
|
|
|
|
/**
|
|
* Show the form for creating a new resource.
|
|
*
|
|
* @return Response
|
|
*/
|
|
public function create()
|
|
{
|
|
if (! auth()->user()->can('superadmin')) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
|
|
$intervals = ['days' => __('lang_v1.days'), 'months' => __('lang_v1.months'), 'years' => __('lang_v1.years')];
|
|
$currency = System::getCurrency();
|
|
$permissions = $this->moduleUtil->getModuleData('superadmin_package');
|
|
|
|
return view('superadmin::packages.create')
|
|
->with(compact('intervals', 'currency', 'permissions'));
|
|
}
|
|
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
*
|
|
* @param Request $request
|
|
* @return Response
|
|
*/
|
|
public function store(Request $request)
|
|
{
|
|
if (! auth()->user()->can('superadmin')) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
|
|
try {
|
|
$input = $request->only(['name', 'description', 'location_count', 'user_count', 'product_count', 'invoice_count', 'interval', 'interval_count', 'trial_days', 'price', 'sort_order', 'is_active', 'custom_permissions', 'is_private', 'is_one_time', 'enable_custom_link', 'custom_link',
|
|
'custom_link_text', ]);
|
|
|
|
$currency = System::getCurrency();
|
|
|
|
$input['price'] = $this->businessUtil->num_uf($input['price'], $currency);
|
|
$input['is_active'] = empty($input['is_active']) ? 0 : 1;
|
|
$input['created_by'] = $request->session()->get('user.id');
|
|
|
|
$input['is_private'] = empty($input['is_private']) ? 0 : 1;
|
|
$input['is_one_time'] = empty($input['is_one_time']) ? 0 : 1;
|
|
$input['enable_custom_link'] = empty($input['enable_custom_link']) ? 0 : 1;
|
|
|
|
$input['custom_link'] = empty($input['enable_custom_link']) ? '' : $input['custom_link'];
|
|
$input['custom_link_text'] = empty($input['enable_custom_link']) ? '' : $input['custom_link_text'];
|
|
|
|
$package = new Package;
|
|
$package->fill($input);
|
|
$package->save();
|
|
|
|
$output = ['success' => 1, 'msg' => __('lang_v1.success')];
|
|
} catch (\Exception $e) {
|
|
\Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage());
|
|
|
|
$output = ['success' => 0,
|
|
'msg' => __('messages.something_went_wrong'),
|
|
];
|
|
}
|
|
|
|
return redirect()
|
|
->action([\Modules\Superadmin\Http\Controllers\PackagesController::class, 'index'])
|
|
->with('status', $output);
|
|
}
|
|
|
|
/**
|
|
* Show the specified resource.
|
|
*
|
|
* @return Response
|
|
*/
|
|
public function show()
|
|
{
|
|
return view('superadmin::show');
|
|
}
|
|
|
|
/**
|
|
* Show the form for editing the specified resource.
|
|
*
|
|
* @return Response
|
|
*/
|
|
public function edit($id)
|
|
{
|
|
$packages = Package::where('id', $id)
|
|
->first();
|
|
|
|
$intervals = ['days' => __('lang_v1.days'), 'months' => __('lang_v1.months'), 'years' => __('lang_v1.years')];
|
|
|
|
$permissions = $this->moduleUtil->getModuleData('superadmin_package', true);
|
|
|
|
return view('superadmin::packages.edit')
|
|
->with(compact('packages', 'intervals', 'permissions'));
|
|
}
|
|
|
|
/**
|
|
* Update the specified resource in storage.
|
|
*
|
|
* @param Request $request
|
|
* @return Response
|
|
*/
|
|
public function update(Request $request, $id)
|
|
{
|
|
if (! auth()->user()->can('superadmin')) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
|
|
try {
|
|
$packages_details = $request->only(['name', 'id', 'description', 'location_count', 'user_count', 'product_count', 'invoice_count', 'interval', 'interval_count', 'trial_days', 'price', 'sort_order', 'is_active', 'custom_permissions', 'is_private', 'is_one_time', 'enable_custom_link', 'custom_link', 'custom_link_text']);
|
|
|
|
$packages_details['is_active'] = empty($packages_details['is_active']) ? 0 : 1;
|
|
$packages_details['custom_permissions'] = empty($packages_details['custom_permissions']) ? null : $packages_details['custom_permissions'];
|
|
|
|
$packages_details['is_private'] = empty($packages_details['is_private']) ? 0 : 1;
|
|
$packages_details['is_one_time'] = empty($packages_details['is_one_time']) ? 0 : 1;
|
|
$packages_details['enable_custom_link'] = empty($packages_details['enable_custom_link']) ? 0 : 1;
|
|
$packages_details['custom_link'] = empty($packages_details['enable_custom_link']) ? '' : $packages_details['custom_link'];
|
|
$packages_details['custom_link_text'] = empty($packages_details['enable_custom_link']) ? '' : $packages_details['custom_link_text'];
|
|
|
|
$package = Package::where('id', $id)
|
|
->first();
|
|
$package->fill($packages_details);
|
|
$package->save();
|
|
|
|
if (! empty($request->input('update_subscriptions'))) {
|
|
$package_details = [
|
|
'location_count' => $package->location_count,
|
|
'user_count' => $package->user_count,
|
|
'product_count' => $package->product_count,
|
|
'invoice_count' => $package->invoice_count,
|
|
'name' => $package->name,
|
|
];
|
|
if (! empty($package->custom_permissions)) {
|
|
foreach ($package->custom_permissions as $name => $value) {
|
|
$package_details[$name] = $value;
|
|
}
|
|
}
|
|
|
|
//Update subscription package details
|
|
$subscriptions = Subscription::where('package_id', $package->id)
|
|
->whereDate('end_date', '>=', \Carbon::now())
|
|
->update(['package_details' => json_encode($package_details)]);
|
|
}
|
|
|
|
$output = ['success' => 1, 'msg' => __('lang_v1.success')];
|
|
} catch (\Exception $e) {
|
|
\Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage());
|
|
|
|
$output = ['success' => 0,
|
|
'msg' => __('messages.something_went_wrong'),
|
|
];
|
|
}
|
|
|
|
return redirect()
|
|
->action([\Modules\Superadmin\Http\Controllers\PackagesController::class, 'index'])
|
|
->with('status', $output);
|
|
}
|
|
|
|
/**
|
|
* Remove the specified resource from storage.
|
|
*
|
|
* @return Response
|
|
*/
|
|
public function destroy($id)
|
|
{
|
|
if (! auth()->user()->can('superadmin')) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
|
|
try {
|
|
Package::where('id', $id)
|
|
->delete();
|
|
|
|
$output = ['success' => 1, 'msg' => __('lang_v1.success')];
|
|
} catch (\Exception $e) {
|
|
\Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage());
|
|
|
|
$output = ['success' => 0,
|
|
'msg' => __('messages.something_went_wrong'),
|
|
];
|
|
}
|
|
|
|
return redirect()
|
|
->action([\Modules\Superadmin\Http\Controllers\PackagesController::class, 'index'])
|
|
->with('status', $output);
|
|
}
|
|
}
|