<?php

namespace App\Notifications\TransactionalEmails;

use App\Models\Team;
use App\Models\TeamInvitation;
use App\Models\User;
use App\Notifications\Channels\TransactionalEmailChannel;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;

class InvitationLink extends Notification implements ShouldQueue
{
    use Queueable;

    public $tries = 5;
    public function via(): array
    {
        return [TransactionalEmailChannel::class];
    }

    public function __construct(public User $user)
    {
    }
    public function toMail(): MailMessage
    {
        $invitation = TeamInvitation::whereEmail($this->user->email)->first();
        $invitation_team = Team::find($invitation->team->id);

        $mail = new MailMessage();
        $mail->subject('Coolify: Invitation for ' . $invitation_team->name);
        $mail->view('emails.invitation-link', [
            'team' => $invitation_team->name,
            'email' => $this->user->email,
            'invitation_link' => $invitation->link,
        ]);
        return $mail;
    }
}