<?php

namespace App\Http\Controllers;

use App\Proposal;
use Illuminate\Http\Request;

class PenelitianController extends Controller
{
    //Controller Halaman Judul Penelitian
    public function judul()
    {
        if (\Auth::guard('dosen')->check()) {
            $data['objek']         =  new \App\Judulpenelitian();
            $data['action']     = 'PenelitianController@simpanJudul';
            $data['method']     = 'POST';
            $data['proposal'] = \App\Judulpenelitian::whereDosenId(\Auth::guard('dosen')->user()->id)->get();
            return view('dosen.beranda.judulpenelitian', $data);
        } else {
            return redirect('form-login');
        }
    }
    public function simpanJudul(Request $request)
    {
        $request->validate{
            [
                'judul'     => 'required',
                'file'     => 'required|file|mimes:doc,docx,pdf'
            ]};


        $dosen_id = \Auth::guard('dosen')->user()->id;

        $datadosen = \App\Dosen::whereId($dosen_id)->first();

        $ambildatajadwal = \App\Jadwal::findOrFail($datadosen->jadwal_id);
        // dd($ambildatajadwal->tgl_daftar_buka);
        $tanggalsekarang = \Carbon\Carbon::now()->format('Y-m-d');
        // dd($tanggalsekarang);

        if (\App\Judulpenelitian::where('jadwal_id', '=', $datadosen->jadwal_id)->whereIn('statusjudul_id', [1,2,3,4])->exists()) {
            return back()->with('pesan2', 'Maaf, Data yang ingin dimasukkan di Jadwal Penelitian sekarang sudah ada');
        }
        else{
            if (isset($datadosen->jadwal_id)) {
                if ($tanggalsekarang < $ambildatajadwal->tgl_daftar_buka || $tanggalsekarang > $ambildatajadwal->tgl_daftar_tutup) {
                    // dd('ini sebelum tanggal dibuka dan setelah tanggal ditutup');
                    return back()->with('pesan2', 'Maaf, Bukan Jadwal Untuk Mengumpulkan Judul Penelitian Baru');
                } else {
                    // dd('Tanggal nya berada diantara jadwal yang dipakai');
                    $file = $request->file->store('public/' . $dosen_id . '/JudulPenelitian');
    
                    $syarat = new \App\Judulpenelitian();
                    $syarat->dosen_id = $dosen_id;
                    $syarat->judul = $request->judul;
                    $syarat->file = $file;
                    $syarat->jadwal_id = $datadosen->jadwal_id;
                    $syarat->statusjudul_id = 1;
                    $syarat->save();
    
                    return back()->with('pesan1', 'Data berhasil Disimpan');
                }
            } else {
                return back()->with('pesan2', 'Maaf, Anda Belum ada Jadwal Untuk Melakukan penelitian. Hubungi Admin segera !');
            }
        }
        
    }

    public function hapusJudul($id)
    {
        $syarat = \App\Judulpenelitian::findOrFail($id);
        \Storage::delete($syarat->file);
        $syarat->delete();
        return back()->with('pesan2', 'Data Telah di Hapus');
    }

    //Controller Dosen Proposal
    public function proposal()
    {
        if (\Auth::guard('dosen')->check()) {
            $dosen = \Auth::guard('dosen')->user()->id;
            $datadosen = \App\Dosen::whereId($dosen)->first();
            $judul = \App\Judulpenelitian::whereDosenId($dosen)->whereJadwalId($datadosen->jadwal_id)->first();
            // dd($judul);

            $data['objek']         =  new \App\Proposal();
            $data['action']     = 'PenelitianController@simpanProposal';
            $data['method']     = 'POST';
            $data['judul']      = $judul;
            $data['proposal'] = \App\Proposal::whereDosenId(\Auth::guard('dosen')->user()->id)->get();
            return view('dosen.beranda.proposal', $data);
        } else {
            return redirect('form-login');
        }
    }

    public function simpanProposal(Request $request)
    {
        $request->validate{
            [
                'jenispenelitian_id'     => 'required',
                'sumber_dana'     => 'required',
                'total_dana'     => 'required',
                'waktu'     => 'required',
                'file'     => 'required|file|mimes:mimes,pdf'
            ]};
        $dosen_id = \Auth::guard('dosen')->user()->id;

        $datadosen = \App\Dosen::whereId($dosen_id)->first();

        $ambildatajadwal = \App\Jadwal::findOrFail($datadosen->jadwal_id);
        // dd($ambildatajadwal->tgl_daftar_buka);
        $tanggalsekarang = \Carbon\Carbon::now()->format('Y-m-d');

        if (\App\Proposal::where('jenispenelitian_id', '=', $request->jenispenelitian_id)->where('jadwal_id', '=', $datadosen->jadwal_id)->exists()) {
            return back()->with('pesan2', 'Maaf, Data yang ingin dimasukkan sudah ada');
        } else {
            // dd($request->jenispenelitian_id);
            if (isset($datadosen->jadwal_id)) {
                if ($request->jenispenelitian_id == 1) {
                    // dd('ini jenis penelitian ny 1');

                    if (isset($request->sumber_dana)) {
                        // print_r($request->sumber_dana);
                        // die();
                        //ini ada isi
                        $sumberdana = $request->sumber_dana;
                    } else {
                        // print_r('Mandiri');
                        // die();
                        $sumberdana = 'Mandiri';
                        //ini kosong sumber dana ny alias mandiri
                    }

                    if ($tanggalsekarang < $ambildatajadwal->tgl_pengumpulandata_buka || $tanggalsekarang > $ambildatajadwal->tgl_pengumpulandata_tutup) {
                        // dd('ini sebelum tanggal dibuka dan setelah tanggal ditutup');
                        return back()->with('pesan2', 'Maaf, Bukan Jadwal Untuk Mengumpulkan Proposal Pengumpulan Data');
                    } else {
                        // dd('Tanggal nya berada diantara jadwal yang dipakai');
                        // return back()->with('pesan', 'Data berhasil Disimpan');
                        $file = $request->file->store('public/' . $dosen_id);

                        $syarat = new \App\Proposal();
                        $syarat->dosen_id = $dosen_id;
                        $syarat->jenispenelitian_id = $request->jenispenelitian_id;
                        $syarat->sumber_dana = $sumberdana;
                        $syarat->total_dana = $request->total_dana;
                        $syarat->file = $file;
                        $syarat->waktu = $request->waktu;
                        $syarat->jadwal_id = $datadosen->jadwal_id;
                        $syarat->statusjudul_id = '3';
                        $syarat->save();

                        return back()->with('pesan1', 'Data berhasil Disimpan');
                    }
                } elseif ($request->jenispenelitian_id == 2) {
                    // dd('ini jenis penelitian ny 2');


                    if (isset($request->sumber_dana)) {
                        // print_r($request->sumber_dana);
                        // die();
                        //ini ada isi
                        $sumberdana = $request->sumber_dana;
                    } else {
                        // print_r('Mandiri');
                        // die();
                        $sumberdana = 'Mandiri';
                        //ini kosong sumber dana ny alias mandiri
                    }

                    if ($tanggalsekarang < $ambildatajadwal->tgl_penulisanhasil_buka || $tanggalsekarang > $ambildatajadwal->tgl_penulisanhasil_tutup) {
                        // dd('ini sebelum tanggal dibuka dan setelah tanggal ditutup');
                        return back()->with('pesan2', 'Maaf, Bukan Jadwal Untuk Mengumpulkan Proposal Penulisan Hasil penelitian');
                    } else {
                        // dd('Tanggal nya berada diantara jadwal yang dipakai');
                        // return back()->with('pesan', 'Data berhasil Disimpan');
                        $file = $request->file->store('public/' . $dosen_id);

                        $syarat = new \App\Proposal();
                        $syarat->dosen_id = $dosen_id;
                        $syarat->jenispenelitian_id = $request->jenispenelitian_id;
                        $syarat->sumber_dana = $sumberdana;
                        $syarat->total_dana = $request->total_dana;
                        $syarat->file = $file;
                        $syarat->waktu = $request->waktu;
                        $syarat->jadwal_id = $datadosen->jadwal_id;
                        $syarat->statusjudul_id = '3';
                        $syarat->save();

                        return back()->with('pesan1', 'Data berhasil Disimpan');
                    }
                } elseif ($request->jenispenelitian_id == 3) {
                    // dd('ini jenis penelitian ny 3');

                    if (isset($request->sumber_dana)) {
                        // print_r($request->sumber_dana);
                        // die();
                        //ini ada isi
                        $sumberdana = $request->sumber_dana;
                    } else {
                        // print_r('Mandiri');
                        // die();
                        $sumberdana = 'Mandiri';
                        //ini kosong sumber dana ny alias mandiri
                    }

                    if ($tanggalsekarang < $ambildatajadwal->tgl_desiminasi_buka || $tanggalsekarang > $ambildatajadwal->tgl_desiminasi_tutup) {
                        // dd('ini sebelum tanggal dibuka dan setelah tanggal ditutup');
                        return back()->with('pesan2', 'Maaf, Bukan Jadwal Untuk Mengumpulkan Proposal Desiminasi');
                    } else {
                        // dd('Tanggal nya berada diantara jadwal yang dipakai');
                        // return back()->with('pesan', 'Data berhasil Disimpan');
                        $file = $request->file->store('public/' . $dosen_id);

                        $syarat = new \App\Proposal();
                        $syarat->dosen_id = $dosen_id;
                        $syarat->jenispenelitian_id = $request->jenispenelitian_id;
                        $syarat->sumber_dana = $sumberdana;
                        $syarat->total_dana = $request->total_dana;
                        $syarat->file = $file;
                        $syarat->waktu = $request->waktu;
                        $syarat->jadwal_id = $datadosen->jadwal_id;
                        $syarat->statusjudul_id = '3';
                        $syarat->save();

                        return back()->with('pesan1', 'Data berhasil Disimpan');
                    }
                } elseif ($request->jenispenelitian_id == 4) {
                    // dd('ini jenis penelitian ny 4');

                    if (isset($request->sumber_dana)) {
                        // print_r($request->sumber_dana);
                        // die();
                        //ini ada isi
                        $sumberdana = $request->sumber_dana;
                    } else {
                        // print_r('Mandiri');
                        // die();
                        $sumberdana = 'Mandiri';
                        //ini kosong sumber dana ny alias mandiri
                    }

                    if ($tanggalsekarang < $ambildatajadwal->tgl_publikasi_buka || $tanggalsekarang > $ambildatajadwal->tgl_publikasi_tutup) {
                        // dd('ini sebelum tanggal dibuka dan setelah tanggal ditutup');
                        return back()->with('pesan2', 'Maaf, Bukan Jadwal Untuk Mengumpulkan Proposal Publikasi');
                    } else {
                        // dd('Tanggal nya berada diantara jadwal yang dipakai');
                        // return back()->with('pesan', 'Data berhasil Disimpan');
                        $file = $request->file->store('public/' . $dosen_id);

                        $syarat = new \App\Proposal();
                        $syarat->dosen_id = $dosen_id;
                        $syarat->jenispenelitian_id = $request->jenispenelitian_id;
                        $syarat->sumber_dana = $sumberdana;
                        $syarat->total_dana = $request->total_dana;
                        $syarat->file = $file;
                        $syarat->waktu = $request->waktu;
                        $syarat->jadwal_id = $datadosen->jadwal_id;
                        $syarat->statusjudul_id = '3';
                        $syarat->save();

                        return back()->with('pesan1', 'Data berhasil Disimpan');
                    }
                }
            } else {
                return back()->with('pesan2', 'Maaf, Anda Belum ada Jadwal Untuk Melakukan penelitian. Hubungi Admin segera !');
            }
        }
    }

    public function hapusProposal($id)
    {
        $syarat = \App\Proposal::findOrFail($id);
        \Storage::delete($syarat->file);
        $syarat->delete();
        return back()->with('pesan2', 'Data Telah di Hapus');
    }

    //Controller Dosen Laporan
    public function laporan()
    {
        if (\Auth::guard('dosen')->check()) {
            $dosen = \Auth::guard('dosen')->user()->id;
            $datadosen = \App\Dosen::whereId($dosen)->first();
            $judul = \App\Judulpenelitian::whereDosenId($dosen)->whereJadwalId($datadosen->jadwal_id)->first();
            $data['objek']         =  new \App\Laporan();
            $data['action']     = 'PenelitianController@simpanLaporan';
            $data['method']     = 'POST';
            $data['judul']      = $judul;
            $data['proposal'] = \App\Laporan::whereDosenId(\Auth::guard('dosen')->user()->id)->get();
            return view('dosen.beranda.laporan', $data);
        } else {
            return redirect('form-login');
        }
    }

    public function simpanLaporan(Request $request)
    {
        $request->validate{
            [
                'jenispenelitian_id'     => 'required',
                'link_publikasi'     => 'nullable',
                // 'pendanaan_id'     => 'required',
                'file'     => 'nullable|file|mimes:mimes,pdf'
            ]};


        $dosen_id = \Auth::guard('dosen')->user()->id;

        $datadosen = \App\Dosen::whereId($dosen_id)->first();

        $ambildatajadwal = \App\Jadwal::findOrFail($datadosen->jadwal_id);
        // dd($ambildatajadwal->tgl_daftar_buka);
        $tanggalsekarang = \Carbon\Carbon::now()->format('Y-m-d');

        if (\App\Proposal::where('jenispenelitian_id', '=', $request->jenispenelitian_id)->where('jadwal_id', '=', $datadosen->jadwal_id)->exists()) {
            return back()->with('pesan2', 'Maaf, Data yang ingin dimasukkan sudah ada');
        } else {
            if ($request->jenispenelitian_id == 1) {
                // dd('ini jenis penelitian ny 1');
                if (isset($datadosen->jadwal_id)) {
                    if ($tanggalsekarang < $ambildatajadwal->tgl_pengumpulandata_buka || $tanggalsekarang > $ambildatajadwal->tgl_pengumpulandata_tutup) {
                        // dd('ini sebelum tanggal dibuka dan setelah tanggal ditutup');
                        return back()->with('pesan2', 'Maaf, Bukan Jadwal Untuk Mengumpulkan Laporan Pengumpulan Data');
                    } else {
                        // dd('Tanggal nya berada diantara jadwal yang dipakai');
                        if (isset($request->file)) {
                            $file = $request->file->store('public/Data-Laporan-' . $dosen_id);

                            $syarat = new \App\Laporan();
                            $syarat->dosen_id = $dosen_id;
                            $syarat->jenispenelitian_id = $request->jenispenelitian_id;
                            // $syarat->link_publikasi = $request->link_publikasi;
                            $syarat->file = $file;
                            $syarat->jadwal_id = $datadosen->jadwal_id;
                            $syarat->status = 'Process';
                            $syarat->save();

                            return back()->with('pesan1', 'Data berhasil Disimpan');
                        } else {
                            // $file = $request->file->store('public/Data-Laporan-' . $dosen_id);

                            $syarat = new \App\Laporan();
                            $syarat->dosen_id = $dosen_id;
                            $syarat->jenispenelitian_id = $request->jenispenelitian_id;
                            $syarat->link_publikasi = $request->link_publikasi;
                            $syarat->jadwal_id = $datadosen->jadwal_id;
                            // $syarat->file = $file;
                            $syarat->status = 'Process';
                            $syarat->save();

                            return back()->with('pesan1', 'Data berhasil Disimpan');
                        }
                    }
                } else {
                    return back()->with('pesan2', 'Maaf, Anda Belum ada Jadwal Untuk Melakukan penelitian. Hubungi Admin segera !');
                }
            } elseif ($request->jenispenelitian_id == 2) {
                // dd('ini jenis penelitian ny 2');
                if (isset($datadosen->jadwal_id)) {
                    if ($tanggalsekarang < $ambildatajadwal->tgl_penulisanhasil_buka || $tanggalsekarang > $ambildatajadwal->tgl_penulisanhasil_tutup) {
                        // dd('ini sebelum tanggal dibuka dan setelah tanggal ditutup');
                        return back()->with('pesan2', 'Maaf, Bukan Jadwal Untuk Mengumpulkan Laporan Penulisan Hasil Penelitian');
                    } else {
                        // dd('Tanggal nya berada diantara jadwal yang dipakai');
                        if (isset($request->file)) {
                            $file = $request->file->store('public/Data-Laporan-' . $dosen_id);

                            $syarat = new \App\Laporan();
                            $syarat->dosen_id = $dosen_id;
                            $syarat->jenispenelitian_id = $request->jenispenelitian_id;
                            $syarat->jadwal_id = $datadosen->jadwal_id;
                            // $syarat->link_publikasi = $request->link_publikasi;
                            $syarat->file = $file;
                            $syarat->status = 'Process';
                            $syarat->save();

                            return back()->with('pesan1', 'Data berhasil Disimpan');
                        } else {
                            // $file = $request->file->store('public/Data-Laporan-' . $dosen_id);

                            $syarat = new \App\Laporan();
                            $syarat->dosen_id = $dosen_id;
                            $syarat->jenispenelitian_id = $request->jenispenelitian_id;
                            $syarat->link_publikasi = $request->link_publikasi;
                            $syarat->jadwal_id = $datadosen->jadwal_id;
                            // $syarat->file = $file;
                            $syarat->status = 'Process';
                            $syarat->save();

                            return back()->with('pesan1', 'Data berhasil Disimpan');
                        }
                    }
                } else {
                    return back()->with('pesan2', 'Maaf, Anda Belum ada Jadwal Untuk Melakukan penelitian. Hubungi Admin segera !');
                }
            } elseif ($request->jenispenelitian_id == 3) {
                // dd('ini jenis penelitian ny 3');

                if (isset($datadosen->jadwal_id)) {
                    if ($tanggalsekarang < $ambildatajadwal->tgl_desiminasi_buka || $tanggalsekarang > $ambildatajadwal->tgl_desiminasi_tutup) {
                        // dd('ini sebelum tanggal dibuka dan setelah tanggal ditutup');
                        return back()->with('pesan2', 'Maaf, Bukan Jadwal Untuk Mengumpulkan Laporan Desiminasi Penelitian');
                    } else {
                        // dd('Tanggal nya berada diantara jadwal yang dipakai');
                        if (isset($request->file)) {
                            $file = $request->file->store('public/Data-Laporan-' . $dosen_id);

                            $syarat = new \App\Laporan();
                            $syarat->dosen_id = $dosen_id;
                            $syarat->jenispenelitian_id = $request->jenispenelitian_id;
                            $syarat->jadwal_id = $datadosen->jadwal_id;
                            // $syarat->link_publikasi = $request->link_publikasi;
                            $syarat->file = $file;
                            $syarat->status = 'Process';
                            $syarat->save();

                            return back()->with('pesan1', 'Data berhasil Disimpan');
                        } else {
                            // $file = $request->file->store('public/Data-Laporan-' . $dosen_id);

                            $syarat = new \App\Laporan();
                            $syarat->dosen_id = $dosen_id;
                            $syarat->jenispenelitian_id = $request->jenispenelitian_id;
                            $syarat->link_publikasi = $request->link_publikasi;
                            $syarat->jadwal_id = $datadosen->jadwal_id;
                            // $syarat->file = $file;
                            $syarat->status = 'Process';
                            $syarat->save();

                            return back()->with('pesan1', 'Data berhasil Disimpan');
                        }
                    }
                } else {
                    return back()->with('pesan2', 'Maaf, Anda Belum ada Jadwal Untuk Melakukan penelitian. Hubungi Admin segera !');
                }
            } elseif ($request->jenispenelitian_id == 4) {
                // dd('ini jenis penelitian ny 4');

                if (isset($datadosen->jadwal_id)) {
                    if ($tanggalsekarang < $ambildatajadwal->tgl_publikasi_buka || $tanggalsekarang > $ambildatajadwal->tgl_publikasi_tutup) {
                        // dd('ini sebelum tanggal dibuka dan setelah tanggal ditutup');
                        return back()->with('pesan2', 'Maaf, Bukan Jadwal Untuk Mengumpulkan Laporan Publikasi Penelitian');
                    } else {
                        // dd('Tanggal nya berada diantara jadwal yang dipakai');
                        if (isset($request->file)) {
                            $file = $request->file->store('public/Data-Laporan-' . $dosen_id);

                            $syarat = new \App\Laporan();
                            $syarat->dosen_id = $dosen_id;
                            $syarat->jenispenelitian_id = $request->jenispenelitian_id;
                            $syarat->jadwal_id = $datadosen->jadwal_id;
                            // $syarat->link_publikasi = $request->link_publikasi;
                            $syarat->file = $file;
                            $syarat->status = 'Process';
                            $syarat->save();

                            return back()->with('pesan1', 'Data berhasil Disimpan');
                        } else {
                            // $file = $request->file->store('public/Data-Laporan-' . $dosen_id);

                            $syarat = new \App\Laporan();
                            $syarat->dosen_id = $dosen_id;
                            $syarat->jenispenelitian_id = $request->jenispenelitian_id;
                            $syarat->link_publikasi = $request->link_publikasi;
                            $syarat->jadwal_id = $datadosen->jadwal_id;
                            // $syarat->file = $file;
                            $syarat->status = 'Process';
                            $syarat->save();

                            return back()->with('pesan1', 'Data berhasil Disimpan');
                        }
                    }
                } else {
                    return back()->with('pesan2', 'Maaf, Anda Belum ada Jadwal Untuk Melakukan penelitian. Hubungi Admin segera !');
                }
            }
        }
    }

    public function hapusLaporan($id)
    {
        $syarat = \App\Laporan::findOrFail($id);
        \Storage::delete($syarat->file);
        $syarat->delete();
        return back()->with('pesan', 'Data Telah di Hapus');
    }
}
