ultimatepos/Modules/Connector/Http/Controllers/Api/SuperadminController.php

225 lines
7.1 KiB
PHP

<?php
namespace Modules\Connector\Http\Controllers\Api;
use App\Utils\ModuleUtil;
use Illuminate\Http\Response;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Auth;
use Module;
use Modules\Connector\Transformers\CommonResource;
/**
* @group Superadmin
* @authenticated
*
* APIs for superadmin module
*/
class SuperadminController extends ApiController
{
/**
* All Utils instance.
*/
protected $moduleUtil;
public function __construct(ModuleUtil $moduleUtil)
{
$this->moduleUtil = $moduleUtil;
}
/**
* If SaaS installed get active subscription details, else return the enabled modules details in package_details
*
* @response {
"data": {
"id": 1,
"business_id": 1,
"package_id": 3,
"start_date": "2020-09-05 00:00:00",
"trial_end_date": "2020-09-15",
"end_date": "2020-10-05 00:00:00",
"package_price": "599.9900",
"package_details": {
"location_count": 0,
"user_count": 0,
"product_count": 0,
"invoice_count": 0,
"name": "Unlimited",
"woocommerce_module": 1,
"essentials_module": 1
},
"created_id": 1,
"paid_via": "stripe",
"payment_transaction_id": "ch_1CuLdQAhokBpT93LVZNg2At6",
"status": "approved",
"deleted_at": null,
"created_at": "2018-08-01 07:49:09",
"updated_at": "2018-08-01 07:49:09",
"locations_created": 1,
"users_created": 6,
"products_created": 2,
"invoices_created": 1
}
}
*/
public function getActiveSubscription()
{
$user = Auth::user();
$business_id = $user->business_id;
$output = [];
if ($this->moduleUtil->isSuperadminInstalled()) {
$subscription = \Modules\Superadmin\Entities\Subscription::active_subscription($business_id);
if (! empty($subscription)) {
$resource_count = $this->moduleUtil->getResourceCount($business_id, $subscription);
$output = array_merge($subscription->toArray(), $resource_count);
}
} else {
//If not installed return the installed modules details.
$modules = Arr::pluck(Module::toCollection()->toArray(), 'name');
$output = [
'package_details' => [],
];
foreach ($modules as $module) {
if ($this->moduleUtil->isModuleInstalled($module)) {
$output['package_details'][strtolower($module).'_module'] = 1;
}
}
}
return new CommonResource($output);
}
/**
* Get Superadmin Package List
*
* @response {
"data": [
{
"id": 1,
"name": "Starter - Free",
"description": "Give it a test drive...",
"location_count": 0,
"user_count": 0,
"product_count": 0,
"bookings": 0,
"kitchen": 0,
"order_screen": 0,
"tables": 0,
"invoice_count": 0,
"interval": "months",
"interval_count": 1,
"trial_days": 10,
"price": "0.0000",
"custom_permissions": {
"assetmanagement_module": "1",
"connector_module": "1",
"crm_module": "1",
"essentials_module": "1",
"manufacturing_module": "1",
"productcatalogue_module": "1",
"project_module": "1",
"repair_module": "1",
"woocommerce_module": "1"
},
"created_by": 1,
"sort_order": 0,
"is_active": 1,
"is_private": 0,
"is_one_time": 0,
"enable_custom_link": 0,
"custom_link": "",
"custom_link_text": "",
"deleted_at": null,
"created_at": "2020-10-09 16:38:02",
"updated_at": "2020-11-11 12:19:17"
},
{
"id": 2,
"name": "Regular",
"description": "For Small Shops",
"location_count": 0,
"user_count": 0,
"product_count": 0,
"bookings": 0,
"kitchen": 0,
"order_screen": 0,
"tables": 0,
"invoice_count": 0,
"interval": "months",
"interval_count": 1,
"trial_days": 10,
"price": "199.9900",
"custom_permissions": {
"repair_module": "1"
},
"created_by": 1,
"sort_order": 1,
"is_active": 1,
"is_private": 0,
"is_one_time": 0,
"enable_custom_link": 0,
"custom_link": null,
"custom_link_text": null,
"deleted_at": null,
"created_at": "2020-10-09 16:38:02",
"updated_at": "2020-10-09 16:38:02"
},
{
"id": 3,
"name": "Unlimited",
"description": "For Large Business",
"location_count": 0,
"user_count": 0,
"product_count": 0,
"bookings": 0,
"kitchen": 0,
"order_screen": 0,
"tables": 0,
"invoice_count": 0,
"interval": "months",
"interval_count": 1,
"trial_days": 10,
"price": "599.9900",
"custom_permissions": {
"assetmanagement_module": "1",
"connector_module": "1",
"crm_module": "1",
"essentials_module": "1",
"manufacturing_module": "1",
"productcatalogue_module": "1",
"project_module": "1",
"repair_module": "1",
"woocommerce_module": "1"
},
"created_by": 1,
"sort_order": 1,
"is_active": 1,
"is_private": 0,
"is_one_time": 0,
"enable_custom_link": 0,
"custom_link": "",
"custom_link_text": "",
"deleted_at": null,
"created_at": "2020-10-09 16:38:02",
"updated_at": "2020-11-02 12:09:19"
}
]
}
*/
public function getPackages()
{
if (! $this->moduleUtil->isSuperadminInstalled()) {
abort(403, 'Unauthorized action.');
}
$packages = \Modules\Superadmin\Entities\Package::orderby('sort_order', 'asc')->get();
return new CommonResource($packages);
}
}