Commit 3b9310b8 by Farendi Giotivano R.P

Merge branch 'master' of http://git.unesa.ac.id/farendi/simpkm

parents c69be37f 178ae738
......@@ -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;
......
......@@ -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 {
......
......@@ -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'>Disetujui Dosen Pada : ".$date_approval." WIB</span>";
$keterangan .= "<br><span class='badge bg-info'>Diverifikasi Dosen Pada : ".$date_approval." WIB</span>";
$data_arr[] = array(
......
......@@ -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('".$record->reviewer_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('".$record->reviewer_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')
......
......@@ -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()
......
......@@ -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();
......
......@@ -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');
}
})
}
});
}
}
......
......@@ -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');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment