<?php

namespace App\Mail\Concerns;

use App\Services\Mail\MailLane;
use Illuminate\Contracts\Queue\Factory as Queue;

/**
 * Reiht eine Mail in die Schlange ihrer Spur ein.
 *
 * `Mailable::queue()` liest den Schlangennamen und reicht ihn an `pushOn()`
 * weiter — die Spur muss also VOR dem Einreihen feststehen. Eine Trait-Methode
 * schlägt die geerbte Methode der Elternklasse, deshalb genügt es, `queue()`
 * hier zu überschreiben und danach an die Elternklasse weiterzugeben.
 *
 * Neben `SendsFromMailbox` statt darin: die eine Sache ist, von welchem
 * Postfach eine Mail kommt, die andere, wie eilig sie ist.
 */
trait RidesALane
{
    public function queue(Queue $queue)
    {
        $this->onQueue(MailLane::for(static::class));

        return parent::queue($queue);
    }
}
