Alexander Musikhin преди 1 седмица
родител
ревизия
8a6bceb98d
променени са 1 файла, в които са добавени 51 реда и са изтрити 19 реда
  1. 51 19
      app/Services/NotificationService.php

+ 51 - 19
app/Services/NotificationService.php

@@ -133,24 +133,56 @@ class NotificationService
         $brigadierName = $schedule->brigadier?->name ?? '-';
         $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);
         foreach ($users as $user) {
@@ -225,8 +257,8 @@ class NotificationService
                     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);
                 });
 
@@ -414,7 +446,7 @@ class NotificationService
         $query = User::query()
             ->whereIn('role', [Role::ADMIN, Role::ASSISTANT_HEAD, Role::WAREHOUSE_HEAD]);
 
-        $managerId = $reclamation->order?->user_id ?: $reclamation->user_id;
+        $managerId = $reclamation->user_id;
         if ($managerId) {
             $query->orWhere('id', $managerId);
         }