<?php

namespace App\Mail;

use App\Models\ProjectMailing;
use App\Models\ProjectMailingAttachment;
use App\Models\ProjectMosaic;
use App\Models\ProjectReport;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Attachment;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;

class ReportMailer extends Mailable
{
    use Queueable, SerializesModels;

    public ProjectMailing $mailing;

    /**
     * Create a new message instance.
     */
    public function __construct(ProjectMailing $mailing)
    {
        $this->mailing = $mailing;

    }

    /**
     * Get the message envelope.
     */
    public function envelope(): Envelope
    {
        return new Envelope(
            subject:$this->mailing->subject,
        );
    }

    /**
     * Get the message content definition.
     */
    public function content(): Content
    {
        return new Content(
            markdown: 'emails.scheduled-report',
            with: [
               'mailingContent' => $this->mailing->message,
                'logoPath'=> resource_path('images/smartcane.png'),
                'subject' => $this->mailing->subject,
                'mailing' => $this->mailing,
                'reportUrl' => route(
                    'project.report.download_with_token',
                    $this->mailing->report->token
                ),
            ],
            //htmlString: $this->mailing->message
        );
    }

//    /**
//     * Get the attachments for the message.
//     *
//     * @return array<int, \Illuminate\Mail\Mailables\Attachment>
//     */
//    public function attachments(): array
//    {
//        return $this->mailing->attachments()->get()->map(function (ProjectMailingAttachment $attachment) {
//            $attachment_path = Storage::path($attachment->mailing->project->download_path."/".$attachment->path);
//
//            if (!File::exists($attachment_path)) {
//                logger('Could not find attachment: ' . $attachment_path);
//                return null;
//            }
//            logger('Attachment found: ' . $attachment_path);
//
//            $mime = 'application/pdf'; // default MIME type
//            $extension = pathinfo($attachment->path, PATHINFO_EXTENSION);
//            if ($extension === 'docx') {
//                $mime = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
//            }
//
//            return Attachment::fromPath(
//                $attachment_path
//            )
//                ->as($attachment->path)
//                ->withMime($mime);
//        })
//            ->filter()
//            ->toArray();
//    }
}
