<?php

namespace App\Domains\MailTest\Mailables;

use App\Domains\Tenant\Models\Tenant;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;

class TestMail extends Mailable
{
    use Queueable, SerializesModels;

    public function __construct(
        public readonly string $mailSubject,
        public readonly string $mailMessage,
        public readonly Tenant $tenant,
    ) {}

    public function envelope(): Envelope
    {
        return new Envelope(subject: $this->mailSubject);
    }

    public function content(): Content
    {
        $this->tenant->loadMissing(['headerLogo', 'footerLogo']);

        $branding = [
            'name' => $this->tenant->nombre,
            'primary_color' => $this->tenant->primary_color ?? '#6376f3',
            'body_color' => '#334155',
            'background_color' => '#f1f5f9',
            'surface_color' => '#ffffff',
            'header_bg_color' => $this->tenant->header_bg_color ?? '#ffffff',
            'footer_bg_color' => $this->tenant->footer_bg_color ?? '#334155',
        ];

        return new Content(
            view: 'mail.test',
            with: [
                'tenant' => $this->tenant,
                'branding' => $branding,
                'headerLogoUrl' => $this->tenant->headerLogo?->getTemporaryUrl(1440),
                'footerLogoUrl' => $this->tenant->footerLogo?->getTemporaryUrl(1440),
            ],
        );
    }
}
