feat(push notification): membuat trait untuk simpan data subcription dan use di di semua component
This commit is contained in:
parent
163a90b857
commit
fd5a85400c
@ -3,6 +3,7 @@
|
||||
namespace App\Livewire\Studio\Catalog\Bottle;
|
||||
|
||||
use App\Models\Bottle;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithConfirmation;
|
||||
use App\Traits\WithShowPrice;
|
||||
use App\Traits\WithToast;
|
||||
@ -13,7 +14,7 @@
|
||||
#[Title('Botol')]
|
||||
class Index extends Component
|
||||
{
|
||||
use WithConfirmation, WithShowPrice, WithToast;
|
||||
use WithConfirmation, WithShowPrice, WithSubscribeNotification, WithToast;
|
||||
|
||||
public function delete(Bottle $bottle)
|
||||
{
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
use App\Livewire\Forms\Studio\Catalog\BrandForm;
|
||||
use App\Models\Brand as BrandModel;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithAuthorization;
|
||||
use App\Traits\WithCloseModal;
|
||||
use App\Traits\WithConfirmation;
|
||||
@ -17,7 +18,7 @@
|
||||
#[Title('Merek')]
|
||||
class Brand extends Component
|
||||
{
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData;
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData;
|
||||
|
||||
public BrandForm $form;
|
||||
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
use App\Livewire\Forms\Studio\Catalog\CategoryForm;
|
||||
use App\Models\Category as CategoryModel;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithAuthorization;
|
||||
use App\Traits\WithCloseModal;
|
||||
use App\Traits\WithConfirmation;
|
||||
@ -17,7 +18,7 @@
|
||||
#[Title('Kategori')]
|
||||
class Category extends Component
|
||||
{
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData;
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData;
|
||||
|
||||
public CategoryForm $form;
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
namespace App\Livewire\Studio\Catalog\Perfume;
|
||||
|
||||
use App\Models\Perfume;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithConfirmation;
|
||||
use App\Traits\WithShowPrice;
|
||||
use App\Traits\WithToast;
|
||||
@ -13,7 +14,7 @@
|
||||
#[Title('Parfum')]
|
||||
class Index extends Component
|
||||
{
|
||||
use WithConfirmation, WithShowPrice, WithToast;
|
||||
use WithConfirmation, WithShowPrice, WithSubscribeNotification, WithToast;
|
||||
|
||||
public function delete(Perfume $perfume)
|
||||
{
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
namespace App\Livewire\Studio\Catalog\Product;
|
||||
|
||||
use App\Models\Product;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithConfirmation;
|
||||
use App\Traits\WithShowPrice;
|
||||
use App\Traits\WithToast;
|
||||
@ -13,7 +14,7 @@
|
||||
#[Title('Produk')]
|
||||
class Index extends Component
|
||||
{
|
||||
use WithConfirmation, WithShowPrice,WithToast;
|
||||
use WithConfirmation, WithShowPrice, WithSubscribeNotification, WithToast;
|
||||
|
||||
public function delete(Product $product)
|
||||
{
|
||||
|
||||
@ -17,6 +17,7 @@
|
||||
use App\Models\Tier;
|
||||
use App\Models\User;
|
||||
use App\Models\Voucher;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use Carbon\Carbon;
|
||||
use Livewire\Attributes\Title;
|
||||
use Livewire\Component;
|
||||
@ -24,6 +25,8 @@
|
||||
#[Title('Analisa')]
|
||||
class Analysis extends Component
|
||||
{
|
||||
use WithSubscribeNotification;
|
||||
|
||||
public string $period = 'all';
|
||||
|
||||
public array $outlets = [];
|
||||
|
||||
@ -7,15 +7,16 @@
|
||||
use App\Models\OrderItem;
|
||||
use App\Models\Perfume;
|
||||
use App\Models\Purchase;
|
||||
use App\Models\PushNotification;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Livewire\Attributes\On;
|
||||
use Livewire\Attributes\Title;
|
||||
use Livewire\Component;
|
||||
|
||||
#[Title('Ringkasan')]
|
||||
class Overview extends Component
|
||||
{
|
||||
use WithSubscribeNotification;
|
||||
|
||||
public array $outlets = [];
|
||||
|
||||
public array $selectedOutletIds = [];
|
||||
@ -250,31 +251,6 @@ protected function loadStats()
|
||||
]);
|
||||
}
|
||||
|
||||
#[On('notification:subscribe')]
|
||||
public function notificationSubscribe(string $subscription)
|
||||
{
|
||||
$subscription = json_decode($subscription, true);
|
||||
|
||||
$isExist = PushNotification::where('user_id', auth()->id())
|
||||
->whereJsonContains('subscriptions->keys->auth', $subscription['keys']['auth'])
|
||||
->first();
|
||||
|
||||
if ($isExist) {
|
||||
return;
|
||||
}
|
||||
|
||||
$userId = auth()->id();
|
||||
|
||||
$encodedSubscription = json_encode($subscription);
|
||||
PushNotification::updateOrCreate(
|
||||
[
|
||||
'user_id' => $userId,
|
||||
'subscriptions' => $encodedSubscription,
|
||||
],
|
||||
['subscriptions' => $encodedSubscription],
|
||||
);
|
||||
}
|
||||
|
||||
public function render()
|
||||
{
|
||||
return view('livewire.studio.dashboard.overview');
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
use App\Livewire\Forms\Studio\Feature\ChooseUsForm;
|
||||
use App\Models\ChooseUs as ChooseUsModel;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithAuthorization;
|
||||
use App\Traits\WithCloseModal;
|
||||
use App\Traits\WithConfirmation;
|
||||
@ -17,7 +18,7 @@
|
||||
#[Title('Pilih Kami')]
|
||||
class ChooseUs extends Component
|
||||
{
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData;
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData;
|
||||
|
||||
public ChooseUsForm $form;
|
||||
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
use App\Livewire\Forms\Studio\Feature\PerfumeFeatureForm;
|
||||
use App\Models\PerfumeFeature as PerfumeFeatureModel;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithAuthorization;
|
||||
use App\Traits\WithCloseModal;
|
||||
use App\Traits\WithConfirmation;
|
||||
@ -17,7 +18,7 @@
|
||||
#[Title('Keunggulan Parfum')]
|
||||
class PerfumeFeature extends Component
|
||||
{
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData;
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData;
|
||||
|
||||
public PerfumeFeatureForm $form;
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
use App\Livewire\Forms\Studio\Finance\ExpenseForm;
|
||||
use App\Models\Expense as ExpenseModel;
|
||||
use App\Models\Outlet;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithAuthorization;
|
||||
use App\Traits\WithCloseModal;
|
||||
use App\Traits\WithConfirmation;
|
||||
@ -18,7 +19,7 @@
|
||||
#[Title('Pengeluaran')]
|
||||
class Expense extends Component
|
||||
{
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData;
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData;
|
||||
|
||||
public ExpenseForm $form;
|
||||
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
use App\Models\Payroll as PayrollModel;
|
||||
use App\Models\PayrollAdjustment;
|
||||
use App\Models\User;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithAuthorization;
|
||||
use App\Traits\WithCloseModal;
|
||||
use App\Traits\WithConfirmation;
|
||||
@ -22,7 +23,7 @@
|
||||
#[Title('Penggajian')]
|
||||
class Payroll extends Component
|
||||
{
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData, WithUserSelector;
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData, WithUserSelector;
|
||||
|
||||
public PayrollForm $form;
|
||||
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
use App\Livewire\Forms\Studio\Loyalty\CustomerForm;
|
||||
use App\Models\Customer as CustomerModel;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithAuthorization;
|
||||
use App\Traits\WithCloseModal;
|
||||
use App\Traits\WithConfirmation;
|
||||
@ -17,7 +18,7 @@
|
||||
#[Title('Customer')]
|
||||
class Customer extends Component
|
||||
{
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData;
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData;
|
||||
|
||||
public CustomerForm $form;
|
||||
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
use App\Models\Perfume;
|
||||
use App\Models\Product;
|
||||
use App\Models\Tier as TierModel;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithAuthorization;
|
||||
use App\Traits\WithCloseModal;
|
||||
use App\Traits\WithConfirmation;
|
||||
@ -20,7 +21,7 @@
|
||||
#[Title('Tier')]
|
||||
class Tier extends Component
|
||||
{
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData;
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData;
|
||||
|
||||
public array $tiers = [];
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
use App\Livewire\Forms\Studio\Loyalty\Tier\RewardForm;
|
||||
use App\Livewire\Studio\Loyalty\Tier;
|
||||
use App\Models\TierReward;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithAuthorization;
|
||||
use App\Traits\WithCloseModal;
|
||||
use App\Traits\WithConfirmation;
|
||||
@ -18,7 +19,7 @@
|
||||
#[Title('Hadiah')]
|
||||
class Reward extends Component
|
||||
{
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData;
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData;
|
||||
|
||||
public RewardForm $form;
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
namespace App\Livewire\Studio\Loyalty\Voucher;
|
||||
|
||||
use App\Models\Voucher;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithConfirmation;
|
||||
use App\Traits\WithToast;
|
||||
use Flux\Flux;
|
||||
@ -12,7 +13,7 @@
|
||||
#[Title('Voucher')]
|
||||
class Index extends Component
|
||||
{
|
||||
use WithConfirmation, WithToast;
|
||||
use WithConfirmation, WithSubscribeNotification, WithToast;
|
||||
|
||||
public array $stats = [];
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
namespace App\Livewire\Studio\Manage\Article;
|
||||
|
||||
use App\Models\Article;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithConfirmation;
|
||||
use App\Traits\WithToast;
|
||||
use Flux\Flux;
|
||||
@ -12,7 +13,7 @@
|
||||
#[Title('Artikel')]
|
||||
class Index extends Component
|
||||
{
|
||||
use WithConfirmation, WithToast;
|
||||
use WithConfirmation, WithSubscribeNotification, WithToast;
|
||||
|
||||
public function delete(Article $article)
|
||||
{
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
use App\Livewire\Forms\Studio\Manage\FaqForm;
|
||||
use App\Models\Faq as FaqModel;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithAuthorization;
|
||||
use App\Traits\WithCloseModal;
|
||||
use App\Traits\WithConfirmation;
|
||||
@ -17,7 +18,7 @@
|
||||
#[Title('FAQs')]
|
||||
class Faq extends Component
|
||||
{
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData;
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData;
|
||||
|
||||
public FaqForm $form;
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
namespace App\Livewire\Studio\Manage\Order;
|
||||
|
||||
use App\Models\Order;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\Order\WithUpdateStock;
|
||||
use App\Traits\WithCloseModal;
|
||||
use App\Traits\WithConfirmation;
|
||||
@ -14,7 +15,7 @@
|
||||
#[Title('Order')]
|
||||
class Index extends Component
|
||||
{
|
||||
use WithCloseModal, WithConfirmation, WithToast, WithUpdateStock;
|
||||
use WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdateStock;
|
||||
|
||||
public function delete(Order $order)
|
||||
{
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
namespace App\Livewire\Studio\Manage\Purchase;
|
||||
|
||||
use App\Models\Purchase;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\Purchase\WithUpdateStock;
|
||||
use App\Traits\WithCloseModal;
|
||||
use App\Traits\WithConfirmation;
|
||||
@ -14,7 +15,7 @@
|
||||
#[Title('Belanja')]
|
||||
class Index extends Component
|
||||
{
|
||||
use WithCloseModal, WithConfirmation, WithToast, WithUpdateStock;
|
||||
use WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdateStock;
|
||||
|
||||
public function delete(Purchase $purchase)
|
||||
{
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
use App\Models\Bottle;
|
||||
use App\Models\Formula as FormulaModel;
|
||||
use App\Models\PushNotification;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithAuthorization;
|
||||
use App\Traits\WithCloseModal;
|
||||
use App\Traits\WithConfirmation;
|
||||
@ -21,7 +22,7 @@
|
||||
#[Title('Rumus')]
|
||||
class Formula extends Component
|
||||
{
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData;
|
||||
use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData;
|
||||
|
||||
public FormulaForm $form;
|
||||
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
use App\Enums\Day;
|
||||
use App\Models\Outlet;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithCloseModal;
|
||||
use App\Traits\WithConfirmation;
|
||||
use App\Traits\WithMediaHandler;
|
||||
@ -16,7 +17,7 @@
|
||||
#[Title('Outlet')]
|
||||
class Index extends Component
|
||||
{
|
||||
use WithCloseModal, WithConfirmation, WithMediaHandler, WithToast;
|
||||
use WithCloseModal, WithConfirmation, WithMediaHandler, WithSubscribeNotification, WithToast;
|
||||
|
||||
public array $outlets = [];
|
||||
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
use App\Models\Employee;
|
||||
use App\Models\User;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithConfirmation;
|
||||
use App\Traits\WithToast;
|
||||
use Flux\Flux;
|
||||
@ -14,7 +15,7 @@
|
||||
#[Title('Pegawai')]
|
||||
class Index extends Component
|
||||
{
|
||||
use WithConfirmation, WithToast;
|
||||
use WithConfirmation, WithSubscribeNotification, WithToast;
|
||||
|
||||
public array $employees = [];
|
||||
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
use App\Livewire\Forms\Studio\Setting\AccountForm;
|
||||
use App\Models\User;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithAuthorization;
|
||||
use App\Traits\WithToast;
|
||||
use App\Traits\WithUpdatedData;
|
||||
@ -13,7 +14,7 @@
|
||||
#[Title('Akun')]
|
||||
class Account extends Component
|
||||
{
|
||||
use WithAuthorization, WithToast, WithUpdatedData;
|
||||
use WithAuthorization, WithSubscribeNotification, WithToast, WithUpdatedData;
|
||||
|
||||
public AccountForm $form;
|
||||
|
||||
|
||||
@ -10,6 +10,7 @@
|
||||
use App\Settings\GeneralSettings;
|
||||
use App\Settings\SeoSettings;
|
||||
use App\Settings\SocialSettings;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithAuthorization;
|
||||
use App\Traits\WithToast;
|
||||
use App\Traits\WithUpdatedData;
|
||||
@ -19,7 +20,7 @@
|
||||
#[Title('Aplikasi')]
|
||||
class Application extends Component
|
||||
{
|
||||
use WithAuthorization, WithToast, WithUpdatedData;
|
||||
use WithAuthorization, WithSubscribeNotification, WithToast, WithUpdatedData;
|
||||
|
||||
public GeneralForm $generalForm;
|
||||
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
use App\Livewire\Forms\Studio\Setting\PasswordForm;
|
||||
use App\Models\User;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithAuthorization;
|
||||
use App\Traits\WithToast;
|
||||
use App\Traits\WithUpdatedData;
|
||||
@ -14,7 +15,7 @@
|
||||
#[Title('Kata Sandi')]
|
||||
class Password extends Component
|
||||
{
|
||||
use WithAuthorization, WithToast, WithUpdatedData;
|
||||
use WithAuthorization, WithSubscribeNotification, WithToast, WithUpdatedData;
|
||||
|
||||
public PasswordForm $form;
|
||||
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
use App\Livewire\Forms\Studio\Setting\ProfileForm;
|
||||
use App\Models\Employee;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithAuthorization;
|
||||
use App\Traits\WithToast;
|
||||
use App\Traits\WithUpdatedData;
|
||||
@ -13,7 +14,7 @@
|
||||
#[Title('Profil')]
|
||||
class Profile extends Component
|
||||
{
|
||||
use WithAuthorization, WithToast, WithUpdatedData;
|
||||
use WithAuthorization, WithSubscribeNotification, WithToast, WithUpdatedData;
|
||||
|
||||
public ProfileForm $form;
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
namespace App\Livewire\Studio\Setting;
|
||||
|
||||
use App\Models\Whatsapp as WhatsappModel;
|
||||
use App\Traits\Notification\WithSubscribeNotification;
|
||||
use App\Traits\WithToast;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
@ -12,7 +13,7 @@
|
||||
#[Title('Whatsapp')]
|
||||
class Whatsapp extends Component
|
||||
{
|
||||
use WithToast;
|
||||
use WithSubscribeNotification, WithToast;
|
||||
|
||||
public array $whatsapp = [];
|
||||
|
||||
|
||||
34
app/Traits/Notification/WithSubscribeNotification.php
Normal file
34
app/Traits/Notification/WithSubscribeNotification.php
Normal file
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace App\Traits\Notification;
|
||||
|
||||
use App\Models\PushNotification;
|
||||
use Livewire\Attributes\On;
|
||||
|
||||
trait WithSubscribeNotification
|
||||
{
|
||||
#[On('notification:subscribe')]
|
||||
public function notificationSubscribe(string $subscription)
|
||||
{
|
||||
$subscription = json_decode($subscription, true);
|
||||
|
||||
$isExist = PushNotification::where('user_id', auth()->id())
|
||||
->whereJsonContains('subscriptions->keys->auth', $subscription['keys']['auth'])
|
||||
->first();
|
||||
|
||||
if ($isExist) {
|
||||
return;
|
||||
}
|
||||
|
||||
$userId = auth()->id();
|
||||
|
||||
$encodedSubscription = json_encode($subscription);
|
||||
PushNotification::updateOrCreate(
|
||||
[
|
||||
'user_id' => $userId,
|
||||
'subscriptions' => $encodedSubscription,
|
||||
],
|
||||
['subscriptions' => $encodedSubscription],
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user