penambahan notifikasi api

This commit is contained in:
Muhammad Raihan Surya 2023-12-12 09:38:50 +07:00
parent e700439ecf
commit ec95715177
16 changed files with 322 additions and 313 deletions

View File

@ -138,39 +138,20 @@ class ContactApiController extends Controller
->where('pemilik_kontak', Auth::user()->email) ->where('pemilik_kontak', Auth::user()->email)
->select('contacts.id', DB::raw("CONCAT(users.nama_depan, ' ', users.nama_belakang) as nama_lengkap")); ->select('contacts.id', DB::raw("CONCAT(users.nama_depan, ' ', users.nama_belakang) as nama_lengkap"));
if ($request->has('search') && !empty($request->search['value'])) { if ($request->has('search') && !empty($request->search)) {
$searchContact = $request->search['value']; $searchContact = $request->search;
$subQuery->where(function ($a) use ($searchContact) { $subQuery->where(function ($a) use ($searchContact) {
$a->whereRaw("LOWER(CONCAT(users.nama_depan,' ',users.nama_belakang)) LIKE ?", ['%' . strtolower($searchContact) . '%']); $a->whereRaw("LOWER(CONCAT(users.nama_depan,' ',users.nama_belakang)) LIKE ?", ['%' . strtolower($searchContact) . '%']);
}); });
} }
$queryContact = Contact::from(DB::raw("({$subQuery->toSql()}) as tmp")) $queryContact = Contact::from(DB::raw("({$subQuery->toSql()}) as tmp"))
->mergeBindings($subQuery->getQuery()) // Menggabungkan binding parameters ->mergeBindings($subQuery->getQuery())
->select('*') ->select('*')
->get(); ->get();
if ($request->ajax()) { return response()->json($queryContact);
return DataTables::of($queryContact)
->addIndexColumn()
->addColumn('action', function ($row) {
$html_code =
'
<button class="btn btn-info open-detail-modal" data-toggle="modal"
data-target="#modaldetail" id="detailContact"
data-id="' .
$row->id .
'">Detail</button>
<button class="btn btn-danger open-detail-modal" id="deleteContact"
data-id="' .
$row->id .
'">Hapus</button>
';
return $html_code;
})
->rawColumns(['action'])
->make(true);
}
} catch (Throwable $e) { } catch (Throwable $e) {
Log::error($e->getMessage()); Log::error($e->getMessage());

View File

@ -6,12 +6,40 @@ use App\Http\Controllers\Controller;
use App\Models\Notification; use App\Models\Notification;
use App\Models\NotificationReceiver; use App\Models\NotificationReceiver;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Pusher\Pusher;
use Throwable;
class NotificationApiController extends Controller class NotificationApiController extends Controller
{ {
public function listNotification(Request $request){ public function listNotification(Request $request){
try {
$subQuery = Notification::join('notification_receivers','notifications.id','=','notification_receivers.notification_id')
->where('notification_receivers.receiver','=',auth()->user()->email)
->latest('notification_receivers.updated_at')
->select('notifications.id', 'notifications.title', 'notifications.teaser', 'notification_receivers.created_at', 'notification_receivers.status');
if ($request->has('search') && !empty($request->search)) {
$searchNotif = $request->search;
$subQuery->where(function ($a) use ($searchNotif) {
$a->whereRaw('LOWER(notifications.title) LIKE ?', ['%' . strtolower($searchNotif) . '%'])
->orWhereRaw('LOWER(notifications.teaser) LIKE ?', ['%' . strtolower($searchNotif) . '%']);
});
}
$queryNotif = Notification::from(DB::raw("({$subQuery->toSql()}) as tmp"))
->mergeBindings($subQuery->getQuery())
->select('*')
->get();
return response()->json($queryNotif);
} catch (Throwable $e) {
Log::error($e->getMessage());
return response()->json(['success' => false, 'message' => 'Terjadi Kesalahan pada sisi server']);
}
} }
public function getDetailNotification(Request $request){ public function getDetailNotification(Request $request){
@ -41,4 +69,34 @@ class NotificationApiController extends Controller
Log::error($result); Log::error($result);
} }
} }
public function updateNotificationToAdmin(Request $request){
$options = [
'cluster' => 'ap1',
'useTLS' => true,
];
$pusher = new Pusher('3e5bdc20dddd7fbc655e', 'f2274c37c616d29ff590', '1659859', $options);
$payload = [
'service' => $request->input('service')
];
$pusher->trigger('chanel-update-notifikasi-untuk-admin', 'event-update-notifikasi-untuk-admin', $payload);
}
public function updateNewNotification(Request $request){
$options = [
'cluster' => 'ap1',
'useTLS' => true,
];
$pusher = new Pusher('3e5bdc20dddd7fbc655e', 'f2274c37c616d29ff590', '1659859', $options);
$payload = [
'receivers' => $request->input('receiver'),
];
$pusher->trigger('chanel-update-notifikasi', 'event-update-notifikasi', $payload);
}
} }

View File

@ -14,8 +14,11 @@ use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\Notification;
use App\Models\NotificationReceiver;
use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Http;
use App\Models\TransactionDescription; use App\Models\TransactionDescription;
use Pusher\Pusher;
use Yajra\DataTables\Facades\DataTables; use Yajra\DataTables\Facades\DataTables;
class PembeliApiController extends Controller class PembeliApiController extends Controller
@ -207,6 +210,8 @@ class PembeliApiController extends Controller
public function finishTransaction(Request $request) public function finishTransaction(Request $request)
{ {
$transactionDetail = Transaction::where('id', $request->id)->first();
try { try {
DB::beginTransaction(); DB::beginTransaction();
@ -224,11 +229,25 @@ class PembeliApiController extends Controller
'deskripsi' => 'Pesanan telah diselesaikan oleh ' . auth()->user()->nama_depan . '.', 'deskripsi' => 'Pesanan telah diselesaikan oleh ' . auth()->user()->nama_depan . '.',
]); ]);
$url = route('user-transaction.show', ['id' => $transactionDetail->id]);
$notif = Notification::create([
'title' => 'Transaksi Selesai',
'content' => auth()->user()->nama_depan.' telah menyelesaikan transaksi. Silahkan terima uang anda. <a href="'.$url.'">Klik disini</a> untuk langsung ke detail transaksi.',
'teaser' => auth()->user()->nama_depan.' telah...'
]);
NotificationReceiver::create([
'receiver' => $transactionDetail->penjual,
'notification_id' => $notif->id
]);
DB::commit(); DB::commit();
return response()->json([ return response()->json([
'status' => true, 'status' => true,
'message' => 'Pesanan telah diselesaikan oleh ' . auth()->user()->nama_depan . '.', 'message' => 'Pesanan telah diselesaikan oleh ' . auth()->user()->nama_depan . '.',
'receiver' => $transactionDetail->penjual
]); ]);
} catch (Throwable $e) { } catch (Throwable $e) {
DB::rollBack(); DB::rollBack();
@ -247,6 +266,8 @@ class PembeliApiController extends Controller
$auth = base64_encode(env('MIDTRANS_SERVER_KEY')); $auth = base64_encode(env('MIDTRANS_SERVER_KEY'));
$transactionDetail = Transaction::where('id', $request->id)->first();
$response = Http::withOptions([ $response = Http::withOptions([
'verify' => false, 'verify' => false,
]) ])
@ -301,11 +322,26 @@ class PembeliApiController extends Controller
'user' => auth()->user()->email, 'user' => auth()->user()->email,
]); ]);
$url = route('user-transaction.show', ['id' => $transactionDetail->id]);
$notif = Notification::create([
'title' => 'Pembayaran Sukses',
'content' => auth()->user()->nama_depan.' telah membayar transaksi. Silahkan proses transaksi ini jika memang dituju kepada anda. <a href="'.$url.'">Klik disini</a> untuk langsung ke detail transaksi.',
'teaser' => auth()->user()->nama_depan.' telah...'
]);
NotificationReceiver::create([
'receiver' => $transactionDetail->penjual,
'notification_id' => $notif->id
]);
DB::commit(); DB::commit();
return response()->json([ return response()->json([
'status' => true, 'status' => true,
'message' => 'Pembayaran sukses', 'message' => 'Pembayaran sukses',
'receiver' => $transactionDetail->penjual
]); ]);
} elseif ($transaction == 'challenge') { } elseif ($transaction == 'challenge') {
TransactionDescription::create([ TransactionDescription::create([
@ -318,6 +354,19 @@ class PembeliApiController extends Controller
'keterangan' => $result['status_message'], 'keterangan' => $result['status_message'],
]); ]);
$options = [
'cluster' => 'ap1',
'useTLS' => true,
];
$pusher = new Pusher('3e5bdc20dddd7fbc655e', 'f2274c37c616d29ff590', '1659859', $options);
$payload = [
'service' => 'Transaksi'
];
$pusher->trigger('chanel-update-notifikasi-untuk-admin', 'event-update-notifikasi-untuk-admin', $payload);
DB::commit(); DB::commit();
return response()->json([ return response()->json([
@ -463,11 +512,25 @@ class PembeliApiController extends Controller
'deskripsi' => 'Transaksi dibatalkan oleh ' . auth()->user()->nama_depan . '. Alasan : ' . $request->input('complaint'), 'deskripsi' => 'Transaksi dibatalkan oleh ' . auth()->user()->nama_depan . '. Alasan : ' . $request->input('complaint'),
]); ]);
$url = route('user-transaction.show', ['id' => $transaction->id]);
$notif = Notification::create([
'title' => 'Transaksi Dibatalkan',
'content' => auth()->user()->nama_depan.' telah membatalkan transaksi. <a href="'.$url.'">Klik disini</a> untuk langsung ke detail transaksi.',
'teaser' => auth()->user()->nama_depan.' telah...'
]);
NotificationReceiver::create([
'receiver' => $transaction->penjual,
'notification_id' => $notif->id
]);
DB::commit(); DB::commit();
return response()->json([ return response()->json([
'status' => true, 'status' => true,
'message' => 'Transaksi telah dibatalkan.', 'message' => 'Transaksi telah dibatalkan.',
'receiver' => $transaction->penjual
]); ]);
} catch (Throwable $e) { } catch (Throwable $e) {
DB::rollBack(); DB::rollBack();
@ -741,8 +804,8 @@ class PembeliApiController extends Controller
'transactions.token' 'transactions.token'
); );
if($request->has('search') && !empty($request->search['value'])){ if($request->has('search') && !empty($request->search)){
$searchPembeli = $request->search['value']; $searchPembeli = $request->search;
if(!is_numeric($searchPembeli)){ if(!is_numeric($searchPembeli)){
$subQuery->where(function($a) use ($searchPembeli){ $subQuery->where(function($a) use ($searchPembeli){
$a->whereRaw("LOWER(CONCAT(users.nama_depan,' ',users.nama_belakang)) LIKE ?",['%'.strtolower($searchPembeli).'%']) $a->whereRaw("LOWER(CONCAT(users.nama_depan,' ',users.nama_belakang)) LIKE ?",['%'.strtolower($searchPembeli).'%'])
@ -761,71 +824,8 @@ class PembeliApiController extends Controller
->select('*') ->select('*')
->get(); ->get();
if ($request->ajax()) { return response()->json($queryPembeli);
return DataTables::of($queryPembeli)
->addIndexColumn()
->addColumn('action', function ($row) {
$url = route('user-transaction.show', ['id' => $row->id]);
$invoice = route('invoice.get',['id' => $row->id]);
$html_code = '
<div class="btn-group">
<button type="button" class="btn btn-primary dropdown-toggle"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
....
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item"
href="'.$url.'">Detail</a>
</li>
<li><a class="dropdown-item"
href="'.$invoice.'">Invoice</a>
</li>
<li><a class="dropdown-item" data-toggle="modal"
data-target="#modalTracking"
data-id="'.$row->id.'"
href="#">Tracking</a>
</li>';
if($row->status_transaksi == 'created'){
$html_code .= '
<li><a class="dropdown-item" id="bayar"
data-id="'.$row->id.'"
data-token="'.$row->token.'"
href="#">Bayar</a>
</li>
<li><a href="#" data-id="'.$row->id.'"
id="cancelPayment" class="dropdown-item">Batal Pembayaran</a>
</li>
';
}
if($row->status_transaksi == 'success'){
$html_code .= '
<li><a href="#" data-id="'.$row->id.'"
id="cancelTransaction" class="dropdown-item">Batal Transaksi</a>
</li>
';
}
if($row->status_transaksi == 'sent'){
$html_code .= '
<li><a class="dropdown-item" data-toggle="modal"
data-target="#modalFinish"
data-id="'.$row->id.'"
href="#">Selesaikan</a>
</li>
';
}
$html_code .= '
</ul>
</div>';
return $html_code;
})
->rawColumns(['action'])
->make(true);
}
}catch(Throwable $e){ }catch(Throwable $e){
Log::error($e->getMessage()); Log::error($e->getMessage());

View File

@ -9,6 +9,8 @@ use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\Notification;
use App\Models\NotificationReceiver;
use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Http;
use App\Models\TransactionDescription; use App\Models\TransactionDescription;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
@ -18,6 +20,8 @@ class PenjualApiController extends Controller
{ {
public function acceptTransaction(Request $request) public function acceptTransaction(Request $request)
{ {
$transactionDetail = Transaction::where('id', $request->id)->first();
try { try {
DB::beginTransaction(); DB::beginTransaction();
@ -34,11 +38,25 @@ class PenjualApiController extends Controller
'deskripsi' => 'Transaksi telah diterima oleh ' . auth()->user()->nama_depan, 'deskripsi' => 'Transaksi telah diterima oleh ' . auth()->user()->nama_depan,
]); ]);
$url = route('user-transaction.show', ['id' => $transactionDetail->id]);
$notif = Notification::create([
'title' => 'Transaksi Diproses',
'content' => auth()->user()->nama_depan.' telah menerima dan memproses transaksi. <a href="'.$url.'">Klik disini</a> untuk langsung ke detail transaksi.',
'teaser' => auth()->user()->nama_depan.' telah...'
]);
NotificationReceiver::create([
'receiver' => $transactionDetail->pembeli,
'notification_id' => $notif->id
]);
DB::commit(); DB::commit();
return response()->json([ return response()->json([
'status' => true, 'status' => true,
'message' => 'Transaksi telah diterima. Siapkan pesanan untuk dikirim ke penjual.', 'message' => 'Transaksi telah diterima. Siapkan pesanan untuk dikirim ke penjual.',
'receiver' => $transactionDetail->pembeli
]); ]);
} catch (Throwable $e) { } catch (Throwable $e) {
DB::rollBack(); DB::rollBack();
@ -103,11 +121,25 @@ class PenjualApiController extends Controller
'deskripsi' => 'Transaksi ditolak ' . auth()->user()->nama_depan . ', uang akan dikembalikan ke pembeli. Alasan : ' . $request->input('complaint'), 'deskripsi' => 'Transaksi ditolak ' . auth()->user()->nama_depan . ', uang akan dikembalikan ke pembeli. Alasan : ' . $request->input('complaint'),
]); ]);
$url = route('user-transaction.show', ['id' => $transaction->id]);
$notif = Notification::create([
'title' => 'Transaksi Diproses',
'content' => auth()->user()->nama_depan.' telah menolak transaksi.<a href="'.$url.'">Klik disini</a> untuk langsung ke detail transaksi.',
'teaser' => auth()->user()->nama_depan.' telah...'
]);
NotificationReceiver::create([
'receiver' => $transaction->pembeli,
'notification_id' => $notif->id
]);
DB::commit(); DB::commit();
return response()->json([ return response()->json([
'status' => true, 'status' => true,
'message' => 'Transaksi telah ditolak. Uang akan dikirimkan ke pembeli.', 'message' => 'Transaksi telah ditolak. Uang akan dikirimkan ke pembeli.',
'receiver' => $transaction->pembeli
]); ]);
} catch (Throwable $e) { } catch (Throwable $e) {
DB::rollBack(); DB::rollBack();
@ -167,6 +199,8 @@ class PenjualApiController extends Controller
public function sentOrder(Request $request) public function sentOrder(Request $request)
{ {
$transactionDetail = Transaction::where('id', $request->transaction_id)->first();
try { try {
DB::beginTransaction(); DB::beginTransaction();
@ -194,11 +228,25 @@ class PenjualApiController extends Controller
'bukti_foto' => $bukti_foto, 'bukti_foto' => $bukti_foto,
]); ]);
$url = route('user-transaction.show', ['id' => $transactionDetail->id]);
$notif = Notification::create([
'title' => 'Transaksi Sudah Tiba',
'content' => 'Transaksi sudah tiba dan silahkan periksa terlebih dahulu sebelum menyelesaikan transaksi atau mengajukan refund. <a href="'.$url.'">Klik disini</a> untuk langsung ke detail transaksi.',
'teaser' => 'Transaksi sudah tiba dan silahkan per...',
]);
NotificationReceiver::create([
'receiver' => $transactionDetail->pembeli,
'notification_id' => $notif->id
]);
DB::commit(); DB::commit();
return response()->json([ return response()->json([
'status' => true, 'status' => true,
'message' => 'Pesanan telah sampai di tempat pembeli.', 'message' => 'Pesanan telah sampai di tempat pembeli.',
'receiver' => $transactionDetail->pembeli
]); ]);
} catch (Throwable $e) { } catch (Throwable $e) {
DB::rollBack(); DB::rollBack();
@ -225,8 +273,8 @@ class PenjualApiController extends Controller
->where('transactions.penjual', auth()->user()->email) ->where('transactions.penjual', auth()->user()->email)
->select('transactions.id', DB::raw("CONCAT(users.nama_depan,' ',users.nama_belakang) as nama_pembeli"), 'transactions.nama_barang', 'transactions.total_harga', 'transactions.created_at', 'transactions.status_transaksi'); ->select('transactions.id', DB::raw("CONCAT(users.nama_depan,' ',users.nama_belakang) as nama_pembeli"), 'transactions.nama_barang', 'transactions.total_harga', 'transactions.created_at', 'transactions.status_transaksi');
if ($request->has('search') && !empty($request->search['value'])) { if ($request->has('search') && !empty($request->search)) {
$searchPenjual = $request->search['value']; $searchPenjual = $request->search;
if (!is_numeric($searchPenjual)) { if (!is_numeric($searchPenjual)) {
$subQuery->where(function ($a) use ($searchPenjual) { $subQuery->where(function ($a) use ($searchPenjual) {
$a->whereRaw("LOWER(CONCAT(users.nama_depan,' ',users.nama_belakang)) LIKE ?", ['%' . strtolower($searchPenjual) . '%']) $a->whereRaw("LOWER(CONCAT(users.nama_depan,' ',users.nama_belakang)) LIKE ?", ['%' . strtolower($searchPenjual) . '%'])
@ -248,90 +296,8 @@ class PenjualApiController extends Controller
->select('*') ->select('*')
->get(); ->get();
if ($request->ajax()) { return response()->json($queryPenjual);
return DataTables::of($queryPenjual)
->addIndexColumn()
->addColumn('action', function ($row) {
$url = route('user-transaction.show', ['id' => $row->id]);
$invoice = route('invoice.get', ['id' => $row->id]);
$html_code =
'
<div class="btn-group">
<button type="button" class="btn btn-primary dropdown-toggle"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
....
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item"
href="' .
$url .
'">Detail</a>
</li>
<li><a class="dropdown-item"
href="' .
$invoice .
'">Invoice</a>
</li>
<li><a class="dropdown-item" data-toggle="modal"
data-target="#modalTracking"
data-id="' .
$row->id .
'"
href="#">Tracking</a>
</li>';
if ($row->status_transaksi == 'success') {
$html_code .=
'
<li><a class="dropdown-item" id="processTransaction"
data-id="' .
$row->id .
'"
href="#">Proses Transaksi</a>
</li>
<li><a class="dropdown-item" id="denyTransaction"
data-id="' .
$row->id .
'"
href="#">Tolak Transaksi</a>
</li>
';
}
if ($row->status_transaksi == 'progress') {
$html_code .=
'
<li><a class="dropdown-item" id="sendOrder"
data-id="' .
$row->id .
'"
href="#">Kirim barang</a>
</li>
';
}
if ($row->status_transaksi == 'sent') {
$html_code .=
'
<li><a class="dropdown-item" data-toggle="modal"
data-target="#modalOrderSent"
data-id="' .
$row->id .
'"
href="#">Barang sudah sampai</a>
</li>
';
}
$html_code .= '
</ul>
</div>';
return $html_code;
})
->rawColumns(['action'])
->make(true);
}
} catch (Throwable $e) { } catch (Throwable $e) {
Log::error($e->getMessage()); Log::error($e->getMessage());

View File

@ -138,29 +138,8 @@ class RefundApiController extends Controller
->select('*') ->select('*')
->get(); ->get();
if ($request->ajax()) { return response()->json($queryRefund);
return DataTables::of($queryRefund)
->addIndexColumn()
->addColumn('action', function ($row) {
$url = route('user-refund.show', ['id' => $row->id]);
$html_code = '
<div class="btn-group">
<button type="button" class="btn btn-primary dropdown-toggle"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
....
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item"
href="'.$url.'">Detail</a>
</li>
</ul>
</div>';
return $html_code;
})
->rawColumns(['action'])
->make(true);
}
}catch(Throwable $e){ }catch(Throwable $e){
Log::error($e->getMessage()); Log::error($e->getMessage());

View File

@ -18,11 +18,11 @@ class InvoiceController extends Controller
public function exportInvoice(Request $request) public function exportInvoice(Request $request)
{ {
$transaction = Transaction::findOrFail($request->id); // $transaction = Transaction::findOrFail($request->id);
$pdf = Pdf::loadView('invoice.export-invoice',compact('transaction'))->setPaper('A4','Portrait'); // $pdf = Pdf::loadView('invoice.export-invoice',compact('transaction'))->setPaper('A4','Portrait');
return $pdf->download("invoice-".uniqid().".pdf"); // return $pdf->download("invoice-".uniqid().".pdf");
// return view('invoice.export-invoice', [ return view('invoice.export-invoice', [
// 'transaction' => Transaction::findOrFail($request->id), 'transaction' => Transaction::findOrFail($request->id),
// ]); ]);
} }
} }

View File

@ -30,7 +30,7 @@ class LoginController extends Controller
{ {
public function login() public function login()
{ {
return view('index'); return view('login.index');
} }
/** /**

View File

@ -258,9 +258,11 @@ class PembeliController extends Controller
'deskripsi' => 'Pesanan telah diselesaikan oleh ' . auth()->user()->nama_depan . '. Uang akan dikirim ke penjual.', 'deskripsi' => 'Pesanan telah diselesaikan oleh ' . auth()->user()->nama_depan . '. Uang akan dikirim ke penjual.',
]); ]);
$url = route('user-transaction.show', ['id' => $transactionDetail->id]);
$notif = Notification::create([ $notif = Notification::create([
'title' => 'Transaksi Selesai', 'title' => 'Transaksi Selesai',
'content' => auth()->user()->nama_depan.' telah menyelesaikan transaksi. Silahkan terima uang anda.', 'content' => auth()->user()->nama_depan.' telah menyelesaikan transaksi. Silahkan terima uang anda. <a href="'.$url.'">Klik disini</a> untuk langsung ke detail transaksi.',
'teaser' => auth()->user()->nama_depan.' telah...' 'teaser' => auth()->user()->nama_depan.' telah...'
]); ]);

View File

@ -26,10 +26,19 @@ input[type="text"] {
outline: 0; outline: 0;
} }
select {
width: 100%;
}
video { video {
background: primary; background: primary;
} }
.flex {
width: 100%;
display: flex;
align-items: center;
}
.container { .container {
position: relative; position: relative;
width: 100%; width: 100%;
@ -80,6 +89,11 @@ form.sign-up-form {
z-index: 1; z-index: 1;
} }
.form_3 {
flex-direction: column;
align-items: center;
}
form.sign-in-form { form.sign-in-form {
display: flex; display: flex;
align-items: start; align-items: start;
@ -120,6 +134,10 @@ form p {
position: relative; position: relative;
} }
.left {
margin-left: 15px;
}
.input { .input {
width: 100%; width: 100%;
height: 55px; height: 55px;
@ -152,7 +170,7 @@ form p {
} }
.up { .up {
margin-top: 3%; margin-top: 17px;
} }
.input-field-signin-flex input, .input-field-signin-flex input,
@ -180,6 +198,7 @@ form p {
.input-field { .input-field {
width: 100%; width: 100%;
height: 55px; height: 55px;
padding: 0rem 1.5rem;
background-color: #f0f0f0; background-color: #f0f0f0;
border-radius: 1rem; border-radius: 1rem;
display: grid; display: grid;
@ -242,7 +261,7 @@ form p {
color: #fff; color: #fff;
text-transform: uppercase; text-transform: uppercase;
font-weight: 600; font-weight: 600;
margin: 10px 0; margin: 20px 0;
cursor: pointer; cursor: pointer;
transition: 0.25s; transition: 0.25s;
} }
@ -254,13 +273,11 @@ form p {
.btn-otp, .btn-otp,
.btn-foto { .btn-foto {
/* width: fit-content; */ width: fit-content;
width: 110px; height: fit-content;
/* height: fit-content; */ margin-left: 12px;
height: 53px;
margin-left: 2%;
font-size: 0.7rem; font-size: 0.7rem;
padding: 0.85rem 0.9rem; padding: 0.7rem 0.9rem;
border: 1px solid #900c3e; border: 1px solid #900c3e;
color: #900c3e; color: #900c3e;
background: none; background: none;
@ -411,15 +428,15 @@ form p {
pointer-events: all; pointer-events: all;
} }
@media (max-width: 1100px) { @media (max-width: 1150px) {
.container { .container {
min-height: 1000px; min-height: 1100px;
height: 100vh; /* height: 100vh; */
} }
form.sign-in-form { /* form.sign-in-form {
justify-content: start; justify-content: start;
} } */
.header { .header {
padding: 0; padding: 0;
@ -429,6 +446,10 @@ form p {
padding: 0 1.2rem; padding: 0 1.2rem;
} }
.header ul li {
width: 120px;
}
.signin-signup { .signin-signup {
width: 100%; width: 100%;
top: 95%; top: 95%;
@ -534,6 +555,10 @@ form p {
width: 90%; width: 90%;
} }
.header ul li {
width: 90px;
}
.image { .image {
display: none; display: none;
} }
@ -567,10 +592,13 @@ form p {
.header { .header {
display: flex; display: flex;
justify-content: center; justify-content: center;
width: 100%;
margin-right: 10%;
} }
.header ul { .header ul {
display: flex; display: flex;
justify-content: center;
} }
.header ul li { .header ul li {
@ -621,6 +649,10 @@ form p {
background: var(--primary); background: var(--primary);
} }
.form_wrap {
width: 90%;
}
.form_wrap h2 { .form_wrap h2 {
color: var(--header-clr); color: var(--header-clr);
text-align: start; text-align: start;
@ -659,7 +691,7 @@ form p {
.btns_wrap { .btns_wrap {
width: 100%; width: 100%;
margin: 4% auto; margin: 24px auto;
} }
.btns_wrap .common_btns { .btns_wrap .common_btns {
@ -671,13 +703,8 @@ form p {
justify-content: flex-end; justify-content: flex-end;
} }
.btns_wrap .common_btns.form_2_btns {
width: 190%;
margin-top: 10%;
}
.btns_wrap .common_btns.form_3_btns { .btns_wrap .common_btns.form_3_btns {
width: 60%; width: 100%;
margin-top: 2%; margin-top: 2%;
} }
@ -842,12 +869,13 @@ form p {
color: #fff !important; color: #fff !important;
} }
.gender-select-menu, /* .gender-select-menu,
.select-menu { .select-menu {
height: 100%; height: 100%;
font-size: 0.9rem; font-size: 0.9rem;
} } */
.gender-select-menu .gender-select-input,
/* .gender-select-menu .gender-select-input,
.select-menu .select-btn { .select-menu .select-btn {
width: 100%; width: 100%;
height: 55px; height: 55px;
@ -860,14 +888,17 @@ form p {
justify-content: space-between; justify-content: space-between;
position: relative; position: relative;
cursor: pointer; cursor: pointer;
} } */
.select-btn i {
/* .select-btn i {
font-size: 25px; font-size: 25px;
transition: 0.3s; transition: 0.3s;
} } */
.gender-select, .gender-select,
.sBtn-text { .sBtn-text {
width: 100%;
height: 55px;
font-size: 0.8rem; font-size: 0.8rem;
color: #aaa; color: #aaa;
font-weight: 500; font-weight: 500;
@ -948,8 +979,10 @@ form p {
} }
.slide img { .slide img {
width: 100%; height: 30vh;
height: auto; border-radius: 1rem;
/* width: 100%;
height: auto; */
} }
.dots { .dots {

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -76,7 +76,7 @@ form_2_back_btn.addEventListener("click", function () {
form_2_next_btn.addEventListener("click", function () { form_2_next_btn.addEventListener("click", function () {
form_2.style.display = "none"; form_2.style.display = "none";
form_3.style.display = "block"; form_3.style.display = "flex";
form_3_btns.style.display = "flex"; form_3_btns.style.display = "flex";
form_2_btns.style.display = "none"; form_2_btns.style.display = "none";
@ -86,7 +86,7 @@ form_2_next_btn.addEventListener("click", function () {
form_3_next_btn.addEventListener("click", function () { form_3_next_btn.addEventListener("click", function () {
form_3.style.display = "none"; form_3.style.display = "none";
form_4.style.display = "block"; form_4.style.display = "flex";
form_4_btns.style.display = "flex"; form_4_btns.style.display = "flex";
form_3_btns.style.display = "none"; form_3_btns.style.display = "none";
@ -105,7 +105,7 @@ form_3_back_btn.addEventListener("click", function () {
}); });
form_4_back_btn.addEventListener("click", function () { form_4_back_btn.addEventListener("click", function () {
form_3.style.display = "block"; form_3.style.display = "flex";
form_4.style.display = "none"; form_4.style.display = "none";
form_4_btns.style.display = "none"; form_4_btns.style.display = "none";
@ -310,19 +310,6 @@ document.addEventListener("DOMContentLoaded", function () {
selectImageEkyc.style.display = "none"; selectImageEkyc.style.display = "none";
}); });
function dataURLtoBlob(dataURL) {
const byteString = atob(dataURL.split(",")[1]);
const mimeString = dataURL.split(",")[0].split(":")[1].split(";")[0];
const ab = new ArrayBuffer(byteString.length);
const ia = new Uint8Array(ab);
for (let i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
return new Blob([ab], { type: mimeString });
}
captureButtonKtp.addEventListener("click", function () { captureButtonKtp.addEventListener("click", function () {
if (ktpStream) { if (ktpStream) {
const canvas = document.createElement("canvas"); const canvas = document.createElement("canvas");

View File

@ -4,7 +4,7 @@
<div class="main-content"> <div class="main-content">
<section class="section"> <section class="section">
<div class="row"> <div class="row">
<div class="col-lg-4 col-md-12 col-sm-12"> <div class="col-lg-4 col-md-12 col-sm-12" style="height: 100%;">
<div class="card card-statistic-2"> <div class="card card-statistic-2">
<div class="card-stats"> <div class="card-stats">
<div class="card-stats-title"> <div class="card-stats-title">
@ -23,6 +23,8 @@
<div class="card-stats-item-count" id="countProcessed">{{ $countProcessed }}</div> <div class="card-stats-item-count" id="countProcessed">{{ $countProcessed }}</div>
<div class="card-stats-item-label">Diproses</div> <div class="card-stats-item-label">Diproses</div>
</div> </div>
</div>
<div class="card-stats-items mt-2">
<div class="card-stats-item"> <div class="card-stats-item">
<div class="card-stats-item-count" id="countIndicated">{{ $countIndicated }}</div> <div class="card-stats-item-count" id="countIndicated">{{ $countIndicated }}</div>
<div class="card-stats-item-label">Diterindikasi</div> <div class="card-stats-item-label">Diterindikasi</div>
@ -125,7 +127,6 @@
</div> </div>
</div> </div>
</div> </div>
<br>
<div class="row"> <div class="row">
<div class="col-lg-8"> <div class="col-lg-8">
<div class="card"> <div class="card">

View File

@ -6,6 +6,7 @@
<meta content="width=device-width, initial-scale=1, maximum-scale=1, shrink-to-fit=no" name="viewport"> <meta content="width=device-width, initial-scale=1, maximum-scale=1, shrink-to-fit=no" name="viewport">
<meta name="csrf-token" content="{{ csrf_token() }}"> <meta name="csrf-token" content="{{ csrf_token() }}">
<title>REKBER</title> <title>REKBER</title>
<link rel="shortcut icon" href="{{ asset('assets/images/logo-oki.webp') }}">
@include('layouts.css') @include('layouts.css')

View File

@ -4,7 +4,8 @@
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>REKBER | Homepage</title> <link rel="shortcut icon" href="{{ asset('assets/images/logo-oki.webp') }}">
<title>REKBER | Login</title>
<!-- icon font awesome --> <!-- icon font awesome -->
<script src="https://kit.fontawesome.com/64d58efce2.js" crossorigin="anonymous"></script> <script src="https://kit.fontawesome.com/64d58efce2.js" crossorigin="anonymous"></script>
<!-- css --> <!-- css -->
@ -55,14 +56,14 @@
color: #fff !important; color: #fff !important;
} }
#foto-preview-ktp, /* #foto-preview-ktp,
#foto-preview-ekyc { #foto-preview-ekyc {
width: 400px width: 400px;
} } */
.image-holder-ktp, .image-holder-ktp,
.image-holder-ekyc { .image-holder-ekyc {
width: 400px width: 400px;
} }
</style> </style>
</head> </head>
@ -88,7 +89,7 @@
<button type="button" class="btn-otp solid" id="cekAkun">Cek Akun</button> <button type="button" class="btn-otp solid" id="cekAkun">Cek Akun</button>
</div> </div>
<div class="input-field"> <div class="input-field-signin-flex">
<i class="fas fa-unlock-alt" aria-hidden="true"></i> <i class="fas fa-unlock-alt" aria-hidden="true"></i>
<input type="password" class="otp-input" placeholder="Password" name="password" required> <input type="password" class="otp-input" placeholder="Password" name="password" required>
</div> </div>
@ -101,7 +102,7 @@
method="POST"> method="POST">
@csrf @csrf
<h2 class="title">Daftar</h2> <h2 class="title">Daftar</h2>
<p style="width: 90%"> <p>
Selamat datang kembali, silakan isi form login di bawah ini untuk masuk ke akun anda. Selamat datang kembali, silakan isi form login di bawah ini untuk masuk ke akun anda.
</p> </p>
@ -149,45 +150,42 @@
name="nama_belakang"> name="nama_belakang">
</div> </div>
</div> </div>
<div class="input-field up"> <div class="input-field-signin-flex up">
<i class="fa fa-id-card" aria-hidden="true"></i> <i class="fa fa-id-card" aria-hidden="true"></i>
<input type="text" placeholder="NIK" class="email-input" name="nik" <input type="text" placeholder="NIK" class="email-input" name="nik"
maxlength="16" maxlength="16"
oninput="this.value = this.value.replace(/[^0-9]/g, '').substring(0, 16);" /> oninput="this.value = this.value.replace(/[^0-9]/g, '').substring(0, 16);" />
</div> </div>
<div class="flex-input-btn"> <div class="flex-input-btn">
<div class="input"> <div class="input-field-signin-flex">
<i class="fa fa-envelope" aria-hidden="true"></i> <i class="fa fa-envelope" aria-hidden="true"></i>
<input type="email" placeholder="Email" class="email-input" name="new_email" <input type="email" placeholder="Email" class="email-input" name="new_email"
id="newEmail"> id="newEmail">
</div> </div>
<button id="verifikasiEmail" class="btn-otp" type="button" <button id="verifikasiEmail" class="btn-otp solid up" type="button"
disabled=true>Verifikasi</button> disabled="true">Verifikasi</button>
</div> </div>
<div class="input-field up"> <div class="input-field-signin-flex up">
<i class="fa fa-ellipsis-h" aria-hidden="true"></i> <i class="fa fa-ellipsis-h" aria-hidden="true"></i>
<input type="text" class="telp-input-signup" <input type="text" class="telp-input-signup"
oninput="this.value = this.value.replace(/[^0-9]/g, '').substring(0, 6);" oninput="this.value = this.value.replace(/[^0-9]/g, '').substring(0, 6);"
placeholder="Kode Verifikasi Email" name="email_verification" placeholder="Kode Verifikasi Email" name="email_verification"
id="emailVerification"> id="emailVerification">
</div> </div>
<div class="input-field up"> <div class="input-field-signin-flex up">
<i class="fa fa-phone" aria-hidden="true"></i> <i class="fa fa-phone" aria-hidden="true"></i>
<input type="text" class="telp-input-signup" maxlength="13" <input type="text" class="telp-input-signup" maxlength="13"
oninput="this.value = this.value.replace(/[^0-9]/g, '').substring(0, 15);" oninput="this.value = this.value.replace(/[^0-9]/g, '').substring(0, 15);"
placeholder="Nomer Telepon. cth: 08xxx" name="nohp"> placeholder="Nomer Telepon. cth: 08xxx" name="nohp">
</div> </div>
<div style="display: flex;"> <div style="display: flex;">
<div class="input-field-signup-flex up gender-select-menu" style="width: 190%"> <div class="input-field">
<div class="gender-select-input" style="width: 100%; padding-left: 1rem;"> <select id="gender-select" name="gender">
<select style="width: 190%;" class="gender-select" id="gender-select"
name="gender">
<option value="Laki-laki">Laki-laki</option> <option value="Laki-laki">Laki-laki</option>
<option value="Perempuan">Perempuan</option> <option value="Perempuan">Perempuan</option>
</select> </select>
</div> </div>
</div> <div class="input-field-signup-flex left">
<div class="input-field-signup-flex up" style="margin-left: 3%">
<i class="fa fa-calendar" aria-hidden="true"></i> <i class="fa fa-calendar" aria-hidden="true"></i>
<input type="date" placeholder="Tanggal Lahir" name="tanggal_lahir" /> <input type="date" placeholder="Tanggal Lahir" name="tanggal_lahir" />
</div> </div>
@ -198,44 +196,38 @@
<!-- ======= FORM ADDRESS ======= --> <!-- ======= FORM ADDRESS ======= -->
<div class="form_2 data_info" style="display: none;"> <div class="form_2 data_info" style="display: none;">
<div class="input-field" style="width: 190%; padding: 0rem 1rem;"> <div class="input-field">
<select id="selectProvince" data-url="{{ route('cari-provinsi') }}" <select id="selectProvince" data-url="{{ route('cari-provinsi') }}"
style="width: 100%; border: 1px solid transparent; " class="input-field" style="width: 100%;" class="input-field" aria-label="Default select example">
</select>
</div>
<div class='mb-2'>
<div class="input-field">
<select id="selectCity" style="width: 100%;" class="input-field"
aria-label="Default select example"> aria-label="Default select example">
</select> </select>
</div> </div>
</div>
<div class='mb-2'> <div class='mb-2'>
<div class="input-field" style="width: 190%; padding: 0rem 1rem;"> <div class="input-field">
<select id="selectCity" <select id="selectDistrict" style="width: 100%;" class="input-field"
style="width: 100%; border: 1px solid transparent; margin-top: 0; outline: none;" aria-label="Default select example">
class="input-field" aria-label="Default select example">
</select> </select>
</div> </div>
</div> </div>
<div class='mb-2'> <div class='mb-2'>
<div class="input-field" style="width: 190%; padding: 0rem 1rem;"> <div class="input-field">
<select id="selectDistrict" <select id="selectVillage" style="width: 100%;" class="input-field"
style="width: 100%; border: 1px solid transparent; margin-top: 0; outline: none;" aria-label="Default select example" name="village_code">
class="input-field" aria-label="Default select example">
</select>
</div>
</div>
<div class='mb-2'>
<div class="input-field" style="width: 190%; padding: 0rem 1rem;">
<select id="selectVillage"
style="width: 100%; border: 1px solid transparent; margin-top: 0; outline: none;"
class="input-field" aria-label="Default select example"
name="village_code">
</select> </select>
</div> </div>
</div> </div>
<input type="text" class="input-field" id="alamat" name="alamat" <input type="text" class="input-field" id="alamat" name="alamat"
placeholder="Alamat lengkap Anda" cols="50" rows="4" placeholder="Alamat lengkap Anda" cols="50" rows="4">
style="width: 190%; padding: 0rem 1rem;">
</div> </div>
<!-- ======= END FORM ADDRESS ======= --> <!-- ======= END FORM ADDRESS ======= -->
@ -244,8 +236,8 @@
<div class="slider-container"> <div class="slider-container">
<div class="slider"> <div class="slider">
<div class="slide fade"> <div class="slide fade">
<div style="display: flex; flex-direction: column; align-items: center;"> <div style="display: flex; flex-direction: column; align-items: center">
<h3 style="">Foto KTP Anda</h3> <h3>Foto KTP Anda</h3>
<div class="image-holder-ktp"> <div class="image-holder-ktp">
<img src="{{ asset('assets/images/dashboard/Asset 3.png') }}" <img src="{{ asset('assets/images/dashboard/Asset 3.png') }}"
alt="logo ambil gambar" id="imageHolderKtp"> alt="logo ambil gambar" id="imageHolderKtp">
@ -254,7 +246,7 @@
<div id="foto-preview-ktp"></div> <div id="foto-preview-ktp"></div>
<input type="hidden" id="fotoKtp" name="ktp" <input type="hidden" id="fotoKtp" name="ktp"
style="display: none;"> style="display: none;">
<div style="display: flex; margin-top: 1rem; gap:10px;"> <div style="display: flex; margin-top: 1rem;">
<button type="button" class="btn-foto" id="startButtonKtp" <button type="button" class="btn-foto" id="startButtonKtp"
data-state="off">Mulai Kamera</button> data-state="off">Mulai Kamera</button>
<label for="ambilKtp" class="btn-foto text-center" id="gambarKtp" <label for="ambilKtp" class="btn-foto text-center" id="gambarKtp"
@ -269,7 +261,8 @@
</div> </div>
</div> </div>
<div class="slide fade"> <div class="slide fade">
<div style="display: flex; flex-direction: column; align-items: center;"> <div
style="display: flex; flex-direction: column; justify-content: center; align-items: center">
<h3>Foto Wajah Anda</h3> <h3>Foto Wajah Anda</h3>
<div class="image-holder-ekyc"> <div class="image-holder-ekyc">
<img src="{{ asset('assets/images/dashboard/Asset 3.png') }}" <img src="{{ asset('assets/images/dashboard/Asset 3.png') }}"
@ -279,7 +272,7 @@
<div id="foto-preview-ekyc"></div> <div id="foto-preview-ekyc"></div>
<input type="hidden" id="fotoEkyc" name="wajah" accept="image/*" <input type="hidden" id="fotoEkyc" name="wajah" accept="image/*"
style="display: none;"> style="display: none;">
<div style="display: flex; margin-top: 1rem; gap: 10px;"> <div style="display: flex; margin-top: 1rem;">
<button type="button" class="btn-foto" id="startButtonEkyc" <button type="button" class="btn-foto" id="startButtonEkyc"
data-state="off">Mulai Kamera</button> data-state="off">Mulai Kamera</button>
<label for="ambilEkyc" class="btn-foto text-center" <label for="ambilEkyc" class="btn-foto text-center"
@ -308,13 +301,13 @@
<!-- ======= FORM PIN ======= --> <!-- ======= FORM PIN ======= -->
<div class="form_4 data_info" style="display: none;"> <div class="form_4 data_info" style="display: none;">
<div style="display: flex"> <div style="display: flex; width: 100%;">
<div class="input-field-signup-flex"> <div class="input-field-signup-flex">
<i class="fa fa-unlock-alt" aria-hidden="true"></i> <i class="fa fa-unlock-alt" aria-hidden="true"></i>
<input type="password" class="pin-input" placeholder="Password" <input type="password" class="pin-input" placeholder="Password"
name="new_password"> name="new_password">
</div> </div>
<div class="input-field-signup-flex" style="margin-left: 3%"> <div class="input-field-signup-flex left" style="margin-left: 3%">
<i class="fa fa-unlock-alt" aria-hidden="true"></i> <i class="fa fa-unlock-alt" aria-hidden="true"></i>
<input type="password" class="konfir-pin-input" <input type="password" class="konfir-pin-input"
placeholder="Konfirmasi Password" name="confirm_password"> placeholder="Konfirmasi Password" name="confirm_password">
@ -367,7 +360,7 @@
<button class="btn transparent" id="sign-up-btn"> <button class="btn transparent" id="sign-up-btn">
Daftar Daftar
</button> </button>
<p><a href="{{ route('login') }}">Kembali</a></p> <p><a href="{{ route('homepage') }}">Kembali</a></p>
</div> </div>
<img src="{{ asset('assets/img/login_register/Payment Information-pana.svg') }}" class="image" <img src="{{ asset('assets/img/login_register/Payment Information-pana.svg') }}" class="image"
alt="" /> alt="" />
@ -381,7 +374,7 @@
<button class="btn transparent" id="sign-in-btn"> <button class="btn transparent" id="sign-in-btn">
Masuk Masuk
</button> </button>
<p><a href="{{ route('login') }}">Kembali</a></p> <p><a href="{{ route('homepage') }}">Kembali</a></p>
</div> </div>
<img src="{{ asset('assets/img/login_register/Payment Information-pana.svg') }}" class="image" <img src="{{ asset('assets/img/login_register/Payment Information-pana.svg') }}" class="image"
alt="" /> alt="" />
@ -438,6 +431,14 @@
return code; return code;
} }
function isValidEmail(email) {
// Ekspresi reguler untuk memeriksa validitas alamat email
var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
// Menggunakan test() untuk memeriksa apakah email sesuai dengan ekspresi reguler
return emailRegex.test(email);
}
// Login Awal // Login Awal
$('#cekAkun').on('click', function() { $('#cekAkun').on('click', function() {
let email = document.querySelector('[name="email"]').value; let email = document.querySelector('[name="email"]').value;
@ -449,6 +450,12 @@
text: 'Email tidak boleh kosong', text: 'Email tidak boleh kosong',
icon: 'error' icon: 'error'
}); });
} else if (!isValidEmail(email)) {
Swal.fire({
title: 'Gagal!',
text: 'Gunakan format email yang benar. Cth: example@example.com',
icon: 'error'
});
} else { } else {
try { try {
$.ajaxSetup({ $.ajaxSetup({
@ -518,7 +525,7 @@
verificationButton.disabled = true; verificationButton.disabled = true;
const email = newEmail.val().trim(); // Menghapus spasi di awal dan akhir const email = newEmail.val().trim(); // Menghapus spasi di awal dan akhir
if (email != '') { if (email != '' && isValidEmail(email)) {
// Menunggu 5 detik sebelum menghasilkan kode verifikasi // Menunggu 5 detik sebelum menghasilkan kode verifikasi
newEmail.timer = setTimeout(function() { newEmail.timer = setTimeout(function() {
if (waktuSekarangDetik == 0) { if (waktuSekarangDetik == 0) {
@ -530,14 +537,6 @@
} }
}); });
function isValidEmail(email) {
// Ekspresi reguler untuk memeriksa validitas alamat email
var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
// Menggunakan test() untuk memeriksa apakah email sesuai dengan ekspresi reguler
return emailRegex.test(email);
}
$('#verifikasiEmail').on('click', function() { $('#verifikasiEmail').on('click', function() {
const newEmail = $(this); const newEmail = $(this);
const email = document.querySelector('[name="new_email"]').value; const email = document.querySelector('[name="new_email"]').value;

View File

@ -109,6 +109,8 @@ Route::middleware(['auth:api'])->group(function () {
Route::get('list-notification','listNotification')->name('notification.list-notification'); Route::get('list-notification','listNotification')->name('notification.list-notification');
Route::get('get-detail-notification','getDetailNotification')->name('notification.get-detail-notification'); Route::get('get-detail-notification','getDetailNotification')->name('notification.get-detail-notification');
Route::get('mark-all-as-read','markAllAsRead')->name('notification.mark-all-as-read'); Route::get('mark-all-as-read','markAllAsRead')->name('notification.mark-all-as-read');
Route::get('update-new-notification','updateNewNotification')->name('notification.update-new-notification');
Route::get('update-notification-to-admin','updateNotificationToAdmin')->name('notification.update-notification-to-admin');
}); });
}); });
}); });

View File

@ -39,12 +39,12 @@ use App\Http\Controllers\User\Notification\UserNotification;
| be assigned to the "web" middleware group. Make something great! | be assigned to the "web" middleware group. Make something great!
| |
*/ */
//Index
Route::get('/', function () { Route::get('/', function () {
return view('welcome' return view('welcome'
); );
}); })->name('homepage');
//Index