<?php

namespace Database\Seeders;

use App\Models\Company;
use App\Models\Shift;
use Illuminate\Database\Seeder;

class ShiftSeeder extends Seeder
{
    /**
     * Run the database seeds.
     * 
     * Membuat shift dengan jam kerja 08:00 - 16:00
     * Hanya untuk perusahaan yang memiliki office_time_enabled = true
     * Skip untuk perusahaan "Contoh perusahaan"
     */
    public function run(): void
    {
        // Ambil semua perusahaan yang memiliki office_time_enabled = true
        // dan bukan perusahaan contoh
        $companies = Company::where('office_time_enabled', true)
            ->where('name', 'not like', '%Contoh%')
            ->where('name', 'not like', '%contoh%')
            ->get();

        foreach ($companies as $company) {
            // Cek apakah sudah ada shift untuk company ini
            $existingShift = Shift::where('company_id', $company->id)
                ->where('is_default', true)
                ->first();

            if (!$existingShift) {
                // Buat shift default dengan jam 08:00 - 16:00
                Shift::create([
                    'company_id' => $company->id,
                    'name' => 'Shift Normal',
                    'code' => 'SN',
                    'start_time' => '08:00:00',
                    'end_time' => '16:00:00',
                    'is_default' => true,
                    'is_active' => true,
                ]);

                $this->command->info("Shift created for company: {$company->name}");
            } else {
                $this->command->info("Shift already exists for company: {$company->name}");
            }
        }

        // Jika tidak ada perusahaan dengan office_time_enabled = true,
        // buat shift untuk perusahaan lain (kecuali Contoh)
        if ($companies->isEmpty()) {
            $otherCompanies = Company::where('name', 'not like', '%Contoh%')
                ->where('name', 'not like', '%contoh%')
                ->get();

            foreach ($otherCompanies as $company) {
                $existingShift = Shift::where('company_id', $company->id)
                    ->where('is_default', true)
                    ->first();

                if (!$existingShift) {
                    Shift::create([
                        'company_id' => $company->id,
                        'name' => 'Shift Normal',
                        'code' => 'SN',
                        'start_time' => '08:00:00',
                        'end_time' => '16:00:00',
                        'is_default' => true,
                        'is_active' => true,
                    ]);

                    $this->command->info("Shift created for company: {$company->name}");
                }
            }
        }
    }
}

