<?php

namespace App\Http\Controllers;

use App\Models\Mahasiswa;
use App\Models\User;
use Illuminate\Http\Request;

class MahasiswaController extends Controller
{

public function index(){
    //Ambil Semua Data Mahasiswa
    $user = Mahasiswa::
    select(
        'mahasiswas.*',
        'user_dosen_dpu.nama_gelar as dosen_dpu_name',
        )
    ->join('users as user_dosen_dpu','mahasiswas.dosen_dpu_id','=','user_dosen_dpu.id')
    ->get();
    //Ambil Semua Data User Dengan Role Name DOSEN
    $dosen = User::role('Dosen')->get();
    return view('mahasiswa.index',['title'=> 'Manajemen Mahasiswa | Admin Dashboard','user'=> $user,'dosen' => $dosen]);
}

public function store(Request $request){
    $request->validate([
        'nim'=>'required|numeric',
        'nama'=>'required',
        'nomor_hp'=>'required|numeric',
        'email'=>'required|email',
        'judul_seminar_proposal'=>'required',
        'judul_skripsi_id'=>'required',
        'judul_skripsi_en'=>'required',
        'judul_jurnal'=>'required',
        'judul_artikel'=>'required',
        'bagian'=>'required|numeric',
        'dosen_dpu_id'=>'required|numeric',
        'dosen_dpa_id'=>'required|numeric',
        'dosen_penguji1_id'=>'required|numeric',
        'dosen_penguji2_id'=>'required|numeric',
    ],[
        'nim.required'=>'NIP Wajib Diisi',
        'nim.numeric'=>'NIM Wajib Berisi Angka saja',
        'nomor_hp.numeric'=>'Nomor HP Wajib Menggunakan Angka, Contoh 089xxxxx',
        'email.email'=>'Format email tidak sesuai, cek lagi email anda, Contoh mahasiswa@mail.com/ mahasiswa@mail.unej.ac.id',
        'dosen_dpu_id.numeric'=>'Dosen Pembimbing tidak valid, cek kembali Dosen Pembimbing yang dipilih',
        'dosen_dpa_id.numeric'=>'Dosen Pembimbing tidak valid, cek kembali Dosen Pembimbing yang dipilih',
        'dosen_penguji1_id.numeric'=>'Dosen Penguji tidak valid, cek kembali Dosen Penguji yang dipilih',
        'dosen_penguji2_id.numeric'=>'Dosen Penguji tidak valid, cek kembali Dosen Penguji yang dipilih',
    ]);
    $mahasiswa = new Mahasiswa;
    $mahasiswa->nim = $request->nim;
    $mahasiswa->nama = $request->nama;
    $mahasiswa->nomor_hp = $request->nomor_hp;
    $mahasiswa->email = $request->email;
    $mahasiswa->bagian = $request->bagian;
    $mahasiswa->dosen_dpu_id = $request->dosen_dpu_id;
    $mahasiswa->dosen_dpa_id = $request->dosen_dpa_id;
    $mahasiswa->dosen_penguji1_id = $request->dosen_penguji1_id;
    $mahasiswa->dosen_penguji2_id = $request->dosen_penguji2_id;
    $mahasiswa->judul_seminar_proposal = $request->judul_seminar_proposal;
    $mahasiswa->judul_skripsi_id = $request->judul_skripsi_id;
    $mahasiswa->judul_skripsi_en= $request->judul_skripsi_en;
    $mahasiswa->judul_jurnal = $request->judul_jurnal;
    $mahasiswa->judul_artikel = $request->judul_artikel;
    
    if($mahasiswa->save()){
    return redirect()->route('mahasiswa.index')->with('success','Data Telah Berhasil Disimpan');
    }
    return back()->withInput();
}

public function update(Request $request){
    $request->validate([
        'nim'=>'required|numeric',
        'nama'=>'required',
        'nomor_hp'=>'required|numeric',
        'email'=>'required|email',
        'judul_seminar_proposal'=>'required',
        'judul_skripsi_id'=>'required',
        'judul_skripsi_en'=>'required',
        'judul_jurnal'=>'required',
        'judul_artikel'=>'required',
        'bagian'=>'required|numeric',
        'dosen_dpu_id'=>'required|numeric',
        'dosen_dpa_id'=>'required|numeric',
        // 'dosen_penguji1_id'=>'required|numeric',
        // 'dosen_penguji2_id'=>'required|numeric',
    ],[
        'nim.required'=>'NIP Wajib Diisi',
        'nim.numeric'=>'NIM Wajib Berisi Angka saja',
        'nomor_hp.numeric'=>'Nomor HP Wajib Menggunakan Angka, Contoh 089xxxxx',
        'email.email'=>'Format email tidak sesuai, cek lagi email anda, Contoh mahasiswa@mail.com/ mahasiswa@mail.unej.ac.id',
        'dosen_dpu_id.numeric'=>'Dosen Pembimbing tidak valid, cek kembali Dosen Pembimbing yang dipilih',
        'dosen_dpa_id.numeric'=>'Dosen Pembimbing tidak valid, cek kembali Dosen Pembimbing yang dipilih',
        // 'dosen_penguji1_id.numeric'=>'Dosen Penguji tidak valid, cek kembali Dosen Penguji yang dipilih',
        // 'dosen_penguji2_id.numeric'=>'Dosen Penguji tidak valid, cek kembali Dosen Penguji yang dipilih',
    ]);
    $mahasiswa = Mahasiswa::find($request->id);
    $mahasiswa->nim = $request->nim;
    $mahasiswa->nama = $request->nama;
    $mahasiswa->nomor_hp = $request->nomor_hp;
    $mahasiswa->email = $request->email;
    $mahasiswa->bagian = $request->bagian;
    $mahasiswa->dosen_dpu_id = $request->dosen_dpu_id;
    $mahasiswa->dosen_dpa_id = $request->dosen_dpa_id;
    $mahasiswa->judul_seminar_proposal = $request->judul_seminar_proposal;
    $mahasiswa->judul_skripsi_id = $request->judul_skripsi_id;
    $mahasiswa->judul_skripsi_en= $request->judul_skripsi_en;
    $mahasiswa->judul_jurnal = $request->judul_jurnal;
    $mahasiswa->judul_artikel = $request->judul_artikel;
    
    //jika penguji kosong, maka save ini

    if($request->dosen_penguji1_id == "Pilih Dosen Penguji Utama" && $request->dosen_penguji2_id == "Pilih Dosen Penguji Anggota"){
        $mahasiswa->dosen_penguji1_id = 1;
        $mahasiswa->dosen_penguji2_id = 1;
        if($mahasiswa->save()){
            return redirect()->route('mahasiswa.index')->with('success','Data Telah Berhasil Disimpan');
        }
    }
    //jika penguji diisi maka save ini
    $mahasiswa->dosen_penguji1_id = $request->dosen_penguji1_id;
    $mahasiswa->dosen_penguji2_id = $request->dosen_penguji2_id;
    if($mahasiswa->save()){
        return redirect()->route('mahasiswa.index')->with('success','Data Telah Berhasil Disimpan');
    }
    
    return back()->withInput();
}

public function destroy(Request $request){
    $mahasiswa = Mahasiswa::findOrFail($request->id);
    if($mahasiswa->delete()){
        return redirect()->route('mahasiswa.index')->with('success','Data Telah Dihapus');
    }
    return redirect()->route('mahasiswa.index')->with('error','Data Gagal Dihapus');
}

}
