<?php

namespace App\Livewire\Studio\Catalog\Product;

use App\Enums\AuditStockStatus;
use App\Models\Outlet;
use App\Models\Product;
use Livewire\Attributes\Title;
use Livewire\Component;
use Spatie\Activitylog\Models\Activity;

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

    public array $activityLogs = [];

    public function mount(Outlet $outlet, Product $product)
    {
        $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) {

                return [
                    'log_name' => $activity->log_name,
                    'created_at' => $activity->created_at,
                    'event' => [
                        'label' => $activity->event,
                        'color' => AuditStockStatus::from($activity->event)->color(),
                    ],
                    'new_stock' => currency($activity->properties['new_stock']),
                    'previous_stock' => currency($activity->properties['previous_stock']),
                    'quantity_change' => currency($activity->properties['quantity_change']),
                    'user' => $activity->causer?->profile?->full_name,
                    'description' => $activity->description,
                ];
            })
            ->toArray();
    }

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