add modules seeeders to base apps
This commit is contained in:
@@ -3,17 +3,13 @@
|
||||
namespace App\Filament\Resources;
|
||||
|
||||
use App\Filament\Resources\BankResource\Pages;
|
||||
use App\Filament\Resources\BankResource\RelationManagers;
|
||||
use App\Modules\Bank\Models\Bank;
|
||||
use Filament\Forms;
|
||||
use Filament\Forms\Components\TextInput;
|
||||
use Filament\Forms\Form;
|
||||
use Filament\Resources\Resource;
|
||||
use Filament\Tables;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Tables\Table;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\SoftDeletingScope;
|
||||
use Illuminate\Support\Carbon;
|
||||
|
||||
class BankResource extends Resource
|
||||
@@ -21,6 +17,7 @@ class BankResource extends Resource
|
||||
protected static ?string $model = Bank::class;
|
||||
|
||||
protected static ?string $navigationGroup = 'Settings';
|
||||
|
||||
protected static ?string $navigationIcon = 'heroicon-o-building-library';
|
||||
|
||||
public static function form(Form $form): Form
|
||||
@@ -57,7 +54,7 @@ class BankResource extends Resource
|
||||
->dateTime()
|
||||
->sortable()
|
||||
->sinceTooltip()
|
||||
->formatStateUsing(fn (?Carbon $state) => $state?->format('H:i, d.m.Y'))
|
||||
->formatStateUsing(fn (?Carbon $state) => $state?->format('H:i, d.m.Y')),
|
||||
])
|
||||
->filters([
|
||||
//
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
namespace App\Filament\Resources\BankResource\Pages;
|
||||
|
||||
use App\Filament\Resources\BankResource;
|
||||
use Filament\Actions;
|
||||
use Filament\Resources\Pages\CreateRecord;
|
||||
|
||||
class CreateBank extends CreateRecord
|
||||
|
||||
@@ -3,23 +3,20 @@
|
||||
namespace App\Filament\Resources\Codes;
|
||||
|
||||
use App\Filament\Resources\Codes\PaymentPurposeCodeResource\Pages;
|
||||
use App\Filament\Resources\Codes\PaymentPurposeCodeResource\RelationManagers;
|
||||
use App\Modules\PaymentPurposeCode\Models\PaymentPurposeCode;
|
||||
use Filament\Forms;
|
||||
use Filament\Forms\Components\TextInput;
|
||||
use Filament\Forms\Form;
|
||||
use Filament\Resources\Resource;
|
||||
use Filament\Tables;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Tables\Table;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\SoftDeletingScope;
|
||||
|
||||
class PaymentPurposeCodeResource extends Resource
|
||||
{
|
||||
protected static ?string $model = PaymentPurposeCode::class;
|
||||
|
||||
protected static ?string $navigationIcon = 'heroicon-o-cube';
|
||||
|
||||
protected static ?string $navigationGroup = 'Settings';
|
||||
|
||||
public static function form(Form $form): Form
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
namespace App\Filament\Resources\Codes\PaymentPurposeCodeResource\Pages;
|
||||
|
||||
use App\Filament\Resources\Codes\PaymentPurposeCodeResource;
|
||||
use Filament\Actions;
|
||||
use Filament\Resources\Pages\CreateRecord;
|
||||
|
||||
class CreatePaymentPurposeCode extends CreateRecord
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
<?php
|
||||
|
||||
use App\Modules\BaseModule;
|
||||
use App\Modules\EmptyModule;
|
||||
use App\Modules\Module;
|
||||
use App\Modules\ModuleContract;
|
||||
use App\Modules\TurkmenNumberFormatter\Repositories\TurkmenNumberFormatter;
|
||||
use Illuminate\Contracts\Cache\Repository as CacheRepository;
|
||||
@@ -56,12 +58,12 @@ function modules_path(string $path = ''): string
|
||||
/**
|
||||
* Modules
|
||||
*
|
||||
* @return Collection<array-key, string>
|
||||
* @return Collection<array-key, BaseModule>
|
||||
*/
|
||||
function modules(bool $withDisabled = false): Collection
|
||||
{
|
||||
if (temp_cache()->has('modules')) {
|
||||
/** @var Collection<array-key, string> $modules */
|
||||
/** @var Collection<array-key, BaseModule> $modules */
|
||||
$modules = temp_cache('modules');
|
||||
|
||||
return $modules;
|
||||
@@ -74,21 +76,21 @@ function modules(bool $withDisabled = false): Collection
|
||||
foreach ($modulesDir as $modulePath) {
|
||||
$moduleName = Str::afterLast($modulePath, '/');
|
||||
|
||||
$moduleOptions = [
|
||||
'path' => $modulePath,
|
||||
'name' => $moduleName.'Module',
|
||||
'enabled' => module($moduleName)->isEnabled(),
|
||||
];
|
||||
$module = new BaseModule(
|
||||
path: $modulePath,
|
||||
name: $moduleName,
|
||||
enabled: module($moduleName)->isEnabled()
|
||||
);
|
||||
|
||||
// Include all
|
||||
if ($withDisabled) {
|
||||
$modules->push($moduleOptions);
|
||||
$modules->push($module);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($moduleOptions['enabled']) {
|
||||
$modules->push($moduleOptions);
|
||||
if ($module->enabled) {
|
||||
$modules->push($module);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BIN
app/Modules/.DS_Store
vendored
BIN
app/Modules/.DS_Store
vendored
Binary file not shown.
@@ -27,7 +27,7 @@ class BankModule implements ModuleContract
|
||||
*/
|
||||
public function disable(): void
|
||||
{
|
||||
$this->enabled = false;
|
||||
$this->enabled = false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -35,7 +35,7 @@ class BankModule implements ModuleContract
|
||||
*/
|
||||
public function enable(): void
|
||||
{
|
||||
$this->enabled = true;
|
||||
$this->enabled = true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
namespace App\Modules\Bank\Database\Seeders;
|
||||
|
||||
use App\Modules\Bank\Models\Bank;
|
||||
use Exception;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\File;
|
||||
|
||||
@@ -17,14 +16,7 @@ class BankTableSeeder extends Seeder
|
||||
$data = collect(File::json(__DIR__.'/../../Resources/Data/data.json'));
|
||||
|
||||
$data->each(function ($item) {
|
||||
try {
|
||||
Bank::create(['bab' => $item['key'], 'name' => $item['value']]);
|
||||
} catch (Exception $e) {
|
||||
info([
|
||||
'm' => $e->getMessage(),
|
||||
'item' => $item,
|
||||
]);
|
||||
}
|
||||
Bank::create(['bab' => $item['key'], 'name' => $item['value']]);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
namespace App\Modules\Bank\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Concerns\HasUuids;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
@@ -10,7 +9,4 @@ use Illuminate\Database\Eloquent\Model;
|
||||
* @property string $bab
|
||||
* @property ?string $hb
|
||||
*/
|
||||
class Bank extends Model
|
||||
{
|
||||
|
||||
}
|
||||
class Bank extends Model {}
|
||||
|
||||
@@ -2,9 +2,4 @@
|
||||
|
||||
namespace App\Modules\Bank\Repositories;
|
||||
|
||||
use App\Modules\Bank\Models\Bank;
|
||||
|
||||
class BankRepository
|
||||
{
|
||||
|
||||
}
|
||||
class BankRepository {}
|
||||
|
||||
12
app/Modules/BaseModule.php
Normal file
12
app/Modules/BaseModule.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
namespace App\Modules;
|
||||
|
||||
class BaseModule
|
||||
{
|
||||
public function __construct(
|
||||
public string $path,
|
||||
public string $name,
|
||||
public bool $enabled,
|
||||
) {}
|
||||
}
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
namespace App\Modules\PaymentPurposeCode\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Concerns\HasUuids;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
@@ -12,7 +11,4 @@ use Illuminate\Database\Eloquent\Model;
|
||||
* @property \Carbon\Carbon $created_at
|
||||
* @property Carbon\Carbon $updated_at
|
||||
*/
|
||||
class PaymentPurposeCode extends Model
|
||||
{
|
||||
|
||||
}
|
||||
class PaymentPurposeCode extends Model {}
|
||||
|
||||
@@ -27,7 +27,7 @@ class PaymentPurposeCodeModule implements ModuleContract
|
||||
*/
|
||||
public function disable(): void
|
||||
{
|
||||
$this->enabled = false;
|
||||
$this->enabled = false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -35,7 +35,7 @@ class PaymentPurposeCodeModule implements ModuleContract
|
||||
*/
|
||||
public function enable(): void
|
||||
{
|
||||
$this->enabled = true;
|
||||
$this->enabled = true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -2,9 +2,4 @@
|
||||
|
||||
namespace App\Modules\PaymentPurposeCode\Repositories;
|
||||
|
||||
use App\Modules\PaymentPurposeCode\Models\PaymentPurposeCode;
|
||||
|
||||
class PaymentPurposeCodeRepository
|
||||
{
|
||||
|
||||
}
|
||||
class PaymentPurposeCodeRepository {}
|
||||
|
||||
@@ -2,10 +2,6 @@
|
||||
|
||||
namespace App\Modules\UserCompany\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Concerns\HasUuids;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class UserCompany extends Model
|
||||
{
|
||||
|
||||
}
|
||||
class UserCompany extends Model {}
|
||||
|
||||
@@ -2,9 +2,4 @@
|
||||
|
||||
namespace App\Modules\UserCompany\Repositories;
|
||||
|
||||
use App\Modules\UserCompany\Models\UserCompany;
|
||||
|
||||
class UserCompanyRepository
|
||||
{
|
||||
|
||||
}
|
||||
class UserCompanyRepository {}
|
||||
|
||||
@@ -27,7 +27,7 @@ class UserCompanyModule implements ModuleContract
|
||||
*/
|
||||
public function disable(): void
|
||||
{
|
||||
$this->enabled = false;
|
||||
$this->enabled = false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -35,7 +35,7 @@ class UserCompanyModule implements ModuleContract
|
||||
*/
|
||||
public function enable(): void
|
||||
{
|
||||
$this->enabled = true;
|
||||
$this->enabled = true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use App\Modules\BaseModule;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
@@ -34,8 +35,10 @@ class AppServiceProvider extends ServiceProvider
|
||||
public function registerModules(): void
|
||||
{
|
||||
$migrationDirectories = [];
|
||||
modules()->each(function ($module) use (&$migrationDirectories) {
|
||||
is_dir($module['path'].'/Database/Migrations') ? array_push($migrationDirectories, $module['path'].'/Database/Migrations') : ''; // @phpstan-ignore-line
|
||||
modules()->each(function (BaseModule $module) use (&$migrationDirectories) {
|
||||
is_dir($module->path.'/Database/Migrations')
|
||||
? array_push($migrationDirectories, $module->path.'/Database/Migrations')
|
||||
: '';
|
||||
});
|
||||
|
||||
$this->loadMigrationsFrom($migrationDirectories);
|
||||
|
||||
@@ -3,9 +3,10 @@
|
||||
namespace Database\Seeders;
|
||||
|
||||
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use App\Modules\Bank\Database\Seeders\BankTableSeeder;
|
||||
use App\Modules\PaymentPurposeCode\Database\Seeders\PaymentPurposeCodeSeeder;
|
||||
|
||||
use App\Modules\BaseModule;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\File;
|
||||
|
||||
class DatabaseSeeder extends Seeder
|
||||
{
|
||||
@@ -14,8 +15,26 @@ class DatabaseSeeder extends Seeder
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
$this->call([
|
||||
BankTableSeeder::class,
|
||||
]);
|
||||
$seeders = [];
|
||||
|
||||
modules()->each(function (BaseModule $module) use (&$seeders) {
|
||||
$seedersPath = $module->path.'/Database/Seeders';
|
||||
|
||||
if (is_dir($seedersPath)) {
|
||||
$files = File::files($seedersPath);
|
||||
|
||||
foreach ($files as $file) {
|
||||
$file->getFilenameWithoutExtension();
|
||||
|
||||
$moduleClass = 'App\\Modules\\'.$module->name.'\\Database\\Seeders\\'.$file->getFilenameWithoutExtension();
|
||||
|
||||
if (class_exists($moduleClass)) {
|
||||
$seeders[] = $moduleClass;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$this->call($seeders);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user