diff --git a/app/Nova/Resources/Order/Loan/LoanOrder.php b/app/Nova/Resources/Order/Loan/LoanOrder.php index 0cab1ab..102d639 100644 --- a/app/Nova/Resources/Order/Loan/LoanOrder.php +++ b/app/Nova/Resources/Order/Loan/LoanOrder.php @@ -10,6 +10,7 @@ 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\Repos\Order\Loan\LoanOrderRepo; use App\Repos\Order\Loan\LoanTypeRepo; use App\Repos\Order\OrderRepo; use App\Repos\System\Nova\NovaRepo; @@ -126,6 +127,42 @@ class LoanOrder extends Resource return $query->where('user_id', $request->user()->id); } + /** + * Register a callback to be called after the resource is created. + * + * @param \Laravel\Nova\Http\Requests\NovaRequest $request + * @param \Illuminate\Database\Eloquent\Model $model + * @return void + */ + public static function afterCreate(NovaRequest $request, Model $model): void + { + LoanOrderRepo::notifyUser($request, $model, __('Loan order created'), 'success'); + } + + /** + * Register a callback to be called after the resource is updated. + * + * @param \Laravel\Nova\Http\Requests\NovaRequest $request + * @param \Illuminate\Database\Eloquent\Model $model + * @return void + */ + public static function afterUpdate(NovaRequest $request, Model $model): void + { + LoanOrderRepo::notifyUser($request, $model, __('Loan order updated')); + } + + /** + * Register a callback to be called after the resource is deleted. + * + * @param \Laravel\Nova\Http\Requests\NovaRequest $request + * @param \Illuminate\Database\Eloquent\Model $model + * @return void + */ + public static function afterDelete(NovaRequest $request, Model $model): void + { + LoanOrderRepo::notifyUser($request, $model, __('Loan order deleted')); + } + /** * Get the fields for index. * diff --git a/app/Repos/Order/Loan/LoanOrderRepo.php b/app/Repos/Order/Loan/LoanOrderRepo.php index a07050a..6eccf93 100644 --- a/app/Repos/Order/Loan/LoanOrderRepo.php +++ b/app/Repos/Order/Loan/LoanOrderRepo.php @@ -3,9 +3,13 @@ namespace App\Repos\Order\Loan; use App\Models\Branch\Branch; +use App\Nova\Resources\Order\Loan\LoanOrder as NovaLoanOrder; use App\Repos\Order\OrderRepo; use Closure; use Illuminate\Database\Eloquent\Model; +use Laravel\Nova\Http\Requests\NovaRequest; +use Laravel\Nova\Notifications\NovaNotification; +use Laravel\Nova\URL; class LoanOrderRepo { @@ -40,14 +44,14 @@ class LoanOrderRepo public static function created(): Closure { return function ($model) { - $model->update(['unique_id' => static::fillUniqueId($model)]); + $model->update(['unique_id' => static::generateUniqueId($model)]); }; } /** * Fill unique id */ - public static function fillUniqueId(mixed $model): string + public static function generateUniqueId(mixed $model): string { return sprintf( 'TB%s-%s', @@ -55,4 +59,23 @@ class LoanOrderRepo $model->id, ); } + + public static function notifyUser(NovaRequest $request, Model $model, string $message, string $type = 'info'): void + { + /** @var \App\Models\Order\Loan\LoanOrder */ + $loanOrder = $model; + + $id = $loanOrder->id; + $nova_path = config('nova.path'); + $loan_order_path = NovaLoanOrder::uriKey(); + $url = url($nova_path.'/resources/'.$loan_order_path.'/'.$id); + + $request->user()->notifyNow( + NovaNotification::make() + ->message($message.': '.$loanOrder->unique_id) + ->action(__('See'), URL::remote($url)) + ->icon('cash') + ->type($type) + ); + } } diff --git a/app/Repos/System/Nova/NovaMenuRepo.php b/app/Repos/System/Nova/NovaMenuRepo.php index 40ac7d7..c6f258d 100644 --- a/app/Repos/System/Nova/NovaMenuRepo.php +++ b/app/Repos/System/Nova/NovaMenuRepo.php @@ -73,7 +73,7 @@ class NovaMenuRepo MenuItem::resource(User::class)->name(__('All users')), ])->collapsedByDefault()->icon('user-group'), - MenuSection::make(__('System'), [ + MenuSection::make(__('Settings'), [ MenuGroup::make(__('Users'), [ MenuItem::resource(Role::class), MenuItem::resource(Permission::class), diff --git a/lang/tk.json b/lang/tk.json index 3fe1cd5..6aa1bd0 100644 --- a/lang/tk.json +++ b/lang/tk.json @@ -327,6 +327,7 @@ "Currency rate": "Walýuta kursy", "Passport number": "Pasport nomeri", "Fetch loan history": "Karz taryhyny görmek", + "See": "Görmek", "Online payment": "Onlaýn töleg", "Online payment history": "Onlaýn töleg taryhy", "Make payment": "Töleg", @@ -337,5 +338,9 @@ "This month": "Şul aý", "Retry payment": "Tölegi täzeden geçir", "Operators": "Operatorlar", - "Operator": "Operator" + "Operator": "Operator", + "Settings": "Sazlamalar", + "Loan order created": "Karz sargydy döredildi", + "Loan order updated": "Karz sargydy üýtgedildi", + "Loan order deleted": "Karz sargydy pozuldy" }