Ver Fonte

error messages

Alexander Musikhin há 2 semanas atrás
pai
commit
f0ee202308

+ 11 - 0
app/Http/Controllers/OrderController.php

@@ -358,12 +358,23 @@ class OrderController extends Controller
 
     public function generateInstallationPack(Order $order)
     {
+        $errors = [];
+        if(!in_array($order->order_status_id, [Order::STATUS_READY_TO_MOUNT, Order::STATUS_IN_MOUNT]))
+            $errors[] = 'Статус должен быть "Готов к монтажу" или "В монтаже"!';
+        $errors = array_merge($errors, $order->isAllMafConnected());
+        if($errors) {
+            return redirect()->route('order.show', $order)->with(['danger' => $errors]);
+        }
+
         GenerateInstallationPack::dispatch($order, auth()->user()->id);
         return redirect()->route('order.show', $order)->with(['success' => 'Задача генерации документов создана!']);
     }
 
     public function generateHandoverPack(Order $order)
     {
+        if($errors = $order->canCreateHandover()) {
+            return redirect()->route('order.show', $order)->with(['danger' => $errors]);
+        }
         GenerateHandoverPack::dispatch($order, auth()->user()->id);
         return redirect()->route('order.show', $order)->with(['success' => 'Задача генерации документов создана!']);
     }

+ 9 - 0
app/Http/Controllers/ScheduleController.php

@@ -81,6 +81,15 @@ class ScheduleController extends Controller
             ->where('id', $validated['order_id'])
             ->first();
 
+        $errors = [];
+        if(!$order->brigadier_id) $errors[] = 'Не указан бригадир!';
+        if(!$order->installation_date) $errors[] = 'Не указана дата монтажа!';
+        if(!$order->install_days) $errors[] = 'Не указан срок монтажа!';
+
+        if($errors) {
+            return redirect()->route('order.show', $order->id)->with(['danger' => $errors]);
+        }
+
         if(empty($validated['skus'])) {
             foreach ($order->products_sku as $psku)
                 $validated['skus'][] = $psku->id;

+ 21 - 21
app/Models/Order.php

@@ -268,37 +268,37 @@ class Order extends Model
         );
     }
 
-    public function isAllMafConnected(): bool
+    public function isAllMafConnected(): array
     {
+        $errors = [];
         foreach($this->products_sku as $sku) {
             if($sku->maf_order_id) continue;
-            return false;
+            $errors[] = 'МАФ ' . $sku->product->article . 'не имеет номера заказа МАФ!';
         }
-        return true;
+        return $errors;
     }
 
-    public function canCreateHandover(): bool
+    public function canCreateHandover(): array
     {
-        if($this->photos->count() === 0) {
-            return false;
-        }
+        $errors = [];
+        if($this->photos->count() === 0) $errors[] = 'Не загружены фотографии!';
 
         foreach($this->products_sku as $sku) {
-            if($sku->maf_order_id === null) return false;
-            if($sku->passport_id === null) return false;
-            if($sku->rfid === null) return false;
-            if($sku->manufacture_date === null) return false;
-            if($sku->factory_number === null) return false;
-            if($sku->product->passport_name === null) return false;
-            if($sku->product->statement_name === null) return false;
-            if($sku->product->certificate_id === null) return false;
-            if($sku->product->service_life === null) return false;
-            if($sku->product->certificate_number === null) return false;
-            if($sku->product->certificate_date === null) return false;
-            if($sku->product->certificate_issuer === null) return false;
-            if($sku->product->certificate_type === null) return false;
+            if($sku->maf_order_id === null) $errors[] = 'МАФ ' . $sku->product->article . ' не имеет номера заказа!';
+            if($sku->passport_id === null) $errors[] = 'МАФ ' . $sku->product->article . ' не загружен паспорт!';
+            if($sku->rfid === null) $errors[] = 'МАФ ' . $sku->product->article . ' не имеет номера заказа!';
+            if($sku->manufacture_date === null) $errors[] = 'МАФ ' . $sku->product->article . ' нет даты производства!';
+            if($sku->factory_number === null) $errors[] = 'МАФ ' . $sku->product->article . ' нет заводского номера!';
+            if($sku->product->passport_name === null) $errors[] = 'МАФ ' . $sku->product->article . ' нет паспорта!';
+            if($sku->product->statement_name === null) $errors[] = 'МАФ ' . $sku->product->article . ' нет ведомости!';
+            if($sku->product->certificate_id === null) $errors[] = 'МАФ ' . $sku->product->article . ' нет сертификата!';
+            if($sku->product->service_life === null) $errors[] = 'МАФ ' . $sku->product->article . ' нет срока эксплуатации!';
+            if($sku->product->certificate_number === null) $errors[] = 'МАФ ' . $sku->product->article . ' нет номера сертификата!';
+            if($sku->product->certificate_date === null) $errors[] = 'МАФ ' . $sku->product->article . ' нет даты сертификата!';
+            if($sku->product->certificate_issuer === null) $errors[] = 'МАФ ' . $sku->product->article . ' нет орана выпустившего сертификат!';
+            if($sku->product->certificate_type === null) $errors[] = 'МАФ ' . $sku->product->article . ' нет типа сертификата!';
         }
-        return true;
+        return $errors;
     }
 
 }

+ 17 - 6
resources/views/layouts/app.blade.php

@@ -25,15 +25,26 @@
 <body>
     <div class="alerts">
         @if($message = session('success'))
-            <div class="main-alert alert alert-success" role="alert">
-                {{ $message }}
-            </div>
+            @php
+                if(!is_array($message)) $message = [$message];
+            @endphp
+            @foreach($message as $m)
+                <div class="main-alert alert alert-success" role="alert">
+                    {{ $m }}
+                </div>
+            @endforeach
+
         @endif
 
         @if($message = session('danger'))
-            <div class="main-alert alert alert-danger" role="alert">
-                {{ $message }}
-            </div>
+            @php
+                if(!is_array($message)) $message = [$message];
+            @endphp
+            @foreach($message as $m)
+                <div class="main-alert alert alert-danger" role="alert">
+                    {{ $m }}
+                </div>
+            @endforeach
         @endif
     </div>
 

+ 7 - 7
resources/views/orders/show.blade.php

@@ -31,16 +31,16 @@
                         @method('DELETE')
                     </form>
                 @endif
-                @if(in_array($order->order_status_id, [Order::STATUS_READY_TO_MOUNT, Order::STATUS_IN_MOUNT]) && $order->isAllMafConnected() && hasRole('admin,manager'))
+                @if(hasRole('admin,manager'))
                     <a href="{{ route('order.generate-installation-pack', $order) }}"
                        class="btn btn-sm mb-1 btn-primary">Документы для монтажа</a>
-                        @if(hasRole('admin'))
-                            <button @disabled(is_null($order->brigadier_id)) class="btn btn-primary btn-sm mb-1"
-                                    id="createScheduleButton">Перенести в график
-                            </button>
-                        @endif
                 @endif
-                @if($order->canCreateHandover() && hasRole('admin,manager'))
+                @if(hasRole('admin'))
+                    <button class="btn btn-primary btn-sm mb-1"
+                            id="createScheduleButton">Перенести в график
+                    </button>
+                @endif
+                @if(hasRole('admin,manager'))
                     <a href="{{ route('order.generate-handover-pack', $order) }}" class="btn btn-sm mb-1 btn-primary">Документы
                         для сдачи</a>
                 @endif