|
@@ -133,24 +133,56 @@ class NotificationService
|
|
|
$brigadierName = $schedule->brigadier?->name ?? '-';
|
|
$brigadierName = $schedule->brigadier?->name ?? '-';
|
|
|
$date = DateHelper::getHumanDate((string)$schedule->installation_date, true);
|
|
$date = DateHelper::getHumanDate((string)$schedule->installation_date, true);
|
|
|
|
|
|
|
|
- $message = sprintf(
|
|
|
|
|
- '%s добавлено в график монтажей на %s, Бригадир %s.',
|
|
|
|
|
- $schedule->object_address,
|
|
|
|
|
- $date,
|
|
|
|
|
- $brigadierName,
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ if ((string)$schedule->source === 'Рекламации') {
|
|
|
|
|
+ $reclamationId = $this->extractReclamationId((string)$schedule->address_code);
|
|
|
|
|
|
|
|
- $orderLink = $schedule->order_id
|
|
|
|
|
- ? route('order.show', ['order' => $schedule->order_id])
|
|
|
|
|
- : route('schedule.index');
|
|
|
|
|
|
|
+ $message = sprintf(
|
|
|
|
|
+ 'Рекламация №%s по адресу %s добавлена в график на %s, Бригадир %s.',
|
|
|
|
|
+ $reclamationId ?? '—',
|
|
|
|
|
+ $schedule->object_address,
|
|
|
|
|
+ $date,
|
|
|
|
|
+ $brigadierName,
|
|
|
|
|
+ );
|
|
|
|
|
|
|
|
- $messageHtml = sprintf(
|
|
|
|
|
- '<a href="%s">%s</a> добавлено в график монтажей на %s, Бригадир %s.',
|
|
|
|
|
- $orderLink,
|
|
|
|
|
- e($schedule->object_address),
|
|
|
|
|
- e($date),
|
|
|
|
|
- e($brigadierName),
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ $reclamationLink = $reclamationId
|
|
|
|
|
+ ? route('reclamations.show', ['reclamation' => $reclamationId])
|
|
|
|
|
+ : route('schedule.index');
|
|
|
|
|
+ $orderLink = $schedule->order_id
|
|
|
|
|
+ ? route('order.show', ['order' => $schedule->order_id])
|
|
|
|
|
+ : null;
|
|
|
|
|
+
|
|
|
|
|
+ $addressHtml = $orderLink
|
|
|
|
|
+ ? sprintf('<a href="%s">%s</a>', $orderLink, e($schedule->object_address))
|
|
|
|
|
+ : e($schedule->object_address);
|
|
|
|
|
+
|
|
|
|
|
+ $messageHtml = sprintf(
|
|
|
|
|
+ '<a href="%s">Рекламация №%s</a> по адресу %s добавлена в график на %s, Бригадир %s.',
|
|
|
|
|
+ $reclamationLink,
|
|
|
|
|
+ $reclamationId ?? '—',
|
|
|
|
|
+ $addressHtml,
|
|
|
|
|
+ e($date),
|
|
|
|
|
+ e($brigadierName),
|
|
|
|
|
+ );
|
|
|
|
|
+ } else {
|
|
|
|
|
+ $message = sprintf(
|
|
|
|
|
+ '%s добавлено в график монтажей на %s, Бригадир %s.',
|
|
|
|
|
+ $schedule->object_address,
|
|
|
|
|
+ $date,
|
|
|
|
|
+ $brigadierName,
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
|
|
+ $orderLink = $schedule->order_id
|
|
|
|
|
+ ? route('order.show', ['order' => $schedule->order_id])
|
|
|
|
|
+ : route('schedule.index');
|
|
|
|
|
+
|
|
|
|
|
+ $messageHtml = sprintf(
|
|
|
|
|
+ '<a href="%s">%s</a> добавлено в график монтажей на %s, Бригадир %s.',
|
|
|
|
|
+ $orderLink,
|
|
|
|
|
+ e($schedule->object_address),
|
|
|
|
|
+ e($date),
|
|
|
|
|
+ e($brigadierName),
|
|
|
|
|
+ );
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
$users = $this->scheduleRecipients($schedule);
|
|
$users = $this->scheduleRecipients($schedule);
|
|
|
foreach ($users as $user) {
|
|
foreach ($users as $user) {
|
|
@@ -225,8 +257,8 @@ class NotificationService
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- Mail::raw($notification->message, function ($mail) use ($email, $notification) {
|
|
|
|
|
- $mail->to($email)
|
|
|
|
|
|
|
+ Mail::html($notification->message_html, function ($message) use ($email, $notification) {
|
|
|
|
|
+ $message->to($email)
|
|
|
->subject($notification->title);
|
|
->subject($notification->title);
|
|
|
});
|
|
});
|
|
|
|
|
|
|
@@ -414,7 +446,7 @@ class NotificationService
|
|
|
$query = User::query()
|
|
$query = User::query()
|
|
|
->whereIn('role', [Role::ADMIN, Role::ASSISTANT_HEAD, Role::WAREHOUSE_HEAD]);
|
|
->whereIn('role', [Role::ADMIN, Role::ASSISTANT_HEAD, Role::WAREHOUSE_HEAD]);
|
|
|
|
|
|
|
|
- $managerId = $reclamation->order?->user_id ?: $reclamation->user_id;
|
|
|
|
|
|
|
+ $managerId = $reclamation->user_id;
|
|
|
if ($managerId) {
|
|
if ($managerId) {
|
|
|
$query->orWhere('id', $managerId);
|
|
$query->orWhere('id', $managerId);
|
|
|
}
|
|
}
|