diff --git a/app/Models/Order/Loan/LoanOrder.php b/app/Models/Order/Loan/LoanOrder.php index 8e5c4dc..94968d8 100644 --- a/app/Models/Order/Loan/LoanOrder.php +++ b/app/Models/Order/Loan/LoanOrder.php @@ -5,6 +5,7 @@ namespace App\Models\Order\Loan; use App\Models\Branch\Branch; use App\Models\System\Location\Province; use App\Models\User; +use App\Repos\Order\Loan\LoanOrderRepo; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -103,4 +104,15 @@ class LoanOrder extends Model { return $this->belongsTo(User::class, 'user_id'); } + + /** + * "boot" method for model + */ + protected static function boot() + { + parent::boot(); + + static::creating(LoanOrderRepo::creating()); + static::created(LoanOrderRepo::created()); + } } diff --git a/app/Nova/Resources/Order/Card/CardOrder.php b/app/Nova/Resources/Order/Card/CardOrder.php index 496cde4..dfb537d 100644 --- a/app/Nova/Resources/Order/Card/CardOrder.php +++ b/app/Nova/Resources/Order/Card/CardOrder.php @@ -8,6 +8,7 @@ use App\Nova\Resource; use App\Nova\Resources\Order\Card\Concerns\CardOrderNovaRepo; use App\Nova\User; use App\Repos\Order\Card\CardStateRepo; +use App\Repos\Order\Card\CardTypeRepo; use App\Repos\Order\OrderRepo; use App\Repos\System\Nova\NovaRepo; use App\Repos\System\Settings\Legal\PassportRepo; @@ -18,10 +19,13 @@ use Illuminate\Http\Request; use Laravel\Nova\Fields\BelongsTo; use Laravel\Nova\Fields\Date; use Laravel\Nova\Fields\ID; +use Laravel\Nova\Fields\Image; use Laravel\Nova\Fields\Number; use Laravel\Nova\Fields\Select; use Laravel\Nova\Fields\Text; use Laravel\Nova\Http\Requests\NovaRequest; +use Laravel\Nova\Panel; +use Nurmuhammet\NovaInputmask\NovaInputmask; class CardOrder extends Resource { diff --git a/app/Nova/Resources/Order/Loan/Concerns/LoanOrderFieldsForDetail.php b/app/Nova/Resources/Order/Loan/Concerns/LoanOrderFieldsForDetail.php index ff53b2e..1618da1 100644 --- a/app/Nova/Resources/Order/Loan/Concerns/LoanOrderFieldsForDetail.php +++ b/app/Nova/Resources/Order/Loan/Concerns/LoanOrderFieldsForDetail.php @@ -41,7 +41,7 @@ class LoanOrderFieldsForDetail ->withIcons() ->icons(OrderRepo::statusIcons()), - Text::make(__('Note'), 'status_reason'), + Text::make(__('Note'), 'notes'), BelongsTo::make(__('Created by').': ', 'user', User::class), diff --git a/app/Nova/Resources/Order/Loan/Concerns/LoanOrderNovaRepo.php b/app/Nova/Resources/Order/Loan/Concerns/LoanOrderNovaRepo.php index 6a2e067..dc541ab 100644 --- a/app/Nova/Resources/Order/Loan/Concerns/LoanOrderNovaRepo.php +++ b/app/Nova/Resources/Order/Loan/Concerns/LoanOrderNovaRepo.php @@ -2,31 +2,6 @@ namespace App\Nova\Resources\Order\Loan\Concerns; -use App\Models\Branch\Branch; -use App\Repos\Order\OrderRepo; -use Illuminate\Database\Eloquent\Model; -use Laravel\Nova\Http\Requests\NovaRequest; - class LoanOrderNovaRepo { - public static function fillUniqueId($request, $model): string - { - return mb_strtoupper(sprintf( - 'TB%s-%s', - Branch::find($request->branch_id)->unique_code ?? 'TB', - $model->id - )) ?? uniqid(); - } - - /** - * After model has been created - */ - public static function afterCreate(NovaRequest $request, Model $model): void - { - $model->update([ - 'unique_id' => static::fillUniqueId($request, $model), - 'user_id' => auth()->id(), - 'status' => OrderRepo::defaultStatus(), - ]); - } } diff --git a/app/Nova/Resources/Order/Loan/LoanOrder.php b/app/Nova/Resources/Order/Loan/LoanOrder.php index 9871f44..77e0ab2 100644 --- a/app/Nova/Resources/Order/Loan/LoanOrder.php +++ b/app/Nova/Resources/Order/Loan/LoanOrder.php @@ -10,8 +10,6 @@ use App\Nova\Filters\StatusFilter; use App\Nova\Resource; use App\Nova\Resources\Order\Loan\Concerns\LoanOrderFieldsForDetail; use App\Nova\Resources\Order\Loan\Concerns\LoanOrderFieldsForIndex; -use App\Nova\Resources\Order\Loan\Concerns\LoanOrderNovaRepo; -use App\Nova\User; use App\Repos\Order\Loan\LoanTypeRepo; use App\Repos\Order\OrderRepo; use App\Repos\System\Nova\NovaRepo; @@ -24,9 +22,9 @@ use App\Rules\OnlyLetters; use Illuminate\Database\Eloquent\Model; use Illuminate\Http\Request; use Illuminate\Support\Facades\Gate; -use Laravel\Nova\Fields\BelongsTo; use Laravel\Nova\Fields\Date; use Laravel\Nova\Fields\Email; +use Laravel\Nova\Fields\Hidden; use Laravel\Nova\Fields\ID; use Laravel\Nova\Fields\Image; use Laravel\Nova\Fields\Number; @@ -126,14 +124,6 @@ class LoanOrder extends Resource return $query->where('user_id', $request->user()->id); } - /** - * Register a callback to be called after the resource is created. - */ - public static function afterCreate(NovaRequest $request, Model $model): void - { - LoanOrderNovaRepo::afterCreate($request, $model); - } - /** * Get the fields for index. */ @@ -158,6 +148,10 @@ class LoanOrder extends Resource return [ ID::make()->sortable(), + Hidden::make('user_id') + ->default(auth()->id()) + ->hideWhenUpdating(), + Select::make(__('Status'), 'status') ->displayUsingLabels() ->searchable() @@ -167,14 +161,10 @@ class LoanOrder extends Resource ->rules('required') ->canSeeWhen('systemUser', $this), - Text::make(__('Note'), 'status_reason') + Text::make(__('Note'), 'notes') ->fullWidth() ->canSeeWhen('systemUser', $this), - BelongsTo::make(__('Created by').': ', 'user', User::class) - ->fullWidth() - ->canSeeWhen('isMe', $this), - new Panel(__('Loan'), [ Select::make(__('Loan type'), 'loan_type') ->displayUsingLabels() diff --git a/app/Providers/NovaServiceProvider.php b/app/Providers/NovaServiceProvider.php index be82d98..16fd36b 100644 --- a/app/Providers/NovaServiceProvider.php +++ b/app/Providers/NovaServiceProvider.php @@ -4,6 +4,7 @@ namespace App\Providers; use App\Nova\Dashboards\Main; use App\Nova\Resources\Branch\Branch; +use App\Nova\Resources\Order\Card\CardOrder; use App\Nova\Resources\Order\Card\CardState; use App\Nova\Resources\Order\Card\CardType; use App\Nova\Resources\Order\Loan\LoanOrder; @@ -120,6 +121,7 @@ class NovaServiceProvider extends NovaApplicationServiceProvider MenuSection::make(__('Orders'), [ MenuItem::resource(LoanOrder::class), + MenuItem::resource(CardOrder::class), ])->icon('collection')->collapsable(), MenuSection::make(__('System'), [ diff --git a/app/Repos/Order/Loan/LoanOrderRepo.php b/app/Repos/Order/Loan/LoanOrderRepo.php new file mode 100644 index 0000000..b25714d --- /dev/null +++ b/app/Repos/Order/Loan/LoanOrderRepo.php @@ -0,0 +1,39 @@ +status = $model->status ?: OrderRepo::defaultStatus(); + }; + } + + /** + * When model is created + */ + public static function created(): Closure + { + return function ($model) { + $model->update(['unique_id' => static::fillUniqueId($model)]); + }; + } + + /** + * Fill unique id + * + * @param App\Models\Order\Loan\LoanOrder $model + */ + public static function fillUniqueId($model): string + { + return sprintf('TB%s-%s', Branch::find($model->branch_id)->unique_code, $model->id) ?? uniqid(); + } +} diff --git a/database/migrations/2023_12_09_301348_create_card_orders_table.php b/database/migrations/2023_12_09_301348_create_card_orders_table.php index 7a75529..66d6a10 100644 --- a/database/migrations/2023_12_09_301348_create_card_orders_table.php +++ b/database/migrations/2023_12_09_301348_create_card_orders_table.php @@ -54,6 +54,7 @@ return new class extends Migration $table->foreignId('user_id')->constrained('users')->restrictOnDelete(); $table->timestamps(); + $table->softDeletes(); }); }