diff --git a/app/Filament/Resources/IncomingLetterResource.php b/app/Filament/Resources/IncomingLetterResource.php index 2d5b259..7bc8655 100644 --- a/app/Filament/Resources/IncomingLetterResource.php +++ b/app/Filament/Resources/IncomingLetterResource.php @@ -23,7 +23,9 @@ class IncomingLetterResource extends Resource return $form ->schema([ TextInput::make('number') - ->required(), + ->integer() + ->required() + ->default(fn () => getLatestNumber() + 1), TextInput::make('name') ->required(), diff --git a/app/Filament/Resources/IncomingLetterResource/Pages/CreateIncomingLetter.php b/app/Filament/Resources/IncomingLetterResource/Pages/CreateIncomingLetter.php index 5ffc7f0..63bcb62 100644 --- a/app/Filament/Resources/IncomingLetterResource/Pages/CreateIncomingLetter.php +++ b/app/Filament/Resources/IncomingLetterResource/Pages/CreateIncomingLetter.php @@ -11,6 +11,6 @@ class CreateIncomingLetter extends CreateRecord protected function getRedirectUrl(): string { - return static::getResource()::getUrl('index'); + return $this->getResource()::getUrl('index'); } } diff --git a/app/Helpers/helpers.php b/app/Helpers/helpers.php index 9f19bbc..e61a378 100644 --- a/app/Helpers/helpers.php +++ b/app/Helpers/helpers.php @@ -3,7 +3,9 @@ use App\Modules\EmptyModule; use App\Modules\ModuleContract; use Illuminate\Support\Collection; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\File; +use Illuminate\Support\Facades\Log; use Illuminate\Support\Str; /** @@ -94,3 +96,29 @@ function temp_cache(string $key = ''): mixed ? $tempCache->get($key) : cache()->driver('array'); } + +/** + * Log + */ +function logDB(): void +{ + if (! app()->isLocal()) { + return; + } + + DB::listen(function ($query) { + Log::info($query->sql, $query->bindings, $query->time); + }); +} + +/** + * Get latest number + * + * @param string $tableName + */ +function getLatestNumber(string $tableName = 'incoming_letters', string $column = 'number'): int +{ + $data = DB::table($tableName)->select(DB::raw("MAX(CAST(REGEXP_REPLACE({$column}, '[^0-9]', '') AS UNSIGNED)) AS max_number"))->first(); + + return intval($data->max_number) ?? 0; +} diff --git a/app/Modules/IncomingLetter/Database/Migrations/2024_10_22_152424_create_incoming_letters_table.php b/app/Modules/IncomingLetter/Database/Migrations/2024_10_22_152424_create_incoming_letters_table.php index 356e1cb..6f3e163 100644 --- a/app/Modules/IncomingLetter/Database/Migrations/2024_10_22_152424_create_incoming_letters_table.php +++ b/app/Modules/IncomingLetter/Database/Migrations/2024_10_22_152424_create_incoming_letters_table.php @@ -16,6 +16,7 @@ return new class extends Migration $table->string('number')->nullable(); $table->string('name')->nullable(); $table->string('main_file')->nullable(); + $table->softDeletes(); $table->timestamps(); }); } diff --git a/app/Modules/IncomingLetter/IncomingLetterModule.php b/app/Modules/IncomingLetter/IncomingLetterModule.php index 9798f7e..43ad553 100644 --- a/app/Modules/IncomingLetter/IncomingLetterModule.php +++ b/app/Modules/IncomingLetter/IncomingLetterModule.php @@ -4,10 +4,12 @@ namespace App\Modules\IncomingLetter; use App\Modules\Makeable; use App\Modules\ModuleContract; +use Illuminate\Database\Eloquent\SoftDeletes; class IncomingLetterModule implements ModuleContract { use Makeable; + use SoftDeletes; /** * Module is enabled diff --git a/app/Modules/OutgoingLetter/Database/Migrations/2024_10_22_152500_create_outgoing_letters_table.php b/app/Modules/OutgoingLetter/Database/Migrations/2024_10_22_152500_create_outgoing_letters_table.php index 0c34632..cc69719 100644 --- a/app/Modules/OutgoingLetter/Database/Migrations/2024_10_22_152500_create_outgoing_letters_table.php +++ b/app/Modules/OutgoingLetter/Database/Migrations/2024_10_22_152500_create_outgoing_letters_table.php @@ -16,6 +16,7 @@ return new class extends Migration $table->string('number')->nullable(); $table->string('name')->nullable(); $table->string('main_file')->nullable(); + $table->softDeletes(); $table->timestamps(); }); } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 0fe693a..accf424 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -24,6 +24,8 @@ class AppServiceProvider extends ServiceProvider Model::shouldBeStrict(! app()->isProduction()); $this->registerModules(); + + // logDB(); } /**