<?php

namespace App\Services;

use App\Repositories\PegawaiRepository;
use Illuminate\Database\Eloquent\Collection;
use App\Models\Pegawai;

class PegawaiService
{
    protected $pegawaiRepository;

    public function __construct(PegawaiRepository $pegawaiRepository)
    {
        $this->pegawaiRepository = $pegawaiRepository;
    }

    public function getAllPegawai(): Collection
    {
        // Contoh: Jika ada logika bisnis tambahan sebelum mengembalikan semua pegawai
        // return $this->pegawaiRepository->getAll()->sortBy('nama');
        return $this->pegawaiRepository->getAll();
    }

    public function findById(int $id): ?Pegawai
    {
        return $this->pegawaiRepository->findById($id);
    }

    public function createPegawai(array $data): Pegawai
    {
        return $this->pegawaiRepository->createPegawai($data);
    }

    public function updatePegawai(int $id, array $data): ?Pegawai
    {
        $pegawai = $this->pegawaiRepository->findById($id);

        if (!$pegawai) {
            throw new \Exception("Pegawai tidak ditemukan.");
        }

        if (isset($data['jabatan']) && empty($data['jabatan'])) {
            throw new \Exception("Jabatan tidak boleh kosong.");
        }

        return $this->pegawaiRepository->updatePegawai($id, $data);
    }

    public function deletePegawai(int $id): bool
    {
        $pegawai = $this->pegawaiRepository->findById($id);

        if (!$pegawai) {
            throw new \Exception("Pegawai tidak ditemukan.");
        }

        return $this->pegawaiRepository->deletePegawai($id);
    }
}
