DirektoriController.php 8.43 KB
<?php

namespace App\Http\Controllers;

use App\Models\UsulanDiklat;
use App\Models\Direktori;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;

class DirektoriController extends Controller
{
    // Display paginated usulan diklat data
    public function index(Request $request)
    {
        // Fetch usulan diklat data with pagination
        $search = $request->input('search');
        $usulan_laporan_diklat = Direktori::when($search, function ($query, $search) {
            return $query->where('nama_penulis', 'like', "%{$search}%");
        })->paginate(10);
        return view('umum3.direktori', compact('usulan_laporan_diklat'));
    }

    // Show form to create new usulan diklat
    public function create()
    {
        return view('umum3.createdirektori');
    }

    // Store new usulan diklat data
    public function store(Request $request)
    {
        // Validate input and files
        $request->validate([
            'nip' => 'required',
            'nama_penulis' => 'required',
            'jabatan' => 'required',
            'golongan' => 'required',
            'unit_kerja' => 'required',
            'jenis_pelatihan' => 'required',
            'nama_pelatihan' => 'required',
            'tempat pelaksanaan' => 'required',
            'tahun_pelatihan' => 'required|numeric',
            'pelaksanaan' => 'required',
            'mode_pelatihan' => 'required',
            'waktu_pelaksanaan' => 'required',
            'judul_laporan' => 'required',
            'latar_belakang' => 'required',
            'link_katalog' => 'nullable|url',
            'unggah_laporan' => 'nullable|mimes:pdf,doc,docx|max:2048',
        ]);

        // Create a new instance of UsulanDiklat model
        $usulan_laporan_diklat = new Direktori();
        $usulan_laporan_diklat->nip = $request->nip;
        $usulan_laporan_diklat->nama_penulis = $request->nama_penulis;
        $usulan_laporan_diklat->jabatan = $request->jabatan;
        $usulan_laporan_diklat->golongan = $request->golongan;
        $usulan_laporan_diklat->unit_kerja = $request->unit_kerja;
        $usulan_laporan_diklat->jenis_pelatihan = $request->jenis_pelatihan;
        $usulan_laporan_diklat->nama_pelatihan = $request->nama_pelatihan;
        $usulan_laporan_diklat->tahun_pelatihan = $request->tahun_pelatihan;
        $usulan_laporan_diklat->tempat_pelaksanaan = $request->tempat_pelaksanaan;
        $usulan_laporan_diklat->pelaksanaan = $request->pelaksanaan;
        $usulan_laporan_diklat->mode_pelatihan = $request->mode_pelatihan;
        $usulan_laporan_diklat->waktu_pelaksanaan = $request->waktu_pelaksanaan;
        $usulan_laporan_diklat->judul_laporan = $request->judul_laporan;
        $usulan_laporan_diklat->latar_belakang = $request->latar_belakang;
        $usulan_laporan_diklat->link_katalog = $request->link_katalog;
        $usulan_laporan_diklat->latar_belakang = $request->latar_belakang;

        

        // Process file upload for report (PDF, DOC, DOCX)
        if ($request->hasFile('unggah_laporan')) {
            $file = $request->file('unggah_laporan');
            $fileName = time() . '_' . $file->getClientOriginalName();
            $file->move(public_path('uploads/reports'), $fileName);
            $usulan_laporan_diklat->unggah_laporan = 'uploads/reports/' . $fileName;
        }

        // Save data to the database
        $usulan_laporan_diklat->save();

        // Redirect with success message
        return redirect()->route('umum3.direkotri')->with('success', 'Usulan diklat berhasil ditambahkan.');
    }

    // Show form to edit existing usulan diklat data
    // public function edit($id)
    // {
    //     $diklat = UsulanDiklat::findOrFail($id);
    //     return view('brosur.editusulan', compact('diklat'));
    // }

    // Update existing usulan diklat data in the database
    // public function update(Request $request, $id)
    // {
    //     // Validate input and files
    //     $request->validate([
    //         'nip' => 'required',
    //         'nama_penulis' => 'required',
    //         'jabatan' => 'required',
    //         'golongan' => 'required',
    //         'unit_kerja' => 'required',
    //         'jenis_pelatihan' => 'required',
    //         'nama_pelatihan' => 'required',
    //         'tahun_pelatihan' => 'required|digits:4|year|min:1901|max:2154',
    //         'pelaksanaan' => 'required',
    //         'mode_pelatihan' => 'required',
    //         'waktu_pelaksanaan' => 'required',
    //         'judul_laporan' => 'required',
    //         'latar_belakang' => 'required',
    //         'unggah_laporan' => 'nullable|mimes:pdf,doc,docx|max:2048',
    //     ], [
    //         'tahun_pelatihan.digits' => 'Tahun pelatihan harus berupa angka 4 digit.',
    //         'unggah_laporan.mimes' => 'Laporan harus dalam format PDF, DOC, atau DOCX.',
    //         'unggah_laporan.max' => 'Ukuran file laporan maksimal 2MB.',
    //     ]);
        

    //     // Find usulan diklat by ID
    //     $usulan_laporan_diklat = Direktori::findOrFail($id);

    //     // Update data fields
        
    //     $usulan_laporan_diklat->nip = $request->nip;
    //     $usulan_laporan_diklat->nama_penulis = $request->nama_penulis;
    //     $usulan_laporan_diklat->jabatan = $request->jabatan;
    //     $usulan_laporan_diklat->golongan = $request->golongan;
    //     $usulan_laporan_diklat->unit_kerja = $request->unit_kerja;
    //     $usulan_laporan_diklat->jenis_pelatihan = $request->jenis_pelatihan;
    //     $usulan_laporan_diklat->nama_pelatihan = $request->nama_pelatihan;
    //     $usulan_laporan_diklat->tahun_pelatihan = $request->tahun_pelatihan;
    //     $usulan_laporan_diklat->pelaksanaan = $request->pelaksanaan;
    //     $usulan_laporan_diklat->mode_pelatihan = $request->mode_pelatihan;
    //     $usulan_laporan_diklat->waktu_pelaksanaan = $request->waktu_pelaksanaan;
    //     $usulan_laporan_diklat->judul_laporan = $request->judul_laporan;
    //     $usulan_laporan_diklat->latar_belakang = $request->latar_belakang;

    //     // Process file upload for report (PDF, DOC, DOCX), replacing old file if present
    //     // if ($request->hasFile('unggah_laporan')) {
    //     //     // Delete old file if it exists
    //     //     if ($usulan_laporan_diklat->unggah_laporan && file_exists(public_path($usulan_laporan_diklat->unggah_laporan))) {
    //     //         unlink(public_path($usulan_laporan_diklat->unggah_laporan));
    //     //     }
    //     //     usulan_laporan_diklat
    //     //     // Save new file
    //     //     $file = $request->file('unggah_laporan');
    //     //     $fileName = time() . '_' . $file->getClientOriginalName();
    //     //     $file->move(public_path('uploads/reports'), $fileName);
    //     //     $usulan_laporan_diklat->unggah_laporan = 'uploads/reports/' . $fileName;
    //     // }
    //     if ($request->hasFile('unggah_laporan')) {
    //         $file = $request->file('unggah_laporan');
    //         \Log::info('File uploaded: ' . $file->getClientOriginalName());
        
    //         // Hapus file lama jika ada
    //         if ($usulan_laporan_diklat->unggah_laporan) {
    //             Storage::delete($usulan_laporan_diklat->unggah_laporan);
    //         }
        
    //         // Simpan file baru
    //         $fileName = time() . '_' . $file->getClientOriginalName();
    //         $file->move(public_path('uploads/reports'), $fileName);
    //         $usulan_laporan_diklat->unggah_laporan = 'uploads/reports/' . $fileName;
    //     }
        

    //     // Save updates to the database
    //     $usulan_laporan_diklat->save();

    //     // Redirect with success message
    //     return redirect()->route('laporan.usulan')->with('success', 'Usulan diklat berhasil diperbarui.');
    // }

    // public function edit($id)
    // {
    //     $usulan_laporan_diklat = Direktori::findOrFail($id);
    //     return view('laporan.editusulan', compact('usulan_laporan_diklat'));
    // }
    // // Delete existing usulan diklat data
    // public function destroys($id)
    // {
    //     $diklat = Direktori::findOrFail($id);
    //     $diklat->delete();
    //     return redirect()->route('laporan.usulan')->with('success', 'Usulan diklat berhasil dihapus.');
    // }
    public function view($id)
    {
        // Retrieve the Diklat entry by its ID
        $usulan_laporan_diklat = Direktori::findOrFail($id);

        // Pass the Diklat data to the viewdiklat view
        return view('umum3.viewdirektori', compact('usulan_laporan_diklat'));
    }   
    
}