<?php

namespace Database\Seeders\Prod;

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Carbon\Carbon;

class BranchSeeder extends Seeder
{
    /**
     * Run the database seeds.
     */
    public function run(): void
    {
        $branches = [
            [
                'name' => 'Zafaran Spa Solo',
                'code' => 'ZFR-SOLO',
                'address' => 'Jl. Slamet Riyadi No. 123, Solo',
                'phone' => '0271123456',
                'city' => 'Solo',
                'province' => 'Jawa Tengah',
                'latitude' => -7.5666,
                'longitude' => 110.8166,
                'opening_time' => '09:00:00',
                'closing_time' => '21:00:00',
                'operating_days' => json_encode(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']),
                'is_active' => true,
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ],
            [
                'name' => 'Zafaran Spa Jakarta',
                'code' => 'ZFR-JKT',
                'address' => 'Jl. Sudirman No. 10, Jakarta Pusat',
                'phone' => '0219876543',
                'city' => 'Jakarta',
                'province' => 'DKI Jakarta',
                'latitude' => -6.2088,
                'longitude' => 106.8456,
                'opening_time' => '09:00:00',
                'closing_time' => '21:00:00',
                'operating_days' => json_encode(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']),
                'is_active' => true,
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ],
            [
                'name' => 'Zafaran Spa Surabaya',
                'code' => 'ZFR-SBY',
                'address' => 'Jl. Tunjungan No. 5, Surabaya',
                'phone' => '0311234567',
                'city' => 'Surabaya',
                'province' => 'Jawa Timur',
                'latitude' => -7.2575,
                'longitude' => 112.7521,
                'opening_time' => '09:00:00',
                'closing_time' => '21:00:00',
                'operating_days' => json_encode(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']),
                'is_active' => true,
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ],
            [
                'name' => 'Zafaran Spa Bandung',
                'code' => 'ZFR-BDG',
                'address' => 'Jl. Asia Afrika No. 20, Bandung',
                'phone' => '0223456789',
                'city' => 'Bandung',
                'province' => 'Jawa Barat',
                'latitude' => -6.9175,
                'longitude' => 107.6191,
                'opening_time' => '09:00:00',
                'closing_time' => '21:00:00',
                'operating_days' => json_encode(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']),
                'is_active' => true,
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ],
            [
                'name' => 'Zafaran Spa Medan',
                'code' => 'ZFR-MDN',
                'address' => 'Jl. Gatot Subroto No. 30, Medan',
                'phone' => '0612345678',
                'city' => 'Medan',
                'province' => 'Sumatera Utara',
                'latitude' => 3.5952,
                'longitude' => 98.6722,
                'opening_time' => '09:00:00',
                'closing_time' => '21:00:00',
                'operating_days' => json_encode(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']),
                'is_active' => true,
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ],
            [
                'name' => 'Zafaran Spa Semarang',
                'code' => 'ZFR-SMG',
                'address' => 'Jl. Pandanaran No. 15, Semarang',
                'phone' => '0241234567',
                'city' => 'Semarang',
                'province' => 'Jawa Tengah',
                'latitude' => -7.0051,
                'longitude' => 110.4381,
                'opening_time' => '09:00:00',
                'closing_time' => '21:00:00',
                'operating_days' => json_encode(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']),
                'is_active' => true,
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ],
            [
                'name' => 'Zafaran Spa Makassar',
                'code' => 'ZFR-MKS',
                'address' => 'Jl. Pantai Losari No. 8, Makassar',
                'phone' => '0411234567',
                'city' => 'Makassar',
                'province' => 'Sulawesi Selatan',
                'latitude' => -5.1477,
                'longitude' => 119.4327,
                'opening_time' => '09:00:00',
                'closing_time' => '21:00:00',
                'operating_days' => json_encode(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']),
                'is_active' => true,
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ],
            [
                'name' => 'Zafaran Spa Palembang',
                'code' => 'ZFR-PLM',
                'address' => 'Jl. Ampera No. 2, Palembang',
                'phone' => '0711234567',
                'city' => 'Palembang',
                'province' => 'Sumatera Selatan',
                'latitude' => -2.9909,
                'longitude' => 104.7567,
                'opening_time' => '09:00:00',
                'closing_time' => '21:00:00',
                'operating_days' => json_encode(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']),
                'is_active' => true,
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ],
            [
                'name' => 'Zafaran Spa Tangerang',
                'code' => 'ZFR-TNG',
                'address' => 'Jl. Serpong No. 50, Tangerang',
                'phone' => '0213456789',
                'city' => 'Tangerang',
                'province' => 'Banten',
                'latitude' => -6.1731,
                'longitude' => 106.6366,
                'opening_time' => '09:00:00',
                'closing_time' => '21:00:00',
                'operating_days' => json_encode(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']),
                'is_active' => true,
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ],
            [
                'name' => 'Zafaran Spa Depok',
                'code' => 'ZFR-DPK',
                'address' => 'Jl. Margonda No. 100, Depok',
                'phone' => '0214567890',
                'city' => 'Depok',
                'province' => 'Jawa Barat',
                'latitude' => -6.4025,
                'longitude' => 106.7942,
                'opening_time' => '09:00:00',
                'closing_time' => '21:00:00',
                'operating_days' => json_encode(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']),
                'is_active' => true,
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ],
            [
                'name' => 'Zafaran Spa Bekasi',
                'code' => 'ZFR-BKS',
                'address' => 'Jl. Ahmad Yani No. 5, Bekasi',
                'phone' => '0215678901',
                'city' => 'Bekasi',
                'province' => 'Jawa Barat',
                'latitude' => -6.2383,
                'longitude' => 106.9756,
                'opening_time' => '09:00:00',
                'closing_time' => '21:00:00',
                'operating_days' => json_encode(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']),
                'is_active' => true,
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ],
            [
                'name' => 'Zafaran Spa Bogor',
                'code' => 'ZFR-BGR',
                'address' => 'Jl. Pajajaran No. 12, Bogor',
                'phone' => '0251123456',
                'city' => 'Bogor',
                'province' => 'Jawa Barat',
                'latitude' => -6.5971,
                'longitude' => 106.8060,
                'opening_time' => '09:00:00',
                'closing_time' => '21:00:00',
                'operating_days' => json_encode(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']),
                'is_active' => true,
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ],
            [
                'name' => 'Zafaran Spa Batam',
                'code' => 'ZFR-BTM',
                'address' => 'Jl. Nagoya No. 1, Batam',
                'phone' => '0778123456',
                'city' => 'Batam',
                'province' => 'Kepulauan Riau',
                'latitude' => 1.0456,
                'longitude' => 104.0305,
                'opening_time' => '09:00:00',
                'closing_time' => '21:00:00',
                'operating_days' => json_encode(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']),
                'is_active' => true,
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ],
            [
                'name' => 'Zafaran Spa Pekanbaru',
                'code' => 'ZFR-PKU',
                'address' => 'Jl. Sudirman No. 200, Pekanbaru',
                'phone' => '0761123456',
                'city' => 'Pekanbaru',
                'province' => 'Riau',
                'latitude' => 0.5333,
                'longitude' => 101.4500,
                'opening_time' => '09:00:00',
                'closing_time' => '21:00:00',
                'operating_days' => json_encode(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']),
                'is_active' => true,
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ],
            [
                'name' => 'Zafaran Spa Bandar Lampung',
                'code' => 'ZFR-TKG',
                'address' => 'Jl. Kartini No. 15, Bandar Lampung',
                'phone' => '0721123456',
                'city' => 'Bandar Lampung',
                'province' => 'Lampung',
                'latitude' => -5.3971,
                'longitude' => 105.2668,
                'opening_time' => '09:00:00',
                'closing_time' => '21:00:00',
                'operating_days' => json_encode(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']),
                'is_active' => true,
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ],
            [
                'name' => 'Zafaran Spa Malang',
                'code' => 'ZFR-MLG',
                'address' => 'Jl. Ijen No. 10, Malang',
                'phone' => '0341123456',
                'city' => 'Malang',
                'province' => 'Jawa Timur',
                'latitude' => -7.9666,
                'longitude' => 112.6326,
                'opening_time' => '09:00:00',
                'closing_time' => '21:00:00',
                'operating_days' => json_encode(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']),
                'is_active' => true,
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ],
            [
                'name' => 'Zafaran Spa Padang',
                'code' => 'ZFR-PDG',
                'address' => 'Jl. Khatib Sulaiman No. 5, Padang',
                'phone' => '0751123456',
                'city' => 'Padang',
                'province' => 'Sumatera Barat',
                'latitude' => -0.9471,
                'longitude' => 100.4172,
                'opening_time' => '09:00:00',
                'closing_time' => '21:00:00',
                'operating_days' => json_encode(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']),
                'is_active' => true,
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ],
            [
                'name' => 'Zafaran Spa Denpasar',
                'code' => 'ZFR-DPS',
                'address' => 'Jl. Gatot Subroto No. 50, Denpasar',
                'phone' => '0361123456',
                'city' => 'Denpasar',
                'province' => 'Bali',
                'latitude' => -8.6705,
                'longitude' => 115.2126,
                'opening_time' => '10:00:00',
                'closing_time' => '22:00:00',
                'operating_days' => json_encode(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']),
                'is_active' => true,
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ],
            [
                'name' => 'Zafaran Spa Samarinda',
                'code' => 'ZFR-SMR',
                'address' => 'Jl. Mulawarman No. 20, Samarinda',
                'phone' => '0541123456',
                'city' => 'Samarinda',
                'province' => 'Kalimantan Timur',
                'latitude' => -0.5022,
                'longitude' => 117.1536,
                'opening_time' => '09:00:00',
                'closing_time' => '21:00:00',
                'operating_days' => json_encode(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']),
                'is_active' => true,
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ],
            [
                'name' => 'Zafaran Spa Banjarmasin',
                'code' => 'ZFR-BJM',
                'address' => 'Jl. Ahmad Yani No. 1, Banjarmasin',
                'phone' => '0511123456',
                'city' => 'Banjarmasin',
                'province' => 'Kalimantan Selatan',
                'latitude' => -3.3194,
                'longitude' => 114.5908,
                'opening_time' => '09:00:00',
                'closing_time' => '21:00:00',
                'operating_days' => json_encode(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']),
                'is_active' => true,
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ],
            [
                'name' => 'Zafaran Spa Jogja',
                'code' => 'ZFR-JOGJA',
                'address' => 'Jl. Malioboro No. 456, Yogyakarta',
                'phone' => '0274123456',
                'city' => 'Yogyakarta',
                'province' => 'DI Yogyakarta',
                'latitude' => -7.7956,
                'longitude' => 110.3695,
                'opening_time' => '09:00:00',
                'closing_time' => '21:00:00',
                'operating_days' => json_encode(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']),
                'is_active' => true,
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ]
        ];

        foreach ($branches as $branch) {
            DB::table('branches')->updateOrInsert(
                ['code' => $branch['code']],
                $branch
            );
        }

        // Seed Rooms for each branch
        $allBranches = DB::table('branches')->get();

        foreach ($allBranches as $branch) {
            $rooms = [
                [
                    'branch_id' => $branch->id,
                    'name' => 'Room Standard 1',
                    'type' => 'standard',
                    'capacity' => 1,
                    'is_active' => true,
                    'created_at' => Carbon::now(),
                    'updated_at' => Carbon::now(),
                ],
                [
                    'branch_id' => $branch->id,
                    'name' => 'Room VIP 1',
                    'type' => 'vip',
                    'capacity' => 2,
                    'is_active' => true,
                    'created_at' => Carbon::now(),
                    'updated_at' => Carbon::now(),
                ],
                [
                    'branch_id' => $branch->id,
                    'name' => 'Room VVIP 1',
                    'type' => 'vvip',
                    'capacity' => 2,
                    'is_active' => true,
                    'created_at' => Carbon::now(),
                    'updated_at' => Carbon::now(),
                ],
            ];

            foreach ($rooms as $room) {
                DB::table('rooms')->updateOrInsert(
                    ['branch_id' => $room['branch_id'], 'name' => $room['name']],
                    $room
                );
            }
        }
    }
}
