<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use App\Models\Masjid;
use App\Models\KategoriTransaksi;
use App\Models\TransaksiKeuangan;
use App\Models\User;
use Carbon\Carbon;

class MasjidSeeder extends Seeder
{
    public function run(): void
    {
        // Buat masjid
        $masjid = Masjid::create([
            'nama' => 'Masjid Al-Ikhlas',
            'alamat' => 'Jl. Raya Masjid No. 123, Jakarta',
            'telepon' => '021-12345678',
            'kota' => 'Jakarta',
            'latitude' => -6.2088,
            'longitude' => 106.8456,
            'timezone' => 'Asia/Jakarta',
            'saldo_kas' => 6500000,
            'saldo_bank' => 15000000,
        ]);

        // Ambil user pertama atau buat jika belum ada
        $user = User::first();
        if (!$user) {
            $user = User::create([
                'name' => 'Admin Masjid',
                'email' => 'admin@masjid.com',
                'password' => bcrypt('password'),
            ]);
        }

        // Buat kategori pemasukan
        $kategoriInfaq = KategoriTransaksi::create([
            'masjid_id' => $masjid->id,
            'nama' => 'Infaq Jumat',
            'jenis' => 'pemasukan',
        ]);

        $kategoriDonasi = KategoriTransaksi::create([
            'masjid_id' => $masjid->id,
            'nama' => 'Donasi',
            'jenis' => 'pemasukan',
        ]);

        $kategoriZakat = KategoriTransaksi::create([
            'masjid_id' => $masjid->id,
            'nama' => 'Zakat',
            'jenis' => 'pemasukan',
        ]);

        // Buat kategori pengeluaran
        $kategoriListrik = KategoriTransaksi::create([
            'masjid_id' => $masjid->id,
            'nama' => 'Listrik',
            'jenis' => 'pengeluaran',
        ]);

        $kategoriAir = KategoriTransaksi::create([
            'masjid_id' => $masjid->id,
            'nama' => 'Air',
            'jenis' => 'pengeluaran',
        ]);

        $kategoriKebersihan = KategoriTransaksi::create([
            'masjid_id' => $masjid->id,
            'nama' => 'Kebersihan',
            'jenis' => 'pengeluaran',
        ]);

        // Buat transaksi sample untuk Februari 2026
        $transaksi = [
            // Pemasukan
            [
                'tanggal' => '2026-02-07',
                'jenis' => 'pemasukan',
                'kategori_id' => $kategoriInfaq->id,
                'nominal' => 500000,
                'keterangan' => 'Infaq Jumat minggu pertama',
            ],
            [
                'tanggal' => '2026-02-06',
                'jenis' => 'pemasukan',
                'kategori_id' => $kategoriDonasi->id,
                'nominal' => 1000000,
                'keterangan' => 'Donasi dari Bapak Ahmad',
            ],
            [
                'tanggal' => '2026-02-05',
                'jenis' => 'pemasukan',
                'kategori_id' => $kategoriZakat->id,
                'nominal' => 2500000,
                'keterangan' => 'Zakat Fitrah',
            ],
            [
                'tanggal' => '2026-02-14',
                'jenis' => 'pemasukan',
                'kategori_id' => $kategoriInfaq->id,
                'nominal' => 600000,
                'keterangan' => 'Infaq Jumat minggu kedua',
            ],
            [
                'tanggal' => '2026-02-21',
                'jenis' => 'pemasukan',
                'kategori_id' => $kategoriInfaq->id,
                'nominal' => 550000,
                'keterangan' => 'Infaq Jumat minggu ketiga',
            ],
            
            // Pengeluaran
            [
                'tanggal' => '2026-02-06',
                'jenis' => 'pengeluaran',
                'kategori_id' => $kategoriListrik->id,
                'nominal' => 350000,
                'keterangan' => 'Bayar listrik bulan Januari',
            ],
            [
                'tanggal' => '2026-02-06',
                'jenis' => 'pengeluaran',
                'kategori_id' => $kategoriAir->id,
                'nominal' => 150000,
                'keterangan' => 'Bayar air bulan Januari',
            ],
            [
                'tanggal' => '2026-02-10',
                'jenis' => 'pengeluaran',
                'kategori_id' => $kategoriKebersihan->id,
                'nominal' => 200000,
                'keterangan' => 'Beli alat kebersihan',
            ],
        ];

        foreach ($transaksi as $data) {
            TransaksiKeuangan::create([
                'masjid_id' => $masjid->id,
                'kategori_id' => $data['kategori_id'],
                'user_id' => $user->id,
                'tanggal' => $data['tanggal'],
                'jenis' => $data['jenis'],
                'nominal' => $data['nominal'],
                'keterangan' => $data['keterangan'],
            ]);
        }

        // Buat transaksi untuk Januari 2026
        $transaksiJanuari = [
            [
                'tanggal' => '2026-01-03',
                'jenis' => 'pemasukan',
                'kategori_id' => $kategoriInfaq->id,
                'nominal' => 450000,
                'keterangan' => 'Infaq Jumat',
            ],
            [
                'tanggal' => '2026-01-10',
                'jenis' => 'pemasukan',
                'kategori_id' => $kategoriInfaq->id,
                'nominal' => 480000,
                'keterangan' => 'Infaq Jumat',
            ],
            [
                'tanggal' => '2026-01-15',
                'jenis' => 'pemasukan',
                'kategori_id' => $kategoriDonasi->id,
                'nominal' => 2000000,
                'keterangan' => 'Donasi dari Ibu Siti',
            ],
            [
                'tanggal' => '2026-01-05',
                'jenis' => 'pengeluaran',
                'kategori_id' => $kategoriListrik->id,
                'nominal' => 320000,
                'keterangan' => 'Bayar listrik bulan Desember',
            ],
            [
                'tanggal' => '2026-01-05',
                'jenis' => 'pengeluaran',
                'kategori_id' => $kategoriAir->id,
                'nominal' => 140000,
                'keterangan' => 'Bayar air bulan Desember',
            ],
        ];

        foreach ($transaksiJanuari as $data) {
            TransaksiKeuangan::create([
                'masjid_id' => $masjid->id,
                'kategori_id' => $data['kategori_id'],
                'user_id' => $user->id,
                'tanggal' => $data['tanggal'],
                'jenis' => $data['jenis'],
                'nominal' => $data['nominal'],
                'keterangan' => $data['keterangan'],
            ]);
        }

        $this->command->info('Masjid, kategori, dan transaksi berhasil dibuat!');
    }
}
