<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\KeanggotaanModel;
use App\Models\UserModel;
use Illuminate\Support\Str;

class KeanggotaanController extends Controller
{
    public function index()
    {
        $data = KeanggotaanModel::allKeanggotaan();
        return view('dashboard.keanggotaan.keanggotaan', ['data' => $data]);
    }

    public function detail($id)
    {
        $data = KeanggotaanModel::getKeanggotaanById($id);
        return view('dashboard.keanggotaan.detail', ['keanggotaan' => $data]);
    }

    public function store(Request $request)
    {
        $validatedData = $request->only([
            'kode_anggota',
            'nama_perusahaan',
            'notelp',
            'nofax',
            'alamat',
            'provinsi',
            'website',
            'informasi_tambahan',
            'jenis_perusahaan',
            'bpjs_ketenagakerjaan',
            'fasilitas_investasi',
            'bpjs_kesehatan',
            'serikat_pekerja',
            'periode_luaran_anggota',
            'status_perusahaan',
            'peraturan_kerja',
            'direksi1',
            'direksi2',
            'jenis_kelamin'
        ]);

        $ktp = $request->file('ktp');
        $filename = time() . '.' . $ktp->getClientOriginalExtension();
        $path = $request->file('ktp')->move(public_path('storage/galeri'), $filename);

        KeanggotaanModel::create([
            'kode_anggota' => $validatedData['kode_anggota'],
            'nama_perusahaan' => $validatedData['nama_perusahaan'],
            'notelp' => $validatedData['notelp'],
            'nofax' => $validatedData['nofax'],
            'alamat' => $validatedData['alamat'],
            'provinsi' => $validatedData['provinsi'],
            'website' => $validatedData['website'],
            'informasi_tambahan' => $validatedData['informasi_tambahan'],
            'jenis_perusahaan' => $validatedData['jenis_perusahaan'] ?? null,
            'bpjs_ketenagakerjaan' => $validatedData['bpjs_ketenagakerjaan'] ?? null,
            'fasilitas_investasi' => $validatedData['fasilitas_investasi'] ?? null,
            'bpjs_kesehatan' => $validatedData['bpjs_kesehatan'] ?? null,
            'serikat_pekerja' => $validatedData['serikat_pekerja'] ?? null,
            'periode_luaran_anggota' => $validatedData['periode_luaran_anggota'] ?? null,
            'status_perusahaan' => $validatedData['status_perusahaan'] ?? null,
            'peraturan_kerja' => $validatedData['peraturan_kerja'] ?? null,
            'direksi1' => $validatedData['direksi1'] ?? null,
            'direksi2' => $validatedData['direksi2'] ?? null,
            'jenis_kelamin' => $validatedData['jenis_kelamin'],
            'ktp' => $filename
        ]);

        return redirect()->route('keanggotaan')->with('success', 'Data keanggotaan berhasil ditambahkan');
    }


    public function trigger(Request $request)
    {
        $id = $request->input('id_keanggotaan');
        $status = $request->input('status');
        $keterangan = $request->input('keterangan') ?? null;

        if ($status == 'Disetujui') {
            $data = KeanggotaanModel::find($id);
            $username = strtolower(str_replace(' ', '', $data->nama_perusahaan));
            $password = Str::random(8);
            if (!UserModel::where('username', $username)->exists()) {
                $user = new UserModel();
                $user->name = $data->nama_perusahaan;
                $user->username = $username;
                $user->password = md5($password);
                $user->role = 'Pengguna';
                $user->save();
                KeanggotaanModel::where('id_keanggotaan', $id)->update(['password_default' => $password]);
            }
            KeanggotaanModel::where('id_keanggotaan', $id)->update(['status' => 'Disetujui']);
        } else {
            KeanggotaanModel::where('id_keanggotaan', $id)->update(['status' => 'Ditolak', 'keterangan' => $keterangan]);
        }

        return redirect()->route('keanggotaan')->with('success', 'Data keanggotaan berhasil diupdate');
    }
}
