Files
portal/app/app/Mail/NewLeadNotification.php
T
Дмитрий dffefe7fc0 docs(billing): Phase 3 cleanup — refresh orphan comments to live classes
After ProcessWebhookJob/WebhookReceiveController removal — обновлены 8
docblock/inline комментариев, ссылавшихся на удалённый код:

- DealController: ProcessWebhookJob → SupplierWebhookController/RouteSupplierLeadJob
- SupplierWebhookController: убрана legacy backward-compat note
- ImportLeadsJob: паритет с RouteSupplierLeadJob
- RouteSupplierLeadJob: убрана ссылка на ProcessWebhookJob-pattern
- NewLeadNotification mailable: триггер в RouteSupplierLeadJob
- FailedWebhookJob model: ссылка на RouteSupplierLeadJob::failed()
- SupplierLeadCost model: создаётся в LedgerService::chargeForDelivery
- CsvLeadsParser: паритет с RouteSupplierLeadJob парсером

Code-функциональность не затронута, только doc-rot fix.
2026-05-24 18:51:16 +03:00

56 lines
1.5 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Mail;
use App\Models\Deal;
use App\Models\Tenant;
use App\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
/**
* Уведомление о новом лиде (ТЗ §18.5, событие new_lead).
*
* Отправляется получателям тенанта, у которых в notification_preferences
* включён канал email для события new_lead. Триггер — успешное создание
* сделки в RouteSupplierLeadJob.
*/
class NewLeadNotification extends Mailable
{
use Queueable;
use SerializesModels;
public function __construct(
public User $manager,
public Deal $deal,
public Tenant $tenant,
) {}
public function envelope(): Envelope
{
$projectName = $this->deal->project?->name ?? 'Без проекта';
return new Envelope(
subject: "Лидерра. Новый лид — {$projectName}",
);
}
public function content(): Content
{
return new Content(
view: 'emails.new_lead',
with: [
'manager' => $this->manager,
'deal' => $this->deal,
'tenant' => $this->tenant,
'projectName' => $this->deal->project?->name ?? 'Без проекта',
],
);
}
}