Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
simpkm
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Farendi Giotivano R.P
simpkm
Commits
3b9310b8
Commit
3b9310b8
authored
Feb 21, 2025
by
Farendi Giotivano R.P
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://git.unesa.ac.id/farendi/simpkm
parents
c69be37f
178ae738
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
215 additions
and
32 deletions
+215
-32
app/Exports/ProposalExport.php
+3
-1
app/Http/Controllers/Operator/DaftarProposalController.php
+48
-4
app/Http/Controllers/Operator/ProposalController.php
+1
-1
app/Http/Controllers/Reviewer/DaftarSeleksiController.php
+11
-4
app/Models/ReviewerProposal.php
+1
-1
resources/views/backend/operator/daftar_proposal/index.blade.php
+46
-0
resources/views/backend/reviewer/seleksi/index.blade.php
+103
-20
routes/web.php
+2
-1
No files found.
app/Exports/ProposalExport.php
View file @
3b9310b8
...
...
@@ -42,7 +42,9 @@ class ProposalExport implements FromView,ShouldAutoSize
$statement
.=
" AND PERIODE = '"
.
$this
->
tahun
.
"'"
;
}
$data
=
DaftarProposal
::
with
(
'rKelompokDetil'
)
->
whereRaw
(
$statement
)
->
get
();
$data
=
DaftarProposal
::
with
([
'rKelompokDetil'
=>
function
(
$query
)
{
$query
->
orderBy
(
'status_ketua'
,
'ASC'
);
// Ganti 'kolom_yang_ingin_diurutkan' sesuai dengan nama kolom
}])
->
whereRaw
(
$statement
)
->
orderBy
(
'fakultas_ketua'
,
'ASC'
)
->
get
();
$result
=
[];
$no
=
0
;
...
...
app/Http/Controllers/Operator/DaftarProposalController.php
View file @
3b9310b8
...
...
@@ -90,7 +90,7 @@ class DaftarProposalController extends Controller
// $totalRecords = DaftarProposal::select('count(1) as allcount')->whereRaw($statementGlobal)->count();
$totalRecords
=
collect
(
DB
::
select
(
"select 1 as allcount from vw_daftar_proposal('"
.
$statementGlobal
.
"') "
))
->
count
();
$statement
=
" AND (UPPER(JUDUL) LIKE ''%"
.
$searchValue
.
"%'' OR UPPER(IDENTITAS_DOSPEM) LIKE ''%"
.
$searchValue
.
"%'') "
;
$statement
=
" AND
STATUS != ''2'' AND
(UPPER(JUDUL) LIKE ''%"
.
$searchValue
.
"%'' OR UPPER(IDENTITAS_DOSPEM) LIKE ''%"
.
$searchValue
.
"%'') "
;
// $totalRecordswithFilter = DaftarProposal::select('count(1) as allcount')->whereRaw($statementGlobal.$statement)->count();
$totalRecordswithFilter
=
collect
(
DB
::
select
(
"select 1 as allcount from vw_daftar_proposal('"
.
$statementGlobal
.
$statement
.
"') "
))
->
count
();
...
...
@@ -112,6 +112,8 @@ class DaftarProposalController extends Controller
$data_arr
=
array
();
foreach
(
$records
as
$record
){
$reviewer_proposal_id_1
=
$record
->
reviewer_proposal_id_1
;
$reviewer_proposal_id_2
=
$record
->
reviewer_proposal_id_2
;
$proposal_id
=
$record
->
proposal_id
;
$jenis_id
=
$record
->
jenis_id
;
$kode
=
$record
->
kode
;
...
...
@@ -127,6 +129,21 @@ class DaftarProposalController extends Controller
$nilai_2
=
$record
->
nilai_2
;
$rata
=
$record
->
rata
;
$ketua
=
explode
(
'###'
,
$record
->
identitas_ketua
);
$tombol_nilai_1
=
$tombol_nilai_2
=
''
;
if
(
$status_administrasi_1
!=
'0'
)
{
$fungsi_nilai_1
=
"cancelNilai('"
.
Crypt
::
encrypt
(
$reviewer_proposal_id_1
)
.
"')"
;
$tombol_nilai_1
=
'<a href="#!" class="btn btn-icon-sm btn-danger" onclick="'
.
$fungsi_nilai_1
.
'" title="Batalkan Penilaian?"><i class="fas fa-undo-alt"></i></a>'
;
}
if
(
$status_administrasi_2
!=
'0'
)
{
$fungsi_nilai_2
=
"cancelNilai('"
.
Crypt
::
encrypt
(
$reviewer_proposal_id_2
)
.
"')"
;
$tombol_nilai_2
=
'<a href="#!" class="btn btn-icon-sm btn-danger" onclick="'
.
$fungsi_nilai_2
.
'" title="Batalkan Penilaian?"><i class="fas fa-undo-alt"></i></a>'
;
}
// $nilai_1= DB::select("select ambil_jumlah_penilaian_seleksi('".$reviewer_proposal_id_1."', '".$record->jenis_id."')")[0]->ambil_jumlah_penilaian_seleksi;
// $nilai_2= DB::select("select ambil_jumlah_penilaian_seleksi('".$reviewer_proposal_id_2."', '".$record->jenis_id."')")[0]->ambil_jumlah_penilaian_seleksi;
...
...
@@ -219,14 +236,14 @@ class DaftarProposalController extends Controller
$data_arr
[]
=
array
(
"proposal_id"
=>
$proposal_id
,
"kode"
=>
$kode
,
"kode"
=>
$kode
.
'<br>'
.
$ketua
[
2
]
??
''
,
"jenis_pkm"
=>
$pil_jenis_pkm
,
"judul"
=>
$judul
,
"dospem"
=>
$dospem
,
"reviewer_1"
=>
$pilihan_1
,
"reviewer_2"
=>
$pilihan_2
,
"nilai_1"
=>
$nilai_1
,
"nilai_2"
=>
$nilai_2
,
"nilai_1"
=>
$nilai_1
.
'<br>'
.
$tombol_nilai_1
,
"nilai_2"
=>
$nilai_2
.
'<br>'
.
$tombol_nilai_2
,
"rata"
=>
$rata
,
"aksi"
=>
$aksi
);
...
...
@@ -537,6 +554,33 @@ class DaftarProposalController extends Controller
}
}
public
function
cancel
(
$id
)
{
try
{
$delete
=
ReviewerProposal
::
where
(
'reviewer_proposal_id'
,
Crypt
::
decrypt
(
$id
))
->
update
([
'cancel_penilaian'
=>
'1'
,
'tanggal_cancel_penilaian'
=>
Carbon
::
now
()]);
if
(
$delete
)
{
$status
=
'success'
;
$message
=
"Penilaian Reviewer Internal Telah dibatalkan, Reviewer silahkan melakukan seleksi administrasi dan penilaian kembali."
;
}
else
{
$status
=
'error'
;
$message
=
"Penilaian Reviewer Internal tidak ada."
;
}
return
response
()
->
json
([
'status'
=>
$status
,
'message'
=>
$message
,
]);
}
catch
(
\Exception
$id
)
{
return
response
()
->
json
([
'status'
=>
'error'
,
'message'
=>
"Data gagal diproses."
,
]);
}
}
public
function
approval_belmawa
(
$id
,
$status
)
{
try
{
...
...
app/Http/Controllers/Operator/ProposalController.php
View file @
3b9310b8
...
...
@@ -131,7 +131,7 @@ class ProposalController extends Controller
$aksi
.=
' <a href="'
.
$url
.
'" target="_blank" class="btn btn-primary btn-sm waves-effect waves-light" role="button"><i class="fas fa-search"></i></a>'
;
$keterangan
.=
"<br><span class='badge bg-info'>Upload Proposal Pada : "
.
$date_upload
.
" WIB</span>"
;
$keterangan
.=
"<br><span class='badge bg-info'>Di
setuju
i Dosen Pada : "
.
$date_approval
.
" WIB</span>"
;
$keterangan
.=
"<br><span class='badge bg-info'>Di
verifikas
i Dosen Pada : "
.
$date_approval
.
" WIB</span>"
;
$data_arr
[]
=
array
(
...
...
app/Http/Controllers/Reviewer/DaftarSeleksiController.php
View file @
3b9310b8
...
...
@@ -120,10 +120,12 @@ class DaftarSeleksiController extends Controller
$kode
=
$record
->
kode
;
$jenis_pkm
=
$record
->
jenis_pkm
;
$judul
=
$record
->
judul
;
$reviewer_proposal_id_1
=
$record
->
reviewer_proposal_id_1
??
"00000000-0000-0000-0000-000000000000"
;
$reviewer_proposal_id_2
=
$record
->
reviewer_proposal_id_2
??
"00000000-0000-0000-0000-000000000000"
;
$nilai_1
=
DB
::
select
(
"select ambil_jumlah_penilaian_seleksi('"
.
$re
cord
->
re
viewer_proposal_id_1
.
"')"
)[
0
]
->
ambil_jumlah_penilaian_seleksi
;
$nilai_1
=
DB
::
select
(
"select ambil_jumlah_penilaian_seleksi('"
.
$reviewer_proposal_id_1
.
"')"
)[
0
]
->
ambil_jumlah_penilaian_seleksi
;
$nilai_2
=
DB
::
select
(
"select ambil_jumlah_penilaian_seleksi('"
.
$re
cord
->
re
viewer_proposal_id_2
.
"')"
)[
0
]
->
ambil_jumlah_penilaian_seleksi
;
$nilai_2
=
DB
::
select
(
"select ambil_jumlah_penilaian_seleksi('"
.
$reviewer_proposal_id_2
.
"')"
)[
0
]
->
ambil_jumlah_penilaian_seleksi
;
$url
=
"https://statik.unesa.ac.id/simpkm/proposal/"
.
$record
->
periode
.
"/"
.
$record
->
upload_dokumen
;
...
...
@@ -170,6 +172,7 @@ class DaftarSeleksiController extends Controller
if
(
$status_administrasi
==
'2'
)
$aksi
=
'<h4>0</h4>'
;
else
// $aksi = '<a data-id="'.Crypt::encrypt($proposal_id).'" data-row="'.$hitung.'" class="btn btn-icon-sm btn-warning btn-sm btnNilai">Beri nilai<i class="fas fa-arrow-alt-circle-right"></i></a>';
$aksi
=
'<a href="'
.
$nilai
.
'" class="btn btn-icon-sm btn-warning btn-sm">Beri nilai<i class="fas fa-arrow-alt-circle-right"></i></a>'
;
}
}
...
...
@@ -260,6 +263,7 @@ class DaftarSeleksiController extends Controller
];
return
view
(
'backend.reviewer.seleksi.nilai'
,
$data
);
// return view('backend.reviewer.seleksi.child_nilai', $data);
}
public
function
update
(
Request
$request
,
$id
)
...
...
@@ -272,12 +276,15 @@ class DaftarSeleksiController extends Controller
}
public
function
approval
(
$id
,
$status
)
public
function
approval
(
$id
,
$status
,
$alasan
=
'000'
)
{
try
{
$urut
=
DB
::
select
(
"select ambil_data_reviewer_proposal('"
.
$this
->
rBiodata
->
noidentitas
.
"', '"
.
decrypt
(
$id
)
.
"', '1')"
)[
0
]
->
ambil_data_reviewer_proposal
;
$delete
=
ReviewerProposal
::
where
(
'proposal_id'
,
Crypt
::
decrypt
(
$id
))
->
where
(
'urut'
,
$urut
)
->
update
([
'status_administrasi'
=>
$status
]);
if
(
$alasan
==
'000'
)
$alasan
=
null
;
$delete
=
ReviewerProposal
::
where
(
'proposal_id'
,
Crypt
::
decrypt
(
$id
))
->
where
(
'urut'
,
$urut
)
->
update
([
'status_administrasi'
=>
$status
,
'alasan_tolak_administrasi'
=>
$alasan
,
'cancel_penilaian'
=>
'0'
,
'tanggal_cancel_penilaian'
=>
null
]);
if
(
$delete
)
{
if
(
$status
==
'1'
)
...
...
app/Models/ReviewerProposal.php
View file @
3b9310b8
...
...
@@ -12,7 +12,7 @@ class ReviewerProposal extends Model
protected
$keyType
=
'string'
;
protected
$fillable
=
[
'reviewer_proposal_id'
,
'proposal_id'
,
'reviewer_id'
,
'status_administrasi'
,
'komentar'
,
'urut'
,
'created_user'
,
'updated_user'
'reviewer_proposal_id'
,
'proposal_id'
,
'reviewer_id'
,
'status_administrasi'
,
'komentar'
,
'urut'
,
'created_user'
,
'updated_user'
,
'alasan_tolak_administrasi'
];
public
function
rReviewerProposalDetil
()
...
...
resources/views/backend/operator/daftar_proposal/index.blade.php
View file @
3b9310b8
...
...
@@ -120,6 +120,7 @@
$
(
document
)
.
ready
(
function
(){
// DataTable
var
oTable
=
$
(
'#example'
)
.
DataTable
({
pageLength
:
100
,
processing
:
true
,
serverSide
:
true
,
ajax
:
{
...
...
@@ -323,6 +324,51 @@
})
}
function
cancelNilai
(
reqId
)
{
var
kata
=
"Batalkan Penilaian"
;
var
desc
=
"membatalkan penilaian proposal"
;
Swal
.
fire
({
title
:
"Apakah Anda Yakin?"
,
text
:
"Anda akan "
+
desc
+
" ini!"
,
icon
:
"warning"
,
showCancelButton
:
!
0
,
confirmButtonText
:
"Ya, "
+
kata
,
cancelButtonText
:
"Tidak, Kembali!"
,
confirmButtonClass
:
"btn btn-success mt-2"
,
cancelButtonClass
:
"btn btn-danger ms-2 mt-2"
,
buttonsStyling
:
!
1
,
allowOutsideClick
:
!
1
,
showLoaderOnConfirm
:
true
})
.
then
((
result
)
=>
{
if
(
result
.
value
){
$
.
ajax
({
url
:
'{{url("/operator/seleksi-internal-reviewer-cancel/")}}/'
+
reqId
,
type
:
'GET'
,
data
:
{
"_token"
:
"{{ csrf_token() }}"
,
},
dataType
:
"JSON"
,
})
.
done
(
function
(
response
){
swal
.
fire
(
'Updated!'
,
response
.
message
,
response
.
status
)
.
then
(
function
(){
location
.
reload
();
});
})
.
fail
(
function
(){
swal
.
fire
(
'Oops...'
,
'Something went wrong with ajax !'
,
'error'
);
});
}
else
{
swal
.
fire
(
'Batal!'
,
'Data batal diproses.'
,
'error'
);
}
})
}
function
cetak
()
{
var
_token
=
$
(
'input[name="_token"]'
)
.
val
();
var
jenis
=
$
(
"#reqJenisPkm"
)
.
val
();
...
...
resources/views/backend/reviewer/seleksi/index.blade.php
View file @
3b9310b8
...
...
@@ -102,6 +102,7 @@
$(document).ready(function(){
// DataTable
var oTable = $('#example').DataTable({
pageLength: 100,
processing: true,
serverSide: true,
ajax: {
...
...
@@ -149,29 +150,24 @@
{
var
kata
=
"Lolos seleksi!"
;
var
desc
=
"meloloskan"
;
}
else
{
var
kata
=
"Tidak Lolos seleksi!"
;
var
desc
=
"tidak meloloskan"
;
}
var
reqText
=
"000"
;
Swal
.
fire
({
title
:
"Apakah Anda Yakin?"
,
text
:
"Anda akan "
+
desc
+
" data ini!"
,
icon
:
"warning"
,
showCancelButton
:
!
0
,
confirmButtonText
:
"Ya, "
+
kata
,
cancelButtonText
:
"Tidak, Kembali!"
,
confirmButtonClass
:
"btn btn-success mt-2"
,
cancelButtonClass
:
"btn btn-danger ms-2 mt-2"
,
buttonsStyling
:
!
1
,
allowOutsideClick
:
!
1
,
showLoaderOnConfirm
:
true
Swal
.
fire
({
title
:
"Apakah Anda Yakin?"
,
text
:
"Anda akan "
+
desc
+
" data ini!"
,
icon
:
"warning"
,
showCancelButton
:
!
0
,
confirmButtonText
:
"Ya, "
+
kata
,
cancelButtonText
:
"Tidak, Kembali!"
,
confirmButtonClass
:
"btn btn-success mt-2"
,
cancelButtonClass
:
"btn btn-danger ms-2 mt-2"
,
buttonsStyling
:
!
1
,
allowOutsideClick
:
!
1
,
showLoaderOnConfirm
:
true
})
.
then
((
result
)
=>
{
if
(
result
.
value
){
$
.
ajax
({
url
:
'{{url("/reviewer/seleksi-internal-approval/")}}/'
+
reqId
+
'/'
+
reqStatus
,
url
:
'{{url("/reviewer/seleksi-internal-approval/")}}/'
+
reqId
+
'/'
+
reqStatus
+
'/'
+
reqText
,
type
:
'GET'
,
data
:
{
"_token"
:
"{{ csrf_token() }}"
,
...
...
@@ -215,8 +211,95 @@
{
swal
.
fire
(
'Batal!'
,
'Data batal diproses.'
,
'error'
);
}
})
}
else
{
var
kata
=
"Tidak Lolos seleksi!"
;
var
desc
=
"tidak meloloskan"
;
Swal
.
fire
({
title
:
"Alasan Tolak Seleksi Administrasi"
,
input
:
"textarea"
,
inputPlaceholder
:
"Tulis Alasan Anda disini ..."
,
showCancelButton
:
true
,
confirmButtonText
:
"Submit"
,
preConfirm
:
(
reqText
)
=>
{
if
(
!
reqText
)
{
Swal
.
showValidationMessage
(
"Alasan tidak boleh kosong!"
);
}
return
reqText
;
}
})
.
then
((
result
)
=>
{
let
alasan
=
result
.
value
;
// Store textarea value
if
(
result
.
isConfirmed
)
{
Swal
.
fire
({
title
:
"Apakah Anda Yakin?"
,
text
:
"Anda akan "
+
desc
+
" data ini!"
,
icon
:
"warning"
,
showCancelButton
:
!
0
,
confirmButtonText
:
"Ya, "
+
kata
,
cancelButtonText
:
"Tidak, Kembali!"
,
confirmButtonClass
:
"btn btn-success mt-2"
,
cancelButtonClass
:
"btn btn-danger ms-2 mt-2"
,
buttonsStyling
:
!
1
,
allowOutsideClick
:
!
1
,
showLoaderOnConfirm
:
true
})
.
then
((
result
)
=>
{
if
(
result
.
value
){
$
.
ajax
({
url
:
'{{url("/reviewer/seleksi-internal-approval/")}}/'
+
reqId
+
'/'
+
reqStatus
+
'/'
+
alasan
,
type
:
'GET'
,
data
:
{
"_token"
:
"{{ csrf_token() }}"
,
},
dataType
:
"JSON"
,
})
.
done
(
function
(
response
){
swal
.
fire
(
'Updated!'
,
response
.
message
,
response
.
status
)
.
then
(
function
(){
if
(
reqStatus
==
'1'
)
{
$
(
"#row_"
+
rowId
+
" td:nth-last-child(2)"
)
.
empty
()
var
s
=
$
(
'<span class="badge bg-success">Lolos</span>'
);
$
(
"#row_"
+
rowId
+
" td:nth-last-child(2)"
)
.
append
(
s
);
$
(
"#row_"
+
rowId
+
" td:last-child"
)
.
empty
();
var
t
=
$
(
'<a href="{{ URL::to("reviewer/seleksi-internal/") }}/'
+
reqId
+
'/edit" class="btn btn-icon-sm btn-warning btn-sm">Beri nilai<i class="fas fa-arrow-alt-circle-right"></i></a>'
);
$
(
"#row_"
+
rowId
+
" td:last-child"
)
.
append
(
t
);
}
else
{
$
(
"#row_"
+
rowId
+
" td:nth-last-child(4)"
)
.
empty
()
var
r
=
$
(
'<span class="badge bg-success">Sudah dinilai</span>'
);
$
(
"#row_"
+
rowId
+
" td:nth-last-child(4)"
)
.
append
(
r
);
$
(
"#row_"
+
rowId
+
" td:nth-last-child(2)"
)
.
empty
()
var
s
=
$
(
'<span class="badge bg-danger">Tidak Lolos</span>'
);
$
(
"#row_"
+
rowId
+
" td:nth-last-child(2)"
)
.
append
(
s
);
$
(
"#row_"
+
rowId
+
" td:last-child"
)
.
empty
();
var
t
=
$
(
'<h4>0</h4>'
);
$
(
"#row_"
+
rowId
+
" td:last-child"
)
.
append
(
t
);
}
// location.reload();
});
})
.
fail
(
function
(){
swal
.
fire
(
'Oops...'
,
'Something went wrong with ajax !'
,
'error'
);
});
}
else
{
swal
.
fire
(
'Batal!'
,
'Data batal diproses.'
,
'error'
);
}
})
}
});
}
}
...
...
routes/web.php
View file @
3b9310b8
...
...
@@ -178,6 +178,7 @@ Route::group(['middleware' => ['auth:sanctum', 'verified']], function () {
Route
::
resource
(
'seleksi-internal-proposal'
,
DaftarProposalController
::
class
);
Route
::
post
(
'seleksi-internal-proposal-jenis'
,
[
DaftarProposalController
::
class
,
'change_jenis'
])
->
name
(
'seleksi-internal-proposal-jenis'
);
Route
::
get
(
'/seleksi-internal-reviewer-approval/{id}/{status}'
,
[
DaftarProposalController
::
class
,
'approval'
])
->
name
(
'seleksi-internal.approval'
);
Route
::
get
(
'/seleksi-internal-reviewer-cancel/{id}'
,
[
DaftarProposalController
::
class
,
'cancel'
])
->
name
(
'seleksi-internal.cancel'
);
Route
::
get
(
'getDaftarProposal'
,
[
DaftarProposalController
::
class
,
'getData'
])
->
name
(
'getDaftarProposal'
);
Route
::
get
(
'cetak-daftar-proposal'
,
[
DaftarProposalController
::
class
,
'cetak_daftar_proposal'
])
->
name
(
'cetak-daftar-proposal'
);
Route
::
get
(
'cetak-daftar-proposal-new'
,
[
DaftarProposalController
::
class
,
'cetak_daftar_proposal_new'
])
->
name
(
'cetak-daftar-proposal-new'
);
...
...
@@ -218,7 +219,7 @@ Route::group(['middleware' => ['auth:sanctum', 'verified']], function () {
Route
::
name
(
'reviewer.'
)
->
prefix
(
'reviewer'
)
->
middleware
([
'role:reviewer|operator|dosen|tendik'
])
->
group
(
function
()
{
Route
::
resource
(
'seleksi-internal'
,
DaftarSeleksiController
::
class
);
Route
::
get
(
'/seleksi-internal-approval/{id}/{status}'
,
[
DaftarSeleksiController
::
class
,
'approval'
])
->
name
(
'seleksi-internal.approval'
);
Route
::
get
(
'/seleksi-internal-approval/{id}/{status}
/{alasan?}
'
,
[
DaftarSeleksiController
::
class
,
'approval'
])
->
name
(
'seleksi-internal.approval'
);
Route
::
get
(
'getDaftarSeleksi'
,
[
DaftarSeleksiController
::
class
,
'getData'
])
->
name
(
'getDaftarSeleksi'
);
Route
::
get
(
'monev-internal/{id}'
,
[
DaftarMonevController
::
class
,
'index'
])
->
name
(
'monev-internal'
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment