- membuat datatables - membuat logika untuk handle approve dan reject - casting dan scope model - membuat badge di sidebar untuk counting data yang belum disetujui - menyesuaikan logika untuk mengajukan harga beli dengan skema table yang baru - menyesuaikan skema table yang baru - menyesuaikan parameter yang dikriim untuk pengajuan - menyesuaikan logika table - membuat permission
60 lines
1.8 KiB
PHP
60 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Traits;
|
|
|
|
use App\Jobs\StorePushNotification;
|
|
use App\Models\PriceRequest;
|
|
use App\Models\PushNotification;
|
|
use App\Models\User;
|
|
use Flux\Flux;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
trait WithShowPrice
|
|
{
|
|
public function requestPrice(string $module)
|
|
{
|
|
$recentRequest = PriceRequest::where('user_id', auth()->id())
|
|
->where('module', $module)
|
|
->pending()
|
|
->exists();
|
|
|
|
if ($recentRequest) {
|
|
$this->toast('Permohonan kamu sedang di proses oleh owner, mohon tunggu dan kami akan memberi tahu Anda jika prosesnya sudah selesai.', 'Peringatan', 'warning');
|
|
Flux::modal('show-price')->close();
|
|
|
|
return;
|
|
}
|
|
|
|
$owner = User::role(['owner', 'Developer'])->with('employee')->first();
|
|
|
|
if (! $owner) {
|
|
$this->toast('Owner belum terdaftar, silakan hubungi Admin.', 'Gagal', 'danger');
|
|
Flux::modal('show-price')->close();
|
|
|
|
return;
|
|
}
|
|
|
|
$causerName = auth()->user()->employee?->full_name;
|
|
|
|
DB::transaction(function () use ($module, $owner, $causerName) {
|
|
PriceRequest::create([
|
|
'user_id' => auth()->id(),
|
|
'module' => $module,
|
|
]);
|
|
|
|
StorePushNotification::dispatch(
|
|
PushNotification::all(),
|
|
[
|
|
'title' => 'Permintaan Persetujuan Harga Beli',
|
|
'body' => "Haloo {$owner->employee?->full_name}, saya {$causerName}, saya ingin mengajukan permintaan persetujuan untuk mengakses data harga beli {$module}.",
|
|
'route' => route('studio.manage.price_request.index'),
|
|
],
|
|
);
|
|
});
|
|
|
|
$this->toast('Permintaan persetujuan berhasil dikirim.');
|
|
|
|
Flux::modal('show-price')->close();
|
|
}
|
|
}
|