<?php

namespace App\Livewire\Studio\Catalog\Product;

use App\Enums\AuditStockStatus;
use App\Models\Outlet;
use App\Models\Product;
use Illuminate\Contracts\View\View;
use Illuminate\Database\Eloquent\Collection;
use Livewire\Attributes\Title;
use Livewire\Component;
use Spatie\Activitylog\Models\Activity;

#[Title('Audit')]
class Audit extends Component
{
    public string $label;

    public Collection $activityLogs;

    public function mount(Outlet $outlet, Product $product): void
    {
        $this->label = $product->name.' di '.$outlet->name;

        $this->activityLogs = Activity::where('subject_type', get_class($product))
            ->where('subject_id', $product->id)
            ->where('properties->outlet_id', $outlet->id)
            ->latest()
            ->get()
            ->map(function (Activity $activity) {
                $activity->event = [
                    'label' => $activity->event,
                    'color' => AuditStockStatus::from($activity->event)->color(),
                ];

                return $activity;
            });
    }

    public function render(): View
    {
        return view('components.sections.ui.audit', [
            'pageTitle' => 'Audit '.$this->label,
            'module' => 'product',
        ]);
    }
}
