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