user notifications added

This commit is contained in:
2025-05-09 22:02:31 +05:00
parent a80c563773
commit a789a5cefa
4 changed files with 69 additions and 4 deletions

View File

@@ -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.
*

View File

@@ -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)
);
}
}

View File

@@ -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),

View File

@@ -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"
}