HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: /var/www/html/appointmentbook.me/wp-content/plugins/booknetic-saas/app/Backend/Plans/Controller.php
<?php

namespace BookneticSaaS\Backend\Plans;

use BookneticSaaS\Providers\UI\DataTableUI;
use BookneticSaaS\Models\Plan;
use BookneticSaaS\Providers\Helpers\Helper;
use BookneticSaaS\Models\Tenant;

class Controller extends \BookneticApp\Providers\Core\Controller
{

	public function index()
	{
		$dataTable = new DataTableUI( new Plan() );

        $dataTable->addAction('set_as_default', bkntcsaas__('Set as trial plan') );
        $dataTable->addAction('edit', bkntcsaas__('Edit') );
        $dataTable->addAction('delete', bkntcsaas__('Delete'), [static::class , '_validate_delete'], DataTableUI::ACTION_FLAG_BULK_SINGLE );

		$dataTable->setTitle( bkntcsaas__('Plans') );

		$dataTable->addNewBtn( bkntcsaas__('ADD PLAN') );

		$dataTable->searchBy(['name', 'description', 'monthly_price', 'annually_price']);

		$dataTable->addColumns(bkntcsaas__('ID'), 'id');
		$dataTable->addColumns(bkntcsaas__('NAME'), function( $planInf )
		{
			return htmlspecialchars($planInf['name']) . ( $planInf['is_default'] ? '<i class="fa fa-star is_default" title="'.bkntcsaas__('Default plan').'"></i>' : '' );
		}, ['order_by_field' => 'name', 'is_html' => true]);
		$dataTable->addColumns(bkntcsaas__('PRICE'), function ( $plan )
		{
			return ($plan['monthly_price'] == 0 && $plan['annually_price'] == 0) ? bkntcsaas__('Free') : Helper::price( $plan['monthly_price'] ) . ' / ' . Helper::price( $plan['annually_price'] );
		}, [ 'order_by_field' => 'monthly_price' ]);
		$dataTable->addColumns(bkntcsaas__('ORDER NUMBER'), 'order_by');

		$table = $dataTable->renderHTML();

		$this->view( 'index', [
			'table' => $table
		] );
	}

	public static function _validate_delete( $ids )
	{

		foreach( $ids as $id )
		{
			$plan = Plan::get( $id );

			if( $plan->is_default )
			{
				Helper::response(false, bkntcsaas__("You can not delete plans that is assigned as a default plan"));
				return false;
			}

			if( $plan->expire_plan )
			{
				Helper::response(false, bkntcsaas__("You can not delete plans that is assigned as an expire plan"));
				return false;
			}

			$tenant_count = Tenant::where('plan_id', $id)->count();

			if( $tenant_count > 0 )
			{
				Helper::response(false, bkntcsaas__("You can not delete this plan, because it has registered tenants"));
				return false;
			}


			$all_plans_count = Plan::count();

			if( $all_plans_count < 2 )
			{
				Helper::response(false, bkntcsaas__("You can not delete this plan, because there is only one plan"));
				return false;
			}

		}

        Plan::where('id', $ids)->delete();
        return true;
	}

}