<?php

namespace App;

use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Mail\Attachment;

use Illuminate\Http\Request;

class Correo extends Mailable {

    public $request;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct(Request $request) {

			$this->request = $request;

    }

    /**
     * Get the message envelope.
     *
     * @return \Illuminate\Mail\Mailables\Envelope
     */
    public function envelope() {

        return new Envelope(subject: $this->request->asunto);

    }

    /**
     * Get the message content definition.
     *
     * @return \Illuminate\Mail\Mailables\Content
     */
    public function content() {

        return new Content(view: "correo.plantilla", with: ["request" => $this->request]);

    }

    /**
     * Get the attachments for the message.
     *
     * @return array
     */
    public function attachments() {

			// Defino esto por que es necesario para el correo poder procesar el adjunto que le mando.
			// Sin esto el correo no reconoce el PDF o la imágen.
			// El segundo es para ponerle la extensión personalizada a el adjunto.

			$mime = $this->request->tipo_adjunto === 'IMAGEN' ? 'image/png' : 'application/pdf';

			$extension = $this->request->tipo_adjunto === 'IMAGEN' ? '.png' : '.pdf';

			return $this->request->imagen
				? [Attachment::fromData(fn () =>
					file_get_contents($this->request->imagen), $this->request->asunto)
					->withMime($mime)
				  ->as($this->request->asunto.$extension)]
				: []
			;

    }

}
