<?php

namespace App\Notifications;

use App\Models\PurchaseOrder;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;

class PurchaseOrderCreatedNotification extends Notification
{
    use Queueable;

    public function __construct(
        protected PurchaseOrder $purchaseOrder
    ) {}

    /**
     * @return array<int, string>
     */
    public function via(object $notifiable): array
    {
        return ['mail'];
    }

    public function toMail(object $notifiable): MailMessage
    {
        $po = $this->purchaseOrder;
        $po->load(['items.variant.product', 'supplier', 'sourceOrder']);
        $itemsList = $po->items->map(fn ($i) => '• ' . ($i->variant?->product?->name ?? 'منتج') . ' / ' . ($i->variant?->pattern_name ?? '-') . ': ' . $i->quantity . ' قطعة')->implode("\n");
        $orderRef = $po->sourceOrder ? "الطلب #{$po->sourceOrder->id}" : '—';

        return (new MailMessage)
            ->subject('أمر شراء جديد #' . $po->id . ' - تاجر بلس')
            ->greeting('مرحباً ' . ($po->supplier?->name ?? 'المورد'))
            ->line('لديك أمر شراء جديد يتطلب التجهيز.')
            ->line('رقم أمر الشراء: #' . $po->id)
            ->line('الطلب المرتبط: ' . $orderRef)
            ->line('الأصناف المطلوبة:')
            ->line($itemsList)
            ->line('الرجاء تجهيز البضاعة وإعلامنا عند الانتهاء.')
            ->salutation('شكراً لتعاملكم معنا - تاجر بلس');
    }
}
