From 2b6c397d911d659cb12694d0d6e7098c721a1e3a Mon Sep 17 00:00:00 2001 From: Aji Kamaludin Date: Tue, 4 Jul 2023 00:05:47 +0700 Subject: [PATCH] last fix notification , semoga cair --- .../Controllers/Customer/CartController.php | 2 +- app/Http/Middleware/HandleInertiaRequests.php | 2 + app/Models/Notification.php | 2 + app/Models/Voucher.php | 20 ++- resources/assets/warning.mp3 | Bin 0 -> 56006 bytes resources/js/Layouts/AuthenticatedLayout.jsx | 4 + .../Layouts/Partials/NotificationContent.jsx | 5 + .../js/Layouts/Partials/NotificationStock.jsx | 132 ++++++++++++++++++ 8 files changed, 164 insertions(+), 3 deletions(-) create mode 100644 resources/assets/warning.mp3 create mode 100644 resources/js/Layouts/Partials/NotificationStock.jsx diff --git a/app/Http/Controllers/Customer/CartController.php b/app/Http/Controllers/Customer/CartController.php index 8f808b0..e4dfa93 100644 --- a/app/Http/Controllers/Customer/CartController.php +++ b/app/Http/Controllers/Customer/CartController.php @@ -49,7 +49,7 @@ class CartController extends Controller $operator = $request->param ?? 'add'; //delete, sub, add $customer = $request->user('customer'); - if (! $customer->allow_transaction) { + if (!$customer->allow_transaction) { $customer->carts()->delete(); return redirect()->back() diff --git a/app/Http/Middleware/HandleInertiaRequests.php b/app/Http/Middleware/HandleInertiaRequests.php index 2bdafef..823644a 100644 --- a/app/Http/Middleware/HandleInertiaRequests.php +++ b/app/Http/Middleware/HandleInertiaRequests.php @@ -45,6 +45,8 @@ class HandleInertiaRequests extends Middleware 'count_unread_notifications' => $notifications->where('is_read', Notification::UNREAD)->count(), 'deposit_notifications' => $notifications->where('type', Notification::TYPE_DEPOSIT) ->where('is_read', Notification::UNREAD)->limit(10)->get(), + 'stock_notifications' => $notifications->where('type', Notification::TYPE_VOUCHER_STOCK) + ->where('is_read', Notification::UNREAD)->limit(10)->get(), ]); } } diff --git a/app/Models/Notification.php b/app/Models/Notification.php index 9447627..19e4dfc 100644 --- a/app/Models/Notification.php +++ b/app/Models/Notification.php @@ -9,6 +9,8 @@ class Notification extends Model { const TYPE_DEPOSIT = 'deposit'; + const TYPE_VOUCHER_STOCK = 'voucher_stock'; + const UNREAD = 0; const READ = 1; diff --git a/app/Models/Voucher.php b/app/Models/Voucher.php index 4496abc..8063a28 100644 --- a/app/Models/Voucher.php +++ b/app/Models/Voucher.php @@ -2,6 +2,7 @@ namespace App\Models; +use App\Events\NotificationEvent; use App\Services\GeneralService; use Illuminate\Database\Eloquent\Casts\Attribute; @@ -173,9 +174,24 @@ class Voucher extends Model $treshold = $this->locationProfile->min_stock; if ($count <= $treshold) { - Notification::create([ + $notification = Notification::create([ 'entity_type' => User::class, - 'description' => 'stok voucher '.$this->locationProfile->name.'tersisa : '.$count, + 'description' => 'stok voucher ' . $this->locationProfile->name . ' tersisa : ' . $count, + 'url' => route('voucher.profile', $this->locationProfile->location_id), + 'type' => Notification::TYPE_VOUCHER_STOCK, + ]); + + NotificationEvent::dispatch([ + 'id' => $notification->id, + 'description' => $notification->description, + 'url' => $notification->url, + 'type' => Notification::TYPE_VOUCHER_STOCK, + 'format_created_at' => now()->translatedFormat('d F Y H:i:s'), + 'stock_notifications' => Notification::where('entity_type', User::class) + ->where('type', Notification::TYPE_VOUCHER_STOCK) + ->where('is_read', Notification::UNREAD)->limit(10) + ->orderBy('created_at', 'desc') + ->get(), ]); } } diff --git a/resources/assets/warning.mp3 b/resources/assets/warning.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..b15e5257d9111f6bb3711a3f1f27143e6a22d9db GIT binary patch literal 56006 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
+
+ +
diff --git a/resources/js/Layouts/Partials/NotificationContent.jsx b/resources/js/Layouts/Partials/NotificationContent.jsx index 5dee34a..0a1f77c 100644 --- a/resources/js/Layouts/Partials/NotificationContent.jsx +++ b/resources/js/Layouts/Partials/NotificationContent.jsx @@ -3,6 +3,7 @@ import { router, usePage } from '@inertiajs/react' import { HiOutlineBell } from 'react-icons/hi2' import Dropdown from '@/Components/Defaults/Dropdown' +import { isEmpty } from 'lodash' export default function NotificationContent() { const { @@ -10,6 +11,10 @@ export default function NotificationContent() { } = usePage() const handleNotification = (notif) => { fetch(route('api.notification.update', notif)) + if (isEmpty(notif.url) === false) { + router.visit(notif.url) + return + } router.get(route(route().current())) } diff --git a/resources/js/Layouts/Partials/NotificationStock.jsx b/resources/js/Layouts/Partials/NotificationStock.jsx new file mode 100644 index 0000000..a7ead54 --- /dev/null +++ b/resources/js/Layouts/Partials/NotificationStock.jsx @@ -0,0 +1,132 @@ +import React, { useState, useEffect, useRef } from 'react' +import { router, usePage } from '@inertiajs/react' +import { isEmpty } from 'lodash' +import { HiOutlineTicket } from 'react-icons/hi2' + +import audioSrc from '@/../assets/warning.mp3' + +import Dropdown from '@/Components/Defaults/Dropdown' +import { browserNotification } from './helpers' + +export default function NotificationStock() { + const { + props: { stock_notifications }, + } = usePage() + const [bounce, setBounce] = useState(false) + const [notif, setNotif] = useState(stock_notifications) + const audioRef = useRef() + + const handleNotification = (notif) => { + if (isEmpty(notif) === false) { + fetch(route('api.notification.update', notif)) + router.get(notif.url) + return + } + fetch(route('api.notification.update')) + router.get(route('dashboard')) + } + + const handleAudioStop = () => { + if (isEmpty(audioRef.current) === false) { + audioRef.current.pause() + audioRef.current.currentTime = 0 + } + setBounce(false) + } + + const handleAudioPlay = () => { + if (audioRef.current.currentTime !== 0) { + handleAudioStop() + } + + try { + audioRef.current.play() + } catch (error) { + console.log(error) + } + + setBounce(true) + setTimeout(() => setBounce(false), 22000) + } + + const handleUpdate = async (e) => { + setNotif(e.message.stock_notifications) + handleAudioPlay() + browserNotification( + 'Notifikasi Stok Voucher', + e.message.description, + e.message.url + ) + } + + useEffect(() => { + window.Echo.channel('notification') + .listen('NotificationEvent', (e) => { + if (e.message.type === 'voucher_stock') { + handleUpdate(e) + } + }) + .error((error) => { + console.error(error) + }) + return () => { + window.Echo.leave('notification') + } + }, []) + + return ( + + + +
handleAudioStop()} + > + +
+
+ {notif.length} +
+
+
+
+ + {notif.map((notif) => ( +
handleNotification(notif)} + key={notif.format_created_at} + > +
{notif.description}
+
{notif.format_created_at}
+
+ ))} + {notif.length > 0 && ( +
+
+ router.get(route('notifications.index')) + } + > + lihat semua +
+
handleNotification()} + > + tandai semua dibaca +
+
+ )} + {notif.length === 0 && ( +
Tidak ada notifikasi
+ )} +
+
+ ) +}