<?php

namespace App\Filament\Resources\PendatangResource\Pages;

use App\Filament\Resources\KelahiranResource;
use App\Filament\Resources\PendatangResource;
use Filament\Resources\Pages\CreateRecord;
use App\Models\Penduduk;
use App\Models\AnggotaKartuKeluarga;
use App\Models\Dusun;
use App\Models\KartuKeluarga;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;

class CreatePendatang extends CreateRecord
{
    protected static string $resource = PendatangResource::class;

    protected function handleRecordCreation(array $data): \Illuminate\Database\Eloquent\Model
    {
        // dd($data);
        return DB::transaction(function () use ($data) {
            $findPenduduk = Penduduk::find($data['nik']);

            if (empty($findPenduduk)) {
                // 1. Buat Penduduk Baru dari data Kelahiran
                $penduduk = Penduduk::create([
                    'nik' => $data['nik'],
                    'nama' => $data['nama'],
                    'tempat_lahir' => $data['tempat_lahir'],
                    'tanggal_lahir' => $data['tanggal_lahir'],
                    'jenis_kelamin' => $data['jenis_kelamin'],
                    'agama' => $data['agama'],
                    'alamat' => $data['alamat_tujuan'],
                    'dusun_id' => $data['dusun_id_tujuan'],
                    'rt' => null,
                    'rw' => null,
                    'is_ignore' => $data['tujuan_datang'] === 'tamu' ? true : false,
                    'perkawinan' => 'belum',
                    'pekerjaan' => 'belum bekerja',
                    'status_penduduk' => 'ada',
                ]);

                Log::info('Membuat penduduk baru: ' . $penduduk->id . ' - ' . $penduduk->nama);
                $pendatang = static::getModel()::create([
                    'penduduk_id' => $penduduk->id, 
                    'anggota_kk_id' => null, 
                    'tujuan_datang' => $data['tujuan_datang'],
                    'alasan_datang' => $data['alasan_datang'],
                    'tanggal_datang' => $data['tanggal_datang'],
                ]);
    
                return $pendatang;
            } else {
                return 'data sudah ada';
            }
        });
    }

    protected function getRedirectUrl(): string
    {
        return $this->getResource()::getUrl('index');
    }
}