Merged in finadev (pull request #122)

Finadev
This commit is contained in:
dev_kopkb
2024-02-13 13:12:50 +00:00
7 changed files with 152 additions and 93 deletions
+3 -2
View File
@@ -11,12 +11,13 @@ class OperasiNotice implements ShouldBroadcast
{ {
use Dispatchable, InteractsWithSockets, SerializesModels; use Dispatchable, InteractsWithSockets, SerializesModels;
public $cawangan,$namakhazanah; public $cawangan,$namakhazanah,$group_id;
public function __construct($cawangan,$namakhazanah) public function __construct($cawangan,$namakhazanah,$group_id)
{ {
$this->cawangan = $cawangan; $this->cawangan = $cawangan;
$this->namakhazanah = $namakhazanah; $this->namakhazanah = $namakhazanah;
$this->group_id = $group_id;
} }
public function broadcastOn() public function broadcastOn()
+1 -1
View File
@@ -662,7 +662,7 @@ class KhazanahController extends Controller
} }
event(new OperasiNotice($auth_user['cawangan'],$auth_user['name'])); event(new OperasiNotice($auth_user['cawangan'],$auth_user['name'],$auth_user['group_id']));
} }
} }
+1 -1
View File
@@ -29,7 +29,7 @@ class OperasiController extends Controller
$api_url = config('api.url'); $api_url = config('api.url');
$cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/'. $auth_user['cawangan'])->json(); $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/'. $auth_user['cawangan'])->json();
$kelulusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/ListOperasi/')->json(); $kelulusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/ListOperasi/', ['group_id'=> $auth_user['group_id'] ])->json();
$arraykelulusan = []; $arraykelulusan = [];
@@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddGroupIdToUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
//
$table->integer('group_id');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
//
$table->dropColumn(['group_id']);
});
}
}
+8 -7
View File
@@ -1402,20 +1402,21 @@
$.each(data,function(index,bayaran){ $.each(data,function(index,bayaran){
var urlroute = '{{ route("resit.ansuran", ":id") }}'; var urlroute = '{{ route("resit.ansuran", ":id") }}';
var bayaranteller; // var bayaranteller;
if(bayaran['teller'] != 'Online') // if(bayaran['teller'] = 'Online'){
bayaranteller = 'KT'; // bayaranteller = 'ON'; }
if(bayaran['teller'] == 'Online') // else {
bayaranteller = 'ON'; // bayaranteller = 'KT';
// }
urlroute = urlroute.replace(':id', bayaran['id']); urlroute = urlroute.replace(':id', bayaran['id']);
historybayarandatatable.row.add([ historybayarandatatable.row.add([
counter, counter,
bayaran['created_at'], bayaran['created_at'],
"RM " + bayaran['duit_masuk'], "RM " + bayaran['duit_masuk'],
bayaranteller, //bayaranteller,
'<a class="btn btn-info" target="_blank" href='+ urlroute +'>Cetak</a>' '<a class="btn btn-info" target="_blank" href='+ urlroute +'>Cetak</a>'
]).draw(); ]).draw();
counter = counter + 1; counter = counter + 1;
+104 -81
View File
@@ -1,5 +1,6 @@
<!doctype html> <!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> <html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<link rel="icon" href="{{ asset('img/icon_pkb.png') }}"> <link rel="icon" href="{{ asset('img/icon_pkb.png') }}">
@@ -38,19 +39,19 @@
<script src="{{ asset('js/popper.min.js') }}"></script> <script src="{{ asset('js/popper.min.js') }}"></script>
<script src="{{ asset('vendor/DataTables/datatables.min.js') }}"></script> <script src="{{ asset('vendor/DataTables/datatables.min.js') }}"></script>
<script src="{{ asset('vendor/datepicker/js/bootstrap-datepicker.min.js') }}"></script> <script src="{{ asset('vendor/datepicker/js/bootstrap-datepicker.min.js') }}"></script>
{{-- jquery validation --}} {{-- jquery validation --}}
<script src="{{ asset('js/jquery.validate.min.js') }}"></script> <script src="{{ asset('js/jquery.validate.min.js') }}"></script>
<script src="{{ asset('js/additional-methods.min.js') }}"></script> <script src="{{ asset('js/additional-methods.min.js') }}"></script>
{{-- Pusher --}} {{-- Pusher --}}
<script src="{{ asset('js/pusher.min.js') }}"></script> <script src="{{ asset('js/pusher.min.js') }}"></script>
<script> <script>
function startTime() { function startTime() {
var today = new Date(); var today = new Date();
var d = today.getDate(); var d = today.getDate();
var mon = today.getMonth()+1; var mon = today.getMonth() + 1;
var y = today.getFullYear() var y = today.getFullYear()
var h = today.getHours(); var h = today.getHours();
var m = today.getMinutes(); var m = today.getMinutes();
@@ -58,26 +59,29 @@
m = checkTime(m); m = checkTime(m);
s = checkTime(s); s = checkTime(s);
document.getElementById('displaytime').innerHTML = document.getElementById('displaytime').innerHTML =
d + "/" + mon + "/" + y + " " +h + ":" + m + ":" + s; d + "/" + mon + "/" + y + " " + h + ":" + m + ":" + s;
var t = setTimeout(startTime, 500); var t = setTimeout(startTime, 500);
} }
function checkTime(i) { function checkTime(i) {
if (i < 10) {i = "0" + i}; // add zero in front of numbers < 10 if (i < 10) {
i = "0" + i
}; // add zero in front of numbers < 10
return i; return i;
} }
</script> </script>
<style> <style>
.custom-radio { .custom-radio {
font-size:18px; font-size: 18px;
margin:20px 20px 20px 20px; margin: 20px 20px 20px 20px;
display: inline-flex !important; display: inline-flex !important;
flex-direction: column; flex-direction: column;
align-items: flex-start !important; align-items: flex-start !important;
} }
</style>
</style>
</head> </head>
<body onload="startTime()" style="background-color:#BAC1C9;"> <body onload="startTime()" style="background-color:#BAC1C9;">
<div id="app"> <div id="app">
<nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm" style="height:100px;"> <nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm" style="height:100px;">
@@ -85,30 +89,34 @@
<a class="navbar-brand" href="#" style="cursor:not-allowed;"> <a class="navbar-brand" href="#" style="cursor:not-allowed;">
<img src="{{ asset('img/icon_pkb.png') }}" class="logo-arrahn-header" alt="Logo Ar Rahn" /> <img src="{{ asset('img/icon_pkb.png') }}" class="logo-arrahn-header" alt="Logo Ar Rahn" />
</a> </a>
<div class="col-2"> <div class="col-2">
<div style="color:#eb2f06;font-weight:bold;" id="displaytime"></div> <div style="color:#eb2f06;font-weight:bold;" id="displaytime"></div>
</div> </div>
<div class="col-2 row mx-auto text-center justify-content-center"> <div class="col-2 row mx-auto text-center justify-content-center">
<div class="navbar-brand ml-3 col-4"> <div class="navbar-brand ml-3 col-4">
<b class="text-secondary">Bahagian : </b><span class="text-uppercase" style="color:#1abc9c;font-weight:bold;">{{ Auth::user()->roles }}</span> <b class="text-secondary">Bahagian : </b><span class="text-uppercase"
style="color:#1abc9c;font-weight:bold;">{{ Auth::user()->roles }}</span>
</div> </div>
</div> </div>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}"> <button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="{{ __('Toggle navigation') }}">
<span class="navbar-toggler-icon"></span> <span class="navbar-toggler-icon"></span>
</button> </button>
<div class="collapse navbar-collapse" id="navbarSupportedContent"> <div class="collapse navbar-collapse" id="navbarSupportedContent">
<!-- Left Side Of Navbar --> <!-- Left Side Of Navbar -->
<ul class="navbar-nav mr-auto"> <ul class="navbar-nav mr-auto">
</ul> </ul>
<!-- Right Side Of Navbar --> <!-- Right Side Of Navbar -->
<ul class="navbar-nav ml-auto"> <ul class="navbar-nav ml-auto">
<li class="nav-item dropdown" style="margin-right:10px;"> <li class="nav-item dropdown" style="margin-right:10px;">
<a id="navbarDropdown" class="nav-link " href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre> <a id="navbarDropdown" class="nav-link " href="#" role="button"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
<i id="bell" class="fa fa-bell"></i> <i id="bell" class="fa fa-bell"></i>
</a> </a>
@@ -122,7 +130,7 @@
</li> </li>
<script> <script>
let authgroup = "{{ Auth::user()->group_id }}"
var audio = new Audio("{{ asset('sound/3.wav') }}"); var audio = new Audio("{{ asset('sound/3.wav') }}");
audio.muted = true; audio.muted = true;
@@ -136,50 +144,61 @@
var channel = pusher.subscribe('operasi-notify'); var channel = pusher.subscribe('operasi-notify');
channel.bind('operasi-event', function(data) { channel.bind('operasi-event', function(data) {
let message = JSON.stringify(data);
$('#bell').css("color", "red");
$('#linkz').text(data.namateller + " Pohon Kelulusan");
$("#linkz").attr("href", "{{ url('kelulusan') }}");
if(window.location.pathname === '/operasi/kelulusan') let message = JSON.stringify(data);
{
location.reload();
}else{
audio.play();
audio.muted = false;
var countlagu = 1;
audio.onended = function() {
if(countlagu <= 3){
countlagu++;
this.play();
}
}
}
const Toast = Swal.mixin({
toast: true,
position: 'top-end',
showConfirmButton: false,
timer: 5000,
timerProgressBar: true,
didOpen: (toast) => {
toast.addEventListener('mouseenter', Swal.stopTimer)
toast.addEventListener('mouseleave', Swal.resumeTimer)
}
})
Toast.fire({ console.log(authgroup, data.group_id);
icon: 'error',
title: 'Kelulusan Dipohon Sekarang!' if (authgroup == data.group_id) {
})
}); console.log(authgroup, data.group_id);
$('#bell').css("color", "red");
$('#linkz').text(data.namateller + " Pohon Kelulusan");
$("#linkz").attr("href", "{{ url('kelulusan') }}");
if (window.location.pathname === '/operasi/kelulusan') {
location.reload();
} else {
audio.play();
audio.muted = false;
var countlagu = 1;
audio.onended = function() {
if (countlagu <= 3) {
countlagu++;
this.play();
}
}
}
const Toast = Swal.mixin({
toast: true,
position: 'top-end',
showConfirmButton: false,
timer: 5000,
timerProgressBar: true,
didOpen: (toast) => {
toast.addEventListener('mouseenter', Swal.stopTimer)
toast.addEventListener('mouseleave', Swal.resumeTimer)
}
})
Toast.fire({
icon: 'error',
title: 'Kelulusan Dipohon Sekarang!'
})
}
});
$("#navbarDropdown").click(function(){ $("#navbarDropdown").click(function() {
$('#bell').css("color", "grey"); $('#bell').css("color", "grey");
}); });
</script>
</script>
@@ -195,7 +214,9 @@
@endif @endif
@else @else
<li class="nav-item dropdown"> <li class="nav-item dropdown">
<a id="navbarDropdown" style="color:#1abc9c;font-weight:bold;" class="nav-link dropdown-toggle" onclick="trigbiasa()" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre> <a id="navbarDropdown" style="color:#1abc9c;font-weight:bold;"
class="nav-link dropdown-toggle" onclick="trigbiasa()" href="#" role="button"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
{{ Auth::user()->name }} {{ Auth::user()->name }}
</a> </a>
@@ -204,39 +225,40 @@
{{ __('Profile') }} {{ __('Profile') }}
</a> </a>
<a class="dropdown-item" href="{{ route('logout') }}" <a class="dropdown-item" href="{{ route('logout') }}"
onclick="event.preventDefault(); onclick="event.preventDefault();
document.getElementById('logout-form').submit();"> document.getElementById('logout-form').submit();">
{{ __('Logout') }} {{ __('Logout') }}
</a> </a>
<form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none"> <form id="logout-form" action="{{ route('logout') }}" method="POST"
class="d-none">
@csrf @csrf
</form> </form>
</div> </div>
</li> </li>
@endguest @endguest
</ul> </ul>
</div> </div>
</div> </div>
</nav> </nav>
@if(session()->has('iklan') && session()->get('iklan') == 0) @if (session()->has('iklan') && session()->get('iklan') == 0)
<div class="toast" role="alert" aria-live="assertive" aria-atomic="true"
style="position: absolute; top: 1rem; right: 1rem; width:100%;z-index:1;" data-autohide="false">
<div class="toast-header">
<div class="toast" role="alert" aria-live="assertive" aria-atomic="true" style="position: absolute; top: 1rem; right: 1rem; width:100%;z-index:1;" data-autohide="false"> <i class="text-danger fa-2x fa fa-exclamation-triangle mr-2"></i>
<div class="toast-header"> <strong class="mr-auto text-danger fa-2x">Amaran</strong>
{{-- <small>11 mins ago</small> --}}
<i class="text-danger fa-2x fa fa-exclamation-triangle mr-2"></i> <button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close">
<strong class="mr-auto text-danger fa-2x">Amaran</strong> <span aria-hidden="true">&times;</span>
{{-- <small>11 mins ago</small> --}} </button>
<button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close"> </div>
<span aria-hidden="true">&times;</span> <div class="toast-body">
</button> <b style="font-size:18px;">sila tukar kata laluan asal dengan segera!</b>
</div>
</div> </div>
<div class="toast-body">
<b style="font-size:18px;">sila tukar kata laluan asal dengan segera!</b>
</div>
</div>
<script> <script>
$('.toast').toast('show'); $('.toast').toast('show');
</script> </script>
@@ -250,4 +272,5 @@
</div> </div>
@yield('footer') @yield('footer')
</body> </body>
</html> </html>
+1 -1
View File
@@ -43,7 +43,7 @@
<th>Bil</th> <th>Bil</th>
<th>Tarikh Bayaran</th> <th>Tarikh Bayaran</th>
<th>Bayaran</th> <th>Bayaran</th>
<th>Jenis Bayaran</th> {{-- <th>Jenis Bayaran</th> --}}
<th>Action</th> <th>Action</th>
</tr> </tr>
</thead> </thead>