<?php

namespace App\Http\Controllers;

use App\Models\data_distrik_deswita;
use App\Models\data_pribadi_deswita;
use Illuminate\Http\Request;
use App\Models\data_deswita;
use App\Http\Requests\Storedata_deswitaRequest;
use App\Http\Requests\Updatedata_deswitaRequest;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\DB;

class DataDeswitaController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function savedatadeswita(Request $request)
    {
        $rules = [
            'nip' => 'required|integer',
            'nama_lengkap' => 'required',
            'pangkat' => 'required',
            'jabatan' => 'required',
            'instansi' => 'required',
            'kabupaten' => 'required',
            'phone_number' => 'required|string',
            'pesan' => 'required',
            'alamat' => 'required',
            'nama_distrik' => 'required',
            'jumlah_kampung' => 'required|integer',
            'jumlah_penduduk' => 'required|integer',
            'pendidikan' => 'required',
            'atraksi' => 'required',
            'amenitas' => 'required',
            'aksesibilitas' => 'required',
            'kelembagaan' => 'required',
            'jumlah_pokdarwis' => 'required|integer',
            'jarak_tempuh_bandara' => 'required|string',
            'jarak_tempuh_kampung' => 'required|string',
            'jenis_pelatihan' => 'required',
            'kampung_binaan' => 'required',
            'sharing_information' => 'required',
        ];

        $messages = [
            'nip.required' => 'Form NIP wajib diisi!',
            'nama_lengkap.required' => 'Form nama lengkap wajib diisi!',
            'pangkat.required' => 'Form pangkat wajib diisi!',
            'jabatan.required' => 'Form jabatan wajib diisi!',
            'instansi.required' => 'Form instansi wajib diisi!',
            'kabupaten.required' => 'Form kabupaten wajib diisi!',
            'phone_number.required' => 'Form nomor telepon wajib diisi!',
            'pesan.required' => 'Form pesan wajib diisi!',
            'alamat.required' => 'Form alamat wajib diisi!',
            'nama_distrik.required' => 'Form nama distrik wajib diisi!',
            'jumlah_kampung.required' => 'Form jumlah kampung wajib diisi!',
            'jumlah_penduduk.required' => 'Form jumlah penduduk wajib diisi!',
            'pendidikan.required' => 'Form pendidikan wajib diisi!',
            'atraksi.required' => 'Form atraksi wajib diisi!',
            'amenitas.required' => 'Form amenitas wajib diisi!',
            'aksesibilitas.required' => 'Form aksesibilitas wajib diisi!',
            'kelembagaan.required' => 'Form kelembagaan wajib diisi!',
            'jumlah_pokdarwis.required' => 'Form jumlah pokdarwis wajib diisi!',
            'jarak_tempuh_bandara.required' => 'Form jarak tempuh bandara wajib diisi!',
            'jarak_tempuh_kampung.required' => 'Form jarak tempuh kampung wajib diisi!',
            'jenis_pelatihan.required' => 'Form jenis pelatihan wajib diisi!',
            'kampung_binaan.required' => 'Form kampung binaan wajib diisi!',
            'sharing_information.required' => 'Form sharing information wajib diisi!',
            'nip.integer' => 'Form NIP harus diisi dengan angka!',
            'jumlah_pokdarwis.integer' => 'Form jumlah POKDARWIS harus diisi dengan angka!',
            'jumlah_kampung.integer' => 'Form jumlah kampung harus diisi dengan angka!',
            'jumlah_penduduk.integer' => 'Form jumlah penduduk harus diisi dengan angka!'
        ];

        $validator = Validator::make($request->all(), $rules, $messages);

        // Check if validation fails
        if ($validator->fails()) {
            return response()->json(['input_data_gagal' => $validator->errors()], 400);
        }
        $data_pribadi_deswita = data_pribadi_deswita::create([
            "nip" => $request->nip,
            "nama_lengkap" => $request->nama_lengkap,
            "pangkat" => $request->pangkat,
            "jabatan" => $request->jabatan,
            "instansi" => $request->instansi,
            "kabupaten" => $request->kabupaten,
            "phone_number" => $request->phone_number,
            "pesan" => $request->pesan,
            "alamat" => $request->alamat
        ]);
        data_distrik_deswita::create([
            "nama_distrik" => $request->nama_distrik,
            "jumlah_kampung" => $request->jumlah_kampung,
            "jumlah_penduduk" => $request->jumlah_penduduk,
            "data_pribadi_deswita_id" => $data_pribadi_deswita->id
        ]);
        data_deswita::create([
            "pendidikan" => $request->pendidikan,
            "atraksi" => $request->atraksi,
            "amenitas" => $request->amenitas,
            "aksesibilitas" => $request->aksesibilitas,
            "kelembagaan" => $request->kelembagaan,
            "jumlah_pokdarwis" => $request->jumlah_pokdarwis,
            "jenis_pelatihan" => $request->jenis_pelatihan,
            "kampung_binaan" => $request->kampung_binaan,
            "jarak_tempuh_bandara" => $request->jarak_tempuh_bandara,
            "jarak_tempuh_kampung" => $request->jarak_tempuh_kampung,
            "sharing_information" => $request->sharing_information,
            "data_pribadi_deswita_id" => $data_pribadi_deswita->id
        ]);
        $response = [
            'nip' => $request->nip,
            'nama_lengkap' => $request->nama_lengkap,
            'pangkat' => $request->pangkat,
            'jabatan' => $request->jabatan,
            'instansi' => $request->instansi,
            'kabupaten' => $request->kabupaten,
            'phone_number' => $request->phone_number,
            'pesan' => $request->pesan,
            'alamat' => $request->alamat,
            'nama_distrik' => $request->nama_distrik,
            'jumlah_kampung' => $request->jumlah_kampung,
            'jumlah_penduduk' => $request->jumlah_penduduk,
            'pendidikan' => $request->pendidikan,
            'atraksi' => $request->atraksi,
            'amenitas' => $request->amenitas,
            'aksesibilitas' => $request->aksesibilitas,
            'kelembagaan' => $request->kelembagaan,
            'jumlah_pokdarwis' => $request->jumlah_pokdarwis,
            'jarak_tempuh_bandara' => $request->jarak_tempuh_bandara,
            'jarak_tempuh_kampung' => $request->jarak_tempuh_kampung,
            'jenis_pelatihan' => $request->jenis_pelatihan,
            'kampung_binaan' => $request->kampung_binaan,
            'sharing_information' => $request->sharing_information,
            'data_id' => $data_pribadi_deswita->id
        ];
        // dd($response);
        // Kembalikan respons JSON
        return response()->json(['data' => $response, 'message' => 'Data berhasil disimpan']);
    }
    public function printpagesdeswita($category, $id)
    {
        // dd($category);
        // dd($id);
        $categori = $category . "s";
        // dd($categori);
        $query = "SELECT data_pribadi_$categori.*, data_$categori.*, data_distrik_$categori.* FROM data_pribadi_$categori INNER JOIN data_$categori ON data_pribadi_$categori.id = data_$categori.data_pribadi_" . $category . "_id::int INNER JOIN data_distrik_$categori ON data_pribadi_$categori.id = data_distrik_$categori.data_pribadi_" . $category . "_id::int WHERE data_pribadi_deswitas.id = $id";
        $data = DB::select($query);
        // dd($data[0]);
        return view('DesWita.print-pages', [
            'data_pribadi' => $data,
        ]);
    }
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Storedata_deswitaRequest $request)
    {
        //
    }

    /**
     * Display the specified resource.
     */
    public function show(data_deswita $data_deswita)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit(data_deswita $data_deswita)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Updatedata_deswitaRequest $request, data_deswita $data_deswita)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy(data_deswita $data_deswita)
    {
        //
    }
}