parfum/app/Livewire/Studio/Manage/PriceRequest.php
2025-11-21 15:30:50 +07:00

77 lines
2.2 KiB
PHP

<?php
namespace App\Livewire\Studio\Manage;
use App\Enums\PriceRequestStatus;
use App\Jobs\StorePushNotification;
use App\Models\PriceRequest as PriceRequestModel;
use App\Models\PushNotification;
use App\Traits\Notification\WithSubscribeNotification;
use App\Traits\WithAuthorization;
use App\Traits\WithConfirmation;
use App\Traits\WithToast;
use Flux\Flux;
use Livewire\Attributes\Title;
use Livewire\Component;
#[Title('Permintaan Harga')]
class PriceRequest extends Component
{
use WithAuthorization, WithConfirmation, WithSubscribeNotification, WithToast;
public function approve(PriceRequestModel $priceRequest)
{
$this->canOrAbort('approve price request');
$priceRequest->update([
'status' => PriceRequestStatus::APPROVED->value,
'finalized_at' => now(),
]);
StorePushNotification::dispatch(
PushNotification::where('user_id', $priceRequest->user_id)->get(),
[
'title' => 'Permintaan Harga Disetujui ✅',
'body' => "Selamat! Permintaan untuk melihat harga beli {$priceRequest->module} sudah disetujui 🎉",
],
);
$this->dispatch('refreshDatatable');
$this->toast('Permintaan harga berhasil disetujui.');
Flux::modals()->close();
}
public function reject(PriceRequestModel $priceRequest)
{
$this->canOrAbort('reject price request');
$priceRequest->update([
'status' => PriceRequestStatus::REJECTED->value,
'finalized_at' => now(),
]);
StorePushNotification::dispatch(
PushNotification::where('user_id', $priceRequest->user_id)->get(),
[
'title' => 'Permintaan Harga Ditolak ❌',
'body' => "Maaf, permintaan untuk melihat harga beli {$priceRequest->module} tidak dapat dipenuhi 🙏",
],
);
$this->dispatch('refreshDatatable');
$this->toast('Permintaan harga berhasil ditolak.');
Flux::modals()->close();
}
public function render()
{
return view('livewire.studio.manage.price-requests', [
'pageTitle' => 'Permintaan Harga',
]);
}
}