new widget structure
This commit is contained in:
		
							
								
								
									
										67
									
								
								app/Utilities/Widgets.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								app/Utilities/Widgets.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,67 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App\Utilities;
 | 
			
		||||
 | 
			
		||||
use App\Models\Module\Module;
 | 
			
		||||
 | 
			
		||||
class Widgets
 | 
			
		||||
{
 | 
			
		||||
    public static function getClasses()
 | 
			
		||||
    {
 | 
			
		||||
        $classes = [];
 | 
			
		||||
 | 
			
		||||
        $core_classes = [
 | 
			
		||||
            'App\Widgets\TotalIncome',
 | 
			
		||||
            'App\Widgets\TotalExpenses',
 | 
			
		||||
            'App\Widgets\TotalProfit',
 | 
			
		||||
            'App\Widgets\CashFlow',
 | 
			
		||||
            'App\Widgets\IncomeByCategory',
 | 
			
		||||
            'App\Widgets\ExpensesByCategory',
 | 
			
		||||
            'App\Widgets\AccountBalance',
 | 
			
		||||
            'App\Widgets\LatestIncome',
 | 
			
		||||
            'App\Widgets\LatestExpenses',
 | 
			
		||||
        ];
 | 
			
		||||
 | 
			
		||||
        static::parseClasses($classes, $core_classes);
 | 
			
		||||
 | 
			
		||||
        $modules = Module::enabled()->get();
 | 
			
		||||
 | 
			
		||||
        foreach ($modules as $module) {
 | 
			
		||||
            $m = module($module->alias);
 | 
			
		||||
 | 
			
		||||
            // Check if the module exists and has widgets
 | 
			
		||||
            if (!$m || empty($m->get('widgets'))) {
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            static::parseClasses($classes, $m->get('widgets'));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return $classes;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected static function parseClasses(&$classes, $list)
 | 
			
		||||
    {
 | 
			
		||||
        foreach ($list as $class) {
 | 
			
		||||
            if (!class_exists($class)) {
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            $name = (new $class())->getDefaultName();
 | 
			
		||||
 | 
			
		||||
            $classes[$class] = $name;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function getInstance($model)
 | 
			
		||||
    {
 | 
			
		||||
        $class = $model->class;
 | 
			
		||||
 | 
			
		||||
        return new $class($model);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function show($model)
 | 
			
		||||
    {
 | 
			
		||||
        return static::getInstance($model)->show();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
use App\Traits\DateTime;
 | 
			
		||||
use App\Utilities\Widgets;
 | 
			
		||||
use Jenssegers\Date\Date;
 | 
			
		||||
 | 
			
		||||
if (!function_exists('user')) {
 | 
			
		||||
@@ -37,3 +38,15 @@ if (!function_exists('company_date')) {
 | 
			
		||||
        return Date::parse($date)->format($date_time->getCompanyDateFormat());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if (!function_exists('show_widget')) {
 | 
			
		||||
    /**
 | 
			
		||||
     * Format the given date based on company settings.
 | 
			
		||||
     *
 | 
			
		||||
     * @return string
 | 
			
		||||
     */
 | 
			
		||||
    function show_widget($model)
 | 
			
		||||
    {
 | 
			
		||||
        return Widgets::show($model);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user