Bagosep

DosenController.php

Jun 15th, 2021
697
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. namespace App\Http\Controllers\api;
  4.  
  5. use App\Detail_materi_dosen;
  6. use App\Dosen;
  7. use Illuminate\Http\Request;
  8. use App\Http\Controllers\Controller;
  9. use App\Penilaian_dosen;
  10. use App\Periode_praktikum;
  11. use Illuminate\Support\Facades\Auth;
  12. use Illuminate\Support\Facades\DB;
  13.  
  14. class DosenController extends Controller
  15. {
  16.     public function profile(Request $request){
  17.         $user = auth('dosen')->user();
  18.        
  19.         $dosen = Dosen::whereNip($user->username)->firstOrFail();
  20.         return response()->json([
  21.             "status" => "sukses",
  22.             "pesan" => "Berhasil",
  23.             "data" => [$dosen]
  24.         ]);
  25.     }
  26.  
  27.     public function get_praktikum(Request $request)
  28.     {
  29.         // $praktikum = Periode_praktikum::with('praktikum')->where('periode_praktikum.status',1)->get();
  30.  
  31.         $praktikum = DB::table('penilaian_dosen')
  32.             ->select('periode_praktikum.tahun','praktikum.id as praktikum_id', 'dosen.nama as namaDosen','praktikum.nama as namaPraktikum',DB::raw('COUNT(penilaian_dosen.praktikan_id) as total'))
  33.             ->join('praktikan','penilaian_dosen.praktikan_id','praktikan.id')
  34.             ->join('periode_praktikum','praktikan.periode_praktikum_id','periode_praktikum.id')
  35.             ->join('praktikum','periode_praktikum.praktikum_id','praktikum.id')
  36.             ->join('periode_praktikum_dosen','penilaian_dosen.periode_praktikum_dosen_id','periode_praktikum_dosen.id')
  37.             ->join('dosen_laboratorium','periode_praktikum_dosen.dosen_laboratorium_id','dosen_laboratorium.id')
  38.             ->join('dosen','dosen_laboratorium.dosen_id','dosen.id')
  39.             // ->where('dosen_laboratorium.laboratorium_id',\Auth::user()->id-1)
  40.             ->where('dosen.nip',Auth::user()->username)
  41.             ->where('periode_praktikum.status',1)
  42.             ->groupBy('namaDosen')
  43.             ->groupBy('namaPraktikum')
  44.             ->groupBy('praktikum_id')
  45.             ->groupBy('tahun')
  46.             ->get();
  47.  
  48.         return response()->json([
  49.             "status" => "sukses",
  50.             "pesan" => "Berhasil",
  51.             "data" => $praktikum
  52.         ]);
  53.     }
  54.  
  55.     public function get_praktikan(Request $request)
  56.     {
  57.         $banyakModul = DB::select('select count(*) as hitung from
  58.                        (SELECT modul_dosen_id from modul_materi_dosen
  59.                        JOIN materi on modul_materi_dosen.materi_id = materi.id
  60.                        JOIN praktikum on materi.praktikum_id = praktikum.id
  61.                        JOIN modul_dosen on modul_dosen.id = modul_materi_dosen.modul_dosen_id
  62.                        JOIN periode_praktikum on periode_praktikum.id = modul_dosen.periode_praktikum_id
  63.                        where periode_praktikum.praktikum_id ='.$request->praktikum_id.'
  64.                        and periode_praktikum.status = 1
  65.                        GROUP by modul_dosen_id)
  66.                        as hitung;');
  67.  
  68.         $idModulMateri = DB::table('modul_materi_dosen')
  69.             ->select('modul_materi_dosen.modul_dosen_id as idModul')
  70.             ->join('modul_dosen', 'modul_materi_dosen.modul_dosen_id', 'modul_dosen.id')
  71.             ->join('periode_praktikum', 'modul_dosen.periode_praktikum_id', 'periode_praktikum.id')
  72.             ->join('praktikum', 'periode_praktikum.praktikum_id', 'praktikum.id')
  73.             ->where('periode_praktikum.status', 1)
  74.             ->where('praktikum_id', $request->praktikum_id)
  75.             ->groupBy('idModul')
  76.             ->get();
  77.  
  78.         $modulMateri = DB::table('modul_materi_dosen')
  79.                     ->select('modul_dosen.id as idDosen','materi.id as idMateri','materi.nama as nama')
  80.                     ->join('materi','modul_materi_dosen.materi_id','=','materi.id')
  81.                     ->join('modul_dosen','modul_materi_dosen.modul_dosen_id','modul_dosen.id')
  82.                     ->join('periode_praktikum','modul_dosen.periode_praktikum_id','periode_praktikum.id')
  83.                     ->join('praktikum','periode_praktikum.praktikum_id','praktikum.id')
  84.                     ->where('periode_praktikum.status',1)
  85.                     ->where('praktikum.id',$request->praktikum_id)
  86.                     ->get();
  87.            
  88.         $idModul = DB::table('modul_materi_dosen')
  89.                 ->select('modul_materi_dosen.modul_dosen_id as idModul')
  90.                 ->join('modul_dosen','modul_materi_dosen.modul_dosen_id','modul_dosen.id')
  91.                 ->join('periode_praktikum','modul_dosen.periode_praktikum_id','periode_praktikum.id')
  92.                 ->join('praktikum','periode_praktikum.praktikum_id','praktikum.id')
  93.                 ->where('periode_praktikum.status',1)
  94.                 ->where('praktikum.id',$request->praktikum_id)
  95.                 ->groupBy('modul_materi_dosen.modul_dosen_id')
  96.                 ->get();
  97.  
  98.         $praktikan = DB::table('mahasiswa')
  99.                         ->select('mahasiswa.npm as npm','mahasiswa.nama as namaMahasiswa','sesi.nama as namaSesi','sesi.waktu as waktu','penilaian_dosen.id as idPenilaian','praktikan.id as praktikanID','penilaian_dosen.id as idPenilaian')
  100.                         ->join('praktikan','praktikan.mahasiswa_id','mahasiswa.id')
  101.                         ->join('penilaian_dosen','praktikan.id','penilaian_dosen.praktikan_id')
  102.                         ->join('periode_praktikum_dosen','penilaian_dosen.periode_praktikum_dosen_id','periode_praktikum_dosen.id')
  103.                         ->join('dosen_laboratorium','periode_praktikum_dosen.dosen_laboratorium_id','dosen_laboratorium.id')
  104.                         ->join('dosen','dosen_laboratorium.dosen_id','dosen.id')
  105.                         ->join('periode_praktikum','praktikan.periode_praktikum_id','periode_praktikum.id')
  106.                         ->join('sesi','praktikan.sesi_id','sesi.id')
  107.                         ->where('periode_praktikum.praktikum_id',$request->praktikum_id)
  108.                         ->where('periode_praktikum.status',1)
  109.                         ->where('dosen.nip',Auth::user()->username)
  110.                         ->get();
  111.                        
  112.         if(count($praktikan) == 0){            
  113.             return response()->json([
  114.                 "status" => "sukses",
  115.                 "pesan" => "Anda tidak mempunyai praktikan",
  116.                 "data" => []
  117.             ]);
  118.         }
  119.  
  120.         $nilaiSemuaPraktikan = array();
  121.         foreach($praktikan as $p){
  122.             $nilaiPraktikan = array();
  123.             for($i = 1; $i<=$banyakModul[0]->hitung;$i++){
  124.                 $nilai = Detail_materi_dosen::select(DB::raw('AVG(detail_materi_dosen.nilai_materi) as avg'))
  125.                 ->join('modul_materi_dosen','detail_materi_dosen.modul_materi_dosen_id','modul_materi_dosen.id')
  126.                 ->join('penilaian_dosen','detail_materi_dosen.penilaian_dosen_id','penilaian_dosen.id')
  127.                 ->join('materi','modul_materi_dosen.materi_id','materi.id')
  128.                 ->join('praktikum','materi.praktikum_id','praktikum.id')
  129.                 ->where('detail_materi_dosen.penilaian_dosen_id',$p->idPenilaian)
  130.                 ->where('penilaian_dosen.praktikan_id',$p->praktikanID)
  131.                 ->where('modul_materi_dosen.modul_dosen_id',$idModulMateri[$i-1]->idModul)
  132.                 ->where('materi.praktikum_id',$request->praktikum_id)
  133.                 ->first();
  134.                 if($nilai){
  135.                     array_push($nilaiPraktikan,$nilai->avg);
  136.                 }else{
  137.                     array_push($nilaiPraktikan,'0');
  138.                 }
  139.             }
  140.             array_push($nilaiSemuaPraktikan, $nilaiPraktikan);
  141.         }
  142.         // OTW
  143.         $idPeriodePraktikumDosen = DB::table('periode_praktikum_dosen')
  144.                                 ->select('periode_praktikum_dosen.id as idDosen','periode_praktikum_dosen.status as status')
  145.                                 ->join('dosen_laboratorium','periode_praktikum_dosen.dosen_laboratorium_id','dosen_laboratorium.id')
  146.                                 ->join('dosen','dosen_laboratorium.dosen_id','dosen.id')
  147.                                 ->join('periode_praktikum','periode_praktikum.id','periode_praktikum_dosen.periode_praktikum_id')
  148.                                 ->where('dosen.nip',Auth::user()->username)
  149.                                 ->where('periode_praktikum.praktikum_id',$request->praktikum_id)
  150.                                 ->where('periode_praktikum.status', 1)
  151.                                 ->first();
  152.  
  153.         return response()->json([
  154.             "status" => "sukses",
  155.             "pesan" => "Berhasil",
  156.             "data" => [
  157.                 'banyakModul' => $banyakModul[0]->hitung,
  158.                 'modulMateri' => $modulMateri,
  159.                 'idModul' => $idModul,
  160.                 'praktikan' => $praktikan,
  161.                 'idPraktikum' => $request->praktikum_id,
  162.                 'nilai' => $nilaiSemuaPraktikan,
  163.                 'idPeriodePraktikumDosen' => $idPeriodePraktikumDosen,
  164.             ]
  165.         ]);
  166.     }
  167.  
  168.     public function store_nilai(Request $request)
  169.     {
  170.         $nilai = 0;
  171.         for ($i = 0; $i < count($request->materi); $i++) {
  172.             DB::table('detail_materi_dosen')
  173.                 ->join('penilaian_dosen', 'detail_materi_dosen.penilaian_dosen_id', 'penilaian_dosen.id')
  174.                 ->join('praktikan', 'penilaian_dosen.praktikan_id', 'praktikan.id')
  175.                 ->join('mahasiswa', 'praktikan.mahasiswa_id', 'mahasiswa.id')
  176.                 ->join('periode_praktikum_dosen', 'penilaian_dosen.periode_praktikum_dosen_id', 'periode_praktikum_dosen.id')
  177.                 ->join('dosen_laboratorium', 'periode_praktikum_dosen.dosen_laboratorium_id', 'dosen_laboratorium.id')
  178.                 ->join('dosen', 'dosen_laboratorium.dosen_id', 'dosen.id')
  179.                 ->join('periode_praktikum', 'praktikan.periode_praktikum_id', 'periode_praktikum.id')
  180.                 ->join('praktikum', 'periode_praktikum.praktikum_id', 'praktikum.id')
  181.                 ->join('modul_materi_dosen', 'detail_materi_dosen.modul_materi_dosen_id', 'modul_materi_dosen.id')
  182.                 ->join('materi', 'modul_materi_dosen.materi_id', 'materi.id')
  183.                 ->where('praktikum.id', $request->idPraktikum)
  184.                 ->where('periode_praktikum.status', 1)
  185.                 ->where('dosen.nip', Auth::user()->username)
  186.                 ->where('mahasiswa.npm', $request->npm)
  187.                 ->where('modul_materi_dosen.modul_dosen_id', $request->idModul)
  188.                 ->where('modul_materi_dosen.materi_id', $request->materiId[$i])
  189.                 ->update(['detail_materi_dosen.nilai_materi' => $request->materi[$i]]);
  190.                 $nilai = $nilai + $request->materi[$i];
  191.         }
  192.         $nilai = $nilai;
  193.  
  194.         $banyakModul = DB::select('select count(*) as hitung from
  195.                        (SELECT modul_dosen_id from modul_materi_dosen
  196.                        JOIN materi on modul_materi_dosen.materi_id = materi.id
  197.                        JOIN praktikum on materi.praktikum_id = praktikum.id
  198.                        JOIN modul_dosen on modul_dosen.id = modul_materi_dosen.modul_dosen_id
  199.                        JOIN periode_praktikum on periode_praktikum.id = modul_dosen.periode_praktikum_id
  200.                        where periode_praktikum.praktikum_id ='.$request->idPraktikum.'
  201.                        and periode_praktikum.status = 1
  202.                        GROUP by modul_dosen_id)
  203.                        as hitung;');
  204.  
  205.         $idModulMateri = DB::table('modul_materi_dosen')
  206.             ->select('modul_materi_dosen.modul_dosen_id as idModul')
  207.             ->join('modul_dosen', 'modul_materi_dosen.modul_dosen_id', 'modul_dosen.id')
  208.             ->join('periode_praktikum', 'modul_dosen.periode_praktikum_id', 'periode_praktikum.id')
  209.             ->join('praktikum', 'periode_praktikum.praktikum_id', 'praktikum.id')
  210.             ->where('periode_praktikum.status', 1)
  211.             ->where('praktikum_id', $request->idPraktikum)
  212.             ->groupBy('idModul')
  213.             ->get();
  214.  
  215.         $na = array();
  216.         for ($i = 1; $i <= $banyakModul[0]->hitung; $i++) {
  217.             $avg = Penilaian_dosen::select(DB::raw('avg(detail_materi_dosen.nilai_materi) as rata_rata'))
  218.                 ->join('praktikan', 'penilaian_dosen.praktikan_id', 'praktikan.id')
  219.                 ->join('mahasiswa', 'praktikan.mahasiswa_id', 'mahasiswa.id')
  220.                 ->join('periode_praktikum_dosen', 'penilaian_dosen.periode_praktikum_dosen_id', 'periode_praktikum_dosen.id')
  221.                 ->join('dosen_laboratorium', 'periode_praktikum_dosen.dosen_laboratorium_id', 'dosen_laboratorium.id')
  222.                 ->join('dosen', 'dosen_laboratorium.dosen_id', 'dosen.id')
  223.                 ->join('detail_materi_dosen', 'penilaian_dosen.id', 'detail_materi_dosen.penilaian_dosen_id')
  224.                 ->join('modul_materi_dosen', 'detail_materi_dosen.modul_materi_dosen_id', 'modul_materi_dosen.id')
  225.                 ->join('periode_praktikum', 'praktikan.periode_praktikum_id', 'periode_praktikum.id')
  226.                 ->join('praktikum', 'periode_praktikum.praktikum_id', 'praktikum.id')
  227.                 ->where('dosen.nip', Auth::user()->username)
  228.                 ->where('mahasiswa.npm', $request->npm)
  229.                 ->where('praktikum.id', $request->idPraktikum)
  230.                 ->where('periode_praktikum.status', 1)
  231.                 ->where('modul_materi_dosen.modul_dosen_id', $idModulMateri[$i - 1]->idModul)
  232.                 ->first();
  233.  
  234.             if ($avg) {
  235.                 array_push($na, $avg->rata_rata);
  236.             } else {
  237.                 array_push($na, '0');
  238.             }
  239.         }
  240.         $total = 0;
  241.         for ($i = 0; $i <= count($na) - 1; $i++) {
  242.             $tmp[$i] = $na[$i];
  243.             $total = $total + $tmp[$i];
  244.         }
  245.         $hasil = $total / count($na);
  246.  
  247.         DB::table('penilaian_dosen')
  248.             ->where('penilaian_dosen.id', $request->idpenilaian)
  249.             ->update(['penilaian_dosen.nilai_akhir' => $hasil]);
  250.  
  251.         return response()->json(['status' => 200, 'nilai'=>number_format($nilai/count($request->materi),2)]);
  252.     }
  253. }
  254.  
RAW Paste Data