Jelajahi Sumber

access rights for brigadiers

Alexander Musikhin 2 bulan lalu
induk
melakukan
87db401984

+ 13 - 9
resources/views/layouts/menu.blade.php

@@ -1,19 +1,23 @@
 @if(auth()->check())
-    <li class="nav-item"><a class="nav-link @if($active == 'orders') active @endif" href="{{ route('order.index', session('gp_orders')) }}">Площадки</a>
-    </li>
-    <li class="nav-item"><a class="nav-link @if($active == 'product_sku') active @endif"
-                            href="{{ route('product_sku.index', session('gp_sku')) }}">МАФ</a></li>
-    <li class="nav-item"><a class="nav-link @if($active == 'maf_order') active @endif"
+    <li class="nav-item"><a class="nav-link @if($active == 'orders') active @endif" href="{{ route('order.index', session('gp_orders')) }}">Площадки</a></li>
+
+    @if(hasRole('admin,manager'))
+        <li class="nav-item"><a class="nav-link @if($active == 'product_sku') active @endif"
+                                href="{{ route('product_sku.index', session('gp_sku')) }}">МАФ</a></li>
+        <li class="nav-item"><a class="nav-link @if($active == 'maf_order') active @endif"
                             href="{{ route('maf_order.index', session('gp_maf_order')) }}">Заказы МАФ</a></li>
+        <li class="nav-item"><a class="nav-link @if($active == 'catalog') active @endif"
+                                href="{{ route('catalog.index', session('gp_catalog')) }}">Каталог</a></li>
+        <li class="nav-item"><a class="nav-link @if($active == 'reports') active @endif"
+                                href="{{ route('reports.index', session('gp_reports')) }}">Отчёты</a></li>
+    @endif
     <li class="nav-item"><a class="nav-link @if($active == 'reclamations') active @endif"
                             href="{{ route('reclamations.index', session('gp_reclamations')) }}">Рекламации</a></li>
 
-    <li class="nav-item"><a class="nav-link @if($active == 'catalog') active @endif"
-                            href="{{ route('catalog.index', session('gp_catalog')) }}">Каталог</a></li>
+
     <li class="nav-item"><a class="nav-link @if($active == 'schedule') active @endif"
                             href="{{ route('schedule.index', session('gp_schedule')) }}">График монтажей</a></li>
-    <li class="nav-item"><a class="nav-link @if($active == 'reports') active @endif"
-                            href="{{ route('reports.index', session('gp_reports')) }}">Отчёты</a></li>
+
 
     @if(hasrole('admin'))
 

+ 5 - 3
resources/views/orders/index.blade.php

@@ -5,9 +5,11 @@
         <div class="col-6">
             <h3>Площадки</h3>
         </div>
-        <div class="col-6 text-end">
-            <a href="{{ route('order.create') }}" class="btn btn-sm btn-primary">Создать</a>
-        </div>
+        @if(hasRole('admin,manager'))
+            <div class="col-6 text-end">
+                <a href="{{ route('order.create') }}" class="btn btn-sm btn-primary">Создать</a>
+            </div>
+        @endif
     </div>
 
 

+ 60 - 50
resources/views/orders/show.blade.php

@@ -15,8 +15,10 @@
                 </h3>
             </div>
             <div class="col-md-6 text-end">
-                <a href="{{ route('order.edit', ['order' => $order, 'previous_url' => $previous_url]) }}"
-                   class="btn btn-sm mb-1 btn-primary">Редактировать</a>
+                @if(hasRole('admin,manager'))
+                    <a href="{{ route('order.edit', ['order' => $order, 'previous_url' => $previous_url]) }}"
+                       class="btn btn-sm mb-1 btn-primary">Редактировать</a>
+                @endif
                 @if(hasRole('admin') && ($order->order_status_id == Order::STATUS_NEW))
                     <a href="#" onclick="if(confirm('Удалить площадку?')) $('form#destroy').submit();"
                        class="btn btn-sm mb-1 btn-danger">Удалить</a>
@@ -25,14 +27,14 @@
                         @method('DELETE')
                     </form>
                 @endif
-                @if(in_array($order->order_status_id, [Order::STATUS_READY_TO_MOUNT, Order::STATUS_IN_MOUNT]) && $order->isAllMafConnected())
+                @if(in_array($order->order_status_id, [Order::STATUS_READY_TO_MOUNT, Order::STATUS_IN_MOUNT]) && $order->isAllMafConnected() && hasRole('admin,manager'))
                     <a href="{{ route('order.generate-installation-pack', $order) }}"
                        class="btn btn-sm mb-1 btn-primary">Документы для монтажа</a>
                         <button @disabled(is_null($order->brigadier_id)) class="btn btn-primary btn-sm mb-1"
                                 id="createScheduleButton">Перенести в график
                         </button>
                 @endif
-                @if($order->canCreateHandover())
+                @if($order->canCreateHandover() && hasRole('admin,manager'))
                     <a href="{{ route('order.generate-handover-pack', $order) }}" class="btn btn-sm mb-1 btn-primary">Документы
                         для сдачи</a>
                 @endif
@@ -58,13 +60,13 @@
                 <div class="row">
                     <div class="col-md-8">Дата выхода на монтаж:</div>
                     <div class="col-md-4">
-                        <input type="date" name="installation_date" id="installation_date" value="{{ $order->installation_date }}" class="form-control form-control-sm">
+                        <input type="date" name="installation_date" id="installation_date" @disabled(!hasRole('admin,manager')) value="{{ $order->installation_date }}" class="form-control form-control-sm">
                     </div>
                 </div>
                 <div class="row">
                     <div class="col-md-8">Дней на монтаж:</div>
                     <div class="col-md-4">
-                        <input type="number" min="1" name="install_days" id="install_days" value="{{ $order->install_days }}"  class="form-control form-control-sm">
+                        <input type="number" min="1" name="install_days" id="install_days" @disabled(!hasRole('admin,manager')) value="{{ $order->install_days }}"  class="form-control form-control-sm">
                     </div>
                 </div>
                 <div>Дата готовности площадки: {{ $order->ready_date }}</div>
@@ -86,15 +88,17 @@
                 <hr>
                 <div class="documents">
                     Документы
-                    <button class="btn btn-sm text-success" onclick="$('#upl-documents').trigger('click');"><i
-                                class="bi bi-plus-circle-fill"></i> Загрузить
-                    </button>
-                    <form action="{{ route('order.upload-document', $order) }}" enctype="multipart/form-data"
-                          method="post" class="visually-hidden">
-                        @csrf
-                        <input required type="file" id="upl-documents" onchange="$(this).parent().submit()" multiple
-                               name="document[]" class="form-control form-control-sm">
-                    </form>
+                    @if(hasRole('admin,manager'))
+                        <button class="btn btn-sm text-success" onclick="$('#upl-documents').trigger('click');"><i
+                                    class="bi bi-plus-circle-fill"></i> Загрузить
+                        </button>
+                        <form action="{{ route('order.upload-document', $order) }}" enctype="multipart/form-data"
+                              method="post" class="visually-hidden">
+                            @csrf
+                            <input required type="file" id="upl-documents" onchange="$(this).parent().submit()" multiple
+                                   name="document[]" class="form-control form-control-sm">
+                        </form>
+                    @endif
                     <div class="row my-2 g-1">
                         @foreach($order->documents as $document)
                             <div class="col-12">
@@ -118,15 +122,17 @@
                 <hr>
                 <div class="statements">
                     Ведомости
-                    <button class="btn btn-sm text-success" onclick="$('#upl-statements').trigger('click');"><i
-                                class="bi bi-plus-circle-fill"></i> Загрузить
-                    </button>
-                    <form action="{{ route('order.upload-statement', $order) }}" enctype="multipart/form-data"
-                          method="post" class="visually-hidden">
-                        @csrf
-                        <input required type="file" id="upl-statements" onchange="$(this).parent().submit()" multiple
-                               name="statement[]" class="form-control form-control-sm">
-                    </form>
+                    @if(hasRole('admin,manager'))
+                        <button class="btn btn-sm text-success" onclick="$('#upl-statements').trigger('click');"><i
+                                    class="bi bi-plus-circle-fill"></i> Загрузить
+                        </button>
+                        <form action="{{ route('order.upload-statement', $order) }}" enctype="multipart/form-data"
+                              method="post" class="visually-hidden">
+                            @csrf
+                            <input required type="file" id="upl-statements" onchange="$(this).parent().submit()" multiple
+                                   name="statement[]" class="form-control form-control-sm">
+                        </form>
+                    @endif
                     <div class="row my-2 g-1">
                         @foreach($order->statements as $statement)
                             <div class="col-12">
@@ -232,17 +238,19 @@
                                             @endif
                                         </td>
                                         <td>
-                                            <a href="{{ route('product_sku.show', ['product_sku' =>$p, 'previous_url' => url()->current()]) }}">
-                                                {!! $p->product->article !!}
-                                            </a>
-                                            <br>
-                                            <a class="small"
-                                               href="{{ route('catalog.show', ['product' => $p->product, 'previous_url' => request()->fullUrl()]) }}">каталог</a>
+                                            @if(hasRole('admin,manager'))
+                                                <a href="{{ route('product_sku.show', ['product_sku' =>$p, 'previous_url' => url()->current()]) }}">
+                                                    {!! $p->product->article !!}
+                                                </a>
+                                                <br>
+                                                <a class="small"
+                                                   href="{{ route('catalog.show', ['product' => $p->product, 'previous_url' => request()->fullUrl()]) }}">каталог</a>
+                                            @endif
                                         </td>
                                         <td>{!! $p->product->nomenclature_number !!}</td>
                                         <td>{{ $p->status }}</td>
                                         <td>
-                                            @if($p->maf_order_id)
+                                            @if($p->maf_order_id && hasRole('admin,manager'))
                                                 <a href="{{ route('maf_order.show', $p->maf_order) }}">{{ $p->maf_order->order_number }}</a>
                                             @endif
                                         </td>
@@ -273,25 +281,27 @@
                             </table>
                         </div>
                         <div>
-                            <a href="{{ route('order.get-maf', $order) }}"
-                               class="btn btn-primary btn-sm mb-1 @disabled($order->ready_to_mount == 'Нет' )">Привязать
-                                все МАФы</a>
-                            <br class="d-md-none">
-                            <a href="{{ route('order.revert-maf', $order) }}" class="btn btn-primary btn-sm mb-1">Отвязать
-                                все МАФы</a>
-                            <br class="d-md-none">
-                            <button class="btn btn-primary btn-sm mb-1" data-bs-toggle="modal"
-                                    data-bs-target="#moveModal">Перенести МАФы
-                            </button>
-                            <br class="d-md-none">
-                            <button class="btn btn-sm mb-1 btn-warning" id="create-reclamation-button">Создать
-                                рекламацию
-                            </button>
-                            <form action="{{ route('reclamations.create', $order) }}" method="post"
-                                  class="visually-hidden" id="create-reclamation-form">
-                                @csrf
-                            </form>
-                            <a href="#" class="btn btn-primary btn-sm mb-1" id="ttnBtn">ТН</a>
+                            @if(hasRole('admin,manager'))
+                                <a href="{{ route('order.get-maf', $order) }}"
+                                   class="btn btn-primary btn-sm mb-1 @disabled($order->ready_to_mount == 'Нет' )">Привязать
+                                    все МАФы</a>
+                                <br class="d-md-none">
+                                <a href="{{ route('order.revert-maf', $order) }}" class="btn btn-primary btn-sm mb-1">Отвязать
+                                    все МАФы</a>
+                                <br class="d-md-none">
+                                <button class="btn btn-primary btn-sm mb-1" data-bs-toggle="modal"
+                                        data-bs-target="#moveModal">Перенести МАФы
+                                </button>
+                                <br class="d-md-none">
+                                <button class="btn btn-sm mb-1 btn-warning" id="create-reclamation-button">Создать
+                                    рекламацию
+                                </button>
+                                <form action="{{ route('reclamations.create', $order) }}" method="post"
+                                      class="visually-hidden" id="create-reclamation-form">
+                                    @csrf
+                                </form>
+                                <a href="#" class="btn btn-primary btn-sm mb-1" id="ttnBtn">ТН</a>
+                            @endif
                         </div>
                     @endif
                 </div>

+ 1 - 1
resources/views/partials/submit.blade.php

@@ -1,6 +1,6 @@
 <div class="row">
     <div class="@if(!($right ?? null)) offset-md-{{ $offset ?? 4 }} col-md-{{ (isset($offset)) ? 12 - $offset : 8  }} @endif buttons">
-        <button type="submit" class="btn btn-sm mb-1 btn-primary text-white">{{ $name ?? 'Сохранить' }}</button>
+        <button type="submit" class="btn btn-sm mb-1 btn-primary text-white" @disabled($disabled ?? false)>{{ $name ?? 'Сохранить' }}</button>
         @if(isset($delete) && !($deleteDisabled ?? false))
             <a href="#" class="btn btn-sm mb-1 btn-danger delete">{{ $delete['title'] ?? 'Удалить' }}</a>
         @endif

+ 39 - 26
resources/views/reclamations/edit.blade.php

@@ -8,8 +8,10 @@
                 <h4>Рекламация</h4>
             </div>
             <div class="col-xl-6 text-end mb-2">
+                @if(hasRole('admin,manager'))
                 <a href="{{ route('order.generate-reclamation-pack', $reclamation) }}" class="btn btn-primary btn-sm">Пакет
                     документов рекламации</a>
+                @endif
 
             </div>
         </div>
@@ -22,14 +24,14 @@
                     <input type="hidden" name="previous_url" value="{{ $previous_url ?? '' }}">
 
                     @include('partials.input', ['name' => 'order_name', 'title' => 'Площадка', 'disabled' => true, 'value' => $reclamation->order->common_name ?? ''])
-                    @include('partials.select', ['name' => 'status_id', 'title' => 'Статус', 'options' => $statuses, 'value' => $reclamation->status_id ?? old('status_id')])
-                    @include('partials.select', ['name' => 'user_id', 'title' => 'Менеджер', 'options' => $users, 'value' => $reclamation->user_id ?? old('user_id') ?? auth()->user()->id])
-                    @include('partials.input', ['name' => 'create_date', 'title' => 'Дата создания', 'type' => 'date', 'required' => true, 'value' => $reclamation->create_date ?? date('Y-m-d')])
-                    @include('partials.input', ['name' => 'finish_date', 'title' => 'Дата завершения', 'type' => 'date', 'required' => true, 'value' => $reclamation->finish_date ?? date('Y-m-d', strtotime('+30 days'))])
-                    @include('partials.select', ['name' => 'reason', 'title' => 'Причина', 'size' => 6, 'value' => $reclamation->reason ?? '', 'options' => ['Вандализм', 'Гарантия', 'Сервисное обслуживание'], 'key_as_val' => true])
-                    @include('partials.textarea', ['name' => 'guarantee', 'title' => 'Гарантии', 'size' => 6, 'value' => $reclamation->guarantee ?? ''])
-                    @include('partials.textarea', ['name' => 'whats_done', 'title' => 'Что сделано', 'size' => 6, 'value' => $reclamation->whats_done ?? ''])
-                    @include('partials.submit', ['name' => 'Сохранить', 'offset' => 5])
+                    @include('partials.select', ['name' => 'status_id', 'title' => 'Статус', 'options' => $statuses, 'value' => $reclamation->status_id ?? old('status_id'), 'disabled' => !hasRole('admin,manager')])
+                    @include('partials.select', ['name' => 'user_id', 'title' => 'Менеджер', 'options' => $users, 'value' => $reclamation->user_id ?? old('user_id') ?? auth()->user()->id, 'disabled' => !hasRole('admin,manager')])
+                    @include('partials.input', ['name' => 'create_date', 'title' => 'Дата создания', 'type' => 'date', 'required' => true, 'value' => $reclamation->create_date ?? date('Y-m-d'), 'disabled' => !hasRole('admin,manager')])
+                    @include('partials.input', ['name' => 'finish_date', 'title' => 'Дата завершения', 'type' => 'date', 'required' => true, 'value' => $reclamation->finish_date ?? date('Y-m-d', strtotime('+30 days')), 'disabled' => !hasRole('admin,manager')])
+                    @include('partials.select', ['name' => 'reason', 'title' => 'Причина', 'size' => 6, 'value' => $reclamation->reason ?? '', 'options' => ['Вандализм', 'Гарантия', 'Сервисное обслуживание'], 'key_as_val' => true, 'disabled' => !hasRole('admin,manager')])
+                    @include('partials.textarea', ['name' => 'guarantee', 'title' => 'Гарантии', 'size' => 6, 'value' => $reclamation->guarantee ?? '', 'disabled' => !hasRole('admin,manager')])
+                    @include('partials.textarea', ['name' => 'whats_done', 'title' => 'Что сделано', 'size' => 6, 'value' => $reclamation->whats_done ?? '', 'disabled' => !hasRole('admin,manager')])
+                    @include('partials.submit', ['name' => 'Сохранить', 'offset' => 5, 'disabled' => !hasRole('admin,manager')])
                 </form>
             </div>
             <div class="col-xl-7 ">
@@ -58,15 +60,17 @@
                                     @endif
                                 </td>
                                 <td>
+                                    @if(hasRole('admin,manager'))
                                     <a href="{{ route('product_sku.show', $p) }}">
                                         {!! $p->product->article !!}
                                     </a>
                                     <br>
                                     <a class="small" href="{{ route('catalog.show', $p->product) }}">каталог</a>
+                                    @endif
                                 </td>
                                 <td>{!! $p->product->nomenclature_number !!}</td>
                                 <td>
-                                    @if($p->maf_order_id)
+                                    @if($p->maf_order_id && hasRole('admin,manager'))
                                         <a href="{{ route('maf_order.show', $p->maf_order) }}">{{ $p->maf_order->order_number }}</a>
                                     @endif
                                 </td>
@@ -89,11 +93,13 @@
                                     <div class="col-10">
                                         <input type="text" name="name[]" value="{{ $detail->name }}"
                                                class="form-control form-control-sm col-auto"
+                                               @disabled(!hasRole('admin,manager'))
                                                placeholder="наименование или номер детали">
                                     </div>
                                     <div class="col-2">
                                         <input type="text" name="quantity[]" value="{{ $detail->quantity }}"
                                                class="form-control form-control-sm col-auto text-end"
+                                               @disabled(!hasRole('admin,manager'))
                                                placeholder="кол-во">
                                     </div>
                                 </div>
@@ -102,10 +108,12 @@
                                 <div class="col-10">
                                     <input type="text" name="name[]" value=""
                                            class="form-control form-control-sm col-auto"
+                                           @disabled(!hasRole('admin,manager'))
                                            placeholder="наименование или номер детали">
                                 </div>
                                 <div class="col-2">
                                     <input type="text" name="quantity[]" value=""
+                                           @disabled(!hasRole('admin,manager'))
                                            class="form-control form-control-sm col-auto text-end" placeholder="кол-во">
                                 </div>
                             </div>
@@ -113,9 +121,10 @@
                         <div class="row">
                             <div class="col-12 text-end">
                                 <span class="text-secondary small">Для удаления детали поставьте в количество 0</span>
-                                <span class="btn btn-light cursor-pointer"
+                                <span class="btn btn-light btn-sm cursor-pointer"
+                                      @disabled(!hasRole('admin,manager'))
                                       onclick="$('.rows').children().last().clone().appendTo('.rows');">Добавить строку</span>
-                                <button class="btn btn-primary btn-sm" type="submit">Сохранить детали</button>
+                                <button class="btn btn-primary btn-sm" type="submit" @disabled(!hasRole('admin,manager'))>Сохранить детали</button>
                             </div>
                         </div>
                         @if($errors->any())
@@ -126,15 +135,17 @@
                 <hr>
                 <div class="documents">
                     Документы
+                    @if(hasRole('admin,manager'))
                     <button class="btn btn-sm text-success" onclick="$('#upl-documents').trigger('click');"><i
                                 class="bi bi-plus-circle-fill"></i> Загрузить
                     </button>
-                    <form action="{{ route('reclamations.upload-document', $reclamation) }}"
-                          enctype="multipart/form-data" method="post" class="visually-hidden">
-                        @csrf
-                        <input required type="file" id="upl-documents" onchange="$(this).parent().submit()" multiple
-                               name="document[]" class="form-control form-control-sm">
-                    </form>
+                        <form action="{{ route('reclamations.upload-document', $reclamation) }}"
+                              enctype="multipart/form-data" method="post" class="visually-hidden">
+                            @csrf
+                            <input required type="file" id="upl-documents" onchange="$(this).parent().submit()" multiple
+                                   name="document[]" class="form-control form-control-sm">
+                        </form>
+                    @endif
                     <div class="row my-2 g-1">
                         @foreach($reclamation->documents as $document)
                             <div class="col-12">
@@ -158,15 +169,17 @@
                 <hr>
                 <div class="acts">
                     Акты
-                    <button class="btn btn-sm text-success" onclick="$('#upl-acts').trigger('click');"><i
-                                class="bi bi-plus-circle-fill"></i> Загрузить
-                    </button>
-                    <form action="{{ route('reclamations.upload-act', $reclamation) }}" enctype="multipart/form-data"
-                          method="post" class="visually-hidden">
-                        @csrf
-                        <input required type="file" id="upl-acts" onchange="$(this).parent().submit()" multiple
-                               name="acts[]" class="form-control form-control-sm">
-                    </form>
+                    @if(hasRole('admin,manager'))
+                        <button class="btn btn-sm text-success" onclick="$('#upl-acts').trigger('click');"><i
+                                    class="bi bi-plus-circle-fill"></i> Загрузить
+                        </button>
+                        <form action="{{ route('reclamations.upload-act', $reclamation) }}" enctype="multipart/form-data"
+                              method="post" class="visually-hidden">
+                            @csrf
+                            <input required type="file" id="upl-acts" onchange="$(this).parent().submit()" multiple
+                                   name="acts[]" class="form-control form-control-sm">
+                        </form>
+                    @endif
                     <div class="row my-2 g-1">
                         @foreach($reclamation->acts as $act)
                             <div class="col-12">

+ 24 - 52
resources/views/schedule/index.blade.php

@@ -59,7 +59,9 @@
                 <th>Кол-во позиций</th>
                 <th>Бригадир</th>
                 <th>Примечание</th>
-                <th></th>
+                @if(hasRole('admin,manager'))
+                    <th></th>
+                @endif
             </tr>
             </thead>
             <tbody>
@@ -98,24 +100,26 @@
                                 class="align-middle">{{ $schedule->brigadier->name }}</td>
                             <td style="background: {{ $schedule->brigadier->color }}"
                                 class="align-middle comment-{{ $schedule->id }}">{{ $schedule->comment }}</td>
-                            <td style="background: {{ $schedule->brigadier->color }}" class="align-middle">
-                                <i class="bi bi-pencil p-1 m-1 cursor-pointer text-primary editSchedule"
-                                   data-schedule-date="{{ $schedule->installation_date }}"
-                                   data-schedule-address="{{ $schedule->object_address }}"
-                                   data-schedule-district="{{ $schedule->district_id }}"
-                                   data-schedule-brigadier="{{ $schedule->brigadier_id }}"
-                                   data-schedule-area="{{ $schedule->area_id }}"
-                                   data-schedule-id="{{ $schedule->id }}"></i>
-                                <i class="bi bi-trash text-danger p-1 m-1 deleteSchedule"
-                                   data-schedule-id="{{ $schedule->id }}"></i>
-                                <div class="visually-hidden d-none">
-                                    <form action="{{ route('schedule.delete', $schedule->id) }}" method="post"
-                                          class="deleteForm-{{ $schedule->id }}">
-                                        @csrf
-                                        @method('DELETE')
-                                    </form>
-                                </div>
-                            </td>
+                            @if(hasRole('admin,manager'))
+                                <td style="background: {{ $schedule->brigadier->color }}" class="align-middle">
+                                    <i class="bi bi-pencil p-1 m-1 cursor-pointer text-primary editSchedule"
+                                       data-schedule-date="{{ $schedule->installation_date }}"
+                                       data-schedule-address="{{ $schedule->object_address }}"
+                                       data-schedule-district="{{ $schedule->district_id }}"
+                                       data-schedule-brigadier="{{ $schedule->brigadier_id }}"
+                                       data-schedule-area="{{ $schedule->area_id }}"
+                                       data-schedule-id="{{ $schedule->id }}"></i>
+                                    <i class="bi bi-trash text-danger p-1 m-1 deleteSchedule"
+                                       data-schedule-id="{{ $schedule->id }}"></i>
+                                    <div class="visually-hidden d-none">
+                                        <form action="{{ route('schedule.delete', $schedule->id) }}" method="post"
+                                              class="deleteForm-{{ $schedule->id }}">
+                                            @csrf
+                                            @method('DELETE')
+                                        </form>
+                                    </div>
+                                </td>
+                            @endif
                 </tr>
             @endforeach
             @endif
@@ -140,7 +144,7 @@
                             @csrf
                             <input type="hidden" name="id" value="0">
                             <div>
-                                @include('partials.input',  ['name' => 'installation_date', 'title' => 'Дата монтажа'])
+                                @include('partials.input',  ['name' => 'installation_date', 'title' => 'Дата монтажа', 'type' => 'date'])
                                 @include('partials.input',  ['name' => 'address_code', 'title' => 'Код адреса'])
                                 @include('partials.select', ['name' => 'district_id', 'title' => 'Округ', 'options' => $districts, 'first_empty' => true, 'required' => true])
                                 @include('partials.select', ['name' => 'area_id', 'title' => 'Район', 'options' => $areas, 'required' => true, 'first_empty' => true])
@@ -160,38 +164,6 @@
             </div>
         </div>
 
-        <!-- Модальное окно создания графика -->
-{{--        <div class="modal fade" id="createSchedule" tabindex="-1" aria-labelledby="exampleModalLabel"--}}
-{{--             aria-hidden="true">--}}
-{{--            <div class="modal-dialog modal-fullscreen-sm-down modal-lg">--}}
-{{--                <div class="modal-content">--}}
-{{--                    <div class="modal-header">--}}
-{{--                        <h1 class="modal-title fs-5" id="addModalLabel">Создать запись в графике</h1>--}}
-{{--                        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Закрыть"></button>--}}
-{{--                    </div>--}}
-{{--                    <div class="modal-body">--}}
-{{--                        <form action="{{ route('schedule.create') }}" method="post" id="scheduleCreateForm">--}}
-{{--                            @csrf--}}
-{{--                            @include('partials.input',  ['name' => 'installation_date', 'title' => 'Дата монтажа'])--}}
-{{--                            @include('partials.input',  ['name' => 'address_code', 'title' => 'Код адреса'])--}}
-{{--                            @include('partials.select', ['name' => 'district_id', 'title' => 'Округ', 'options' => $districts, 'first_empty' => true, 'required' => true])--}}
-{{--                            @include('partials.select', ['name' => 'area_id', 'title' => 'Район', 'options' => $areas, 'required' => true, 'first_empty' => true])--}}
-{{--                            @include('partials.input',  ['name' => 'object_address', 'title' => 'Адрес'])--}}
-{{--                            @include('partials.input',  ['name' => 'object_type', 'title' => 'Тип объекта'])--}}
-{{--                            @include('partials.textarea', ['name' => 'mafs', 'title' => 'МАФы'])--}}
-{{--                            @include('partials.input',  ['name' => 'mafs_count', 'title' => 'Кол-во МАФ'])--}}
-{{--                            @include('partials.select', ['name' => 'brigadier_id', 'title' => 'Бригадир', 'options' => $brigadiers, 'required' => true, 'first_empty' => true])--}}
-{{--                            @include('partials.textarea', ['name' => 'comment', 'title' => 'Комментарий'])--}}
-{{--                            <div class="text-center">--}}
-{{--                                <button type="submit" class="btn btn-primary btn-sm">Сохранить</button>--}}
-{{--                            </div>--}}
-{{--                        </form>--}}
-{{--                    </div>--}}
-{{--                </div>--}}
-{{--            </div>--}}
-{{--        </div>--}}
-
-
         @if($errors->any())
             @dump($errors)
         @endif

+ 80 - 62
routes/web.php

@@ -60,43 +60,85 @@ Route::middleware('auth:web')->group(function () {
     Route::post('profile/store', [UserController::class, 'storeProfile'])->name('profile.store');
 
     // catalog
-    Route::get('catalog', [ProductController::class, 'index'])->name('catalog.index');
-    Route::get('catalog/create', [ProductController::class, 'create'])->name('catalog.create');
-    Route::get('catalog/{product}', [ProductController::class, 'show'])->name('catalog.show');
-    Route::post('catalog', [ProductController::class, 'store'])->name('catalog.store');
-    Route::post('catalog/{product}', [ProductController::class, 'update'])->name('catalog.update');
-    Route::delete('catalog/{product}', [ProductController::class, 'delete'])->name('catalog.delete');
-
-    Route::post('catalog-import', [ProductController::class, 'import'])->name('catalog.import');
-    Route::post('catalog-export', [ProductController::class, 'export'])->name('catalog.export');
-
-    // contracts
-    Route::get('contract', [ContractController::class, 'index'])->name('contract.index');
-    Route::get('contract/create', [ContractController::class, 'create'])->name('contract.create');
-    Route::get('contract/{contract}', [ContractController::class, 'show'])->name('contract.show');
-    Route::post('contract', [ContractController::class, 'store'])->name('contract.store');
-    Route::post('contract/{contract}', [ContractController::class, 'update'])->name('contract.update');
-    Route::delete('contract/{contract}', [ContractController::class, 'delete'])->name('contract.delete');
-
-    // orders
-    Route::get('order', [OrderController::class, 'index'])->name('order.index');
-    Route::get('order/create', [OrderController::class, 'create'])->name('order.create');
-    Route::get('order/{order}', [OrderController::class, 'show'])->name('order.show');
-    Route::get('order/edit/{order}', [OrderController::class, 'edit'])->name('order.edit');
-    Route::post('order/store', [OrderController::class, 'store'])->name('order.store');
-    Route::post('order/update', [OrderController::class, 'store'])->name('order.update');
-    Route::delete('order/{order}', [OrderController::class, 'destroy'])->name('order.destroy')->middleware('role:' . Role::ADMIN);
+    Route::middleware('role:admin,manager')->group(function (){
+        Route::get('catalog', [ProductController::class, 'index'])->name('catalog.index');
+        Route::get('catalog/create', [ProductController::class, 'create'])->name('catalog.create');
+        Route::get('catalog/{product}', [ProductController::class, 'show'])->name('catalog.show');
+        Route::post('catalog', [ProductController::class, 'store'])->name('catalog.store');
+        Route::post('catalog/{product}', [ProductController::class, 'update'])->name('catalog.update');
+        Route::delete('catalog/{product}', [ProductController::class, 'delete'])->name('catalog.delete');
+
+        Route::post('catalog-import', [ProductController::class, 'import'])->name('catalog.import');
+        Route::post('catalog-export', [ProductController::class, 'export'])->name('catalog.export');
+
+        // contracts
+        Route::get('contract', [ContractController::class, 'index'])->name('contract.index');
+        Route::get('contract/create', [ContractController::class, 'create'])->name('contract.create');
+        Route::get('contract/{contract}', [ContractController::class, 'show'])->name('contract.show');
+        Route::post('contract', [ContractController::class, 'store'])->name('contract.store');
+        Route::post('contract/{contract}', [ContractController::class, 'update'])->name('contract.update');
+        Route::delete('contract/{contract}', [ContractController::class, 'delete'])->name('contract.delete');
+
+        // orders
+        Route::get('order/create', [OrderController::class, 'create'])->name('order.create');
+        Route::get('order/edit/{order}', [OrderController::class, 'edit'])->name('order.edit');
+
+        Route::post('order/store', [OrderController::class, 'store'])->name('order.store');
+        Route::post('order/update', [OrderController::class, 'store'])->name('order.update');
+        Route::delete('order/{order}', [OrderController::class, 'destroy'])->name('order.destroy')->middleware('role:' . Role::ADMIN);
+
+        Route::get('order/{order}/get-maf', [OrderController::class, 'getMafToOrder'])->name('order.get-maf');
+        Route::get('order/revert-maf/{order}', [OrderController::class, 'revertMaf'])->name('order.revert-maf');
+        Route::post('order/move-maf', [OrderController::class, 'moveMaf'])->name('order.move-maf');
+        Route::post('order/create-ttn', [OrderController::class, 'createTtn'])->name('order.create-ttn');
+
+        Route::post('order/{order}/upload-document', [OrderController::class, 'uploadDocument'])->name('order.upload-document');
+        Route::post('order/{order}/upload-statement', [OrderController::class, 'uploadStatement'])->name('order.upload-statement');
+
+        Route::post('catalog/{product}/upload-certificate', [ProductController::class, 'uploadCertificate'])->name('catalog.upload-certificate');
+        Route::post('product_sku/{product_sku}/upload-passport', [ProductSKUController::class, 'uploadPassport'])->name('product-sku.upload-passport');
+
+        Route::get('order/generate-installation-pack/{order}', [OrderController::class, 'generateInstallationPack'])->name('order.generate-installation-pack');
+        Route::get('order/generate-handover-pack/{order}', [OrderController::class, 'generateHandoverPack'])->name('order.generate-handover-pack');
+        Route::get('reclamation/generate-reclamation-pack/{reclamation}', [ReclamationController::class, 'generateReclamationPack'])->name('order.generate-reclamation-pack');
+        Route::get('reclamation/generate-photos-before-pack/{reclamation}', [ReclamationController::class, 'generatePhotosBeforePack'])->name('reclamation.generate-photos-before-pack');
+        Route::get('reclamation/generate-photos-after-pack/{reclamation}', [ReclamationController::class, 'generatePhotosAfterPack'])->name('reclamation.generate-photos-after-pack');
+
+        // Склад (МАФ)
+        Route::get('product_sku', [ProductSKUController::class, 'index'])->name('product_sku.index');
+        Route::get('product_sku/{product_sku}', [ProductSKUController::class, 'show'])->name('product_sku.show');
+        Route::post('product_sku/update/{product_sku}', [ProductSKUController::class, 'update'])->name('product_sku.update');
+
+        // Склад заказы МАФ
+        Route::get('maf_orders', [MafOrderController::class, 'index'])->name('maf_order.index');
+        Route::get('maf_orders/{maf_order}', [MafOrderController::class, 'show'])->name('maf_order.show');
+        Route::post('maf_orders/store', [MafOrderController::class, 'store'])->name('maf_order.store');
+        Route::post('maf_orders/update/{maf_order}', [MafOrderController::class, 'update'])->name('maf_order.update');
+        Route::delete('maf_orders/delete/{maf_order}', [MafOrderController::class, 'destroy'])->name('maf_order.delete');
+        Route::post('maf_orders/set_in_stock/{maf_order}', [MafOrderController::class, 'setInStock'])->name('maf_order.set_in_stock');
+
+        // рекламации
+        Route::post('reclamations/create/{order}', [ReclamationController::class, 'create'])->name('reclamations.create');
+        Route::post('reclamations/update/{reclamation}', [ReclamationController::class, 'update'])->name('reclamations.update');
+        Route::post('reclamations/{reclamation}/upload-document', [ReclamationController::class, 'uploadDocument'])->name('reclamations.upload-document');
+        Route::post('reclamations/{reclamation}/upload-act', [ReclamationController::class, 'uploadAct'])->name('reclamations.upload-act');
+        Route::post('reclamations/{reclamation}/update-details', [ReclamationController::class, 'updateDetails'])->name('reclamations.update-details');
+        Route::get('reports', [ReportController::class, 'index'])->name('reports.index');
+
+        // график
+        Route::post('schedule/create_from_order', [ScheduleController::class, 'createFromOrder'])->name('schedule.create-from-order');
+        Route::post('schedule/update', [ScheduleController::class, 'update'])->name('schedule.update');
+        Route::delete('schedule/delete/{schedule}', [ScheduleController::class, 'delete'])->name('schedule.delete');
+
+    });
 
-    Route::get('order/{order}/get-maf', [OrderController::class, 'getMafToOrder'])->name('order.get-maf');
-    Route::get('order/revert-maf/{order}', [OrderController::class, 'revertMaf'])->name('order.revert-maf');
-    Route::post('order/move-maf', [OrderController::class, 'moveMaf'])->name('order.move-maf');
-    Route::post('order/create-ttn', [OrderController::class, 'createTtn'])->name('order.create-ttn');
 
+
+    // orders for all
+    Route::get('order', [OrderController::class, 'index'])->name('order.index');
+    Route::get('order/{order}', [OrderController::class, 'show'])->name('order.show');
     Route::post('order/{order}/upload-photo', [OrderController::class, 'uploadPhoto'])->name('order.upload-photo');
-    Route::post('order/{order}/upload-document', [OrderController::class, 'uploadDocument'])->name('order.upload-document');
-    Route::post('order/{order}/upload-statement', [OrderController::class, 'uploadStatement'])->name('order.upload-statement');
-    Route::post('catalog/{product}/upload-certificate', [ProductController::class, 'uploadCertificate'])->name('catalog.upload-certificate');
-    Route::post('product_sku/{product_sku}/upload-passport', [ProductSKUController::class, 'uploadPassport'])->name('product-sku.upload-passport');
+    Route::get('order/generate-photos-pack/{order}', [OrderController::class, 'generatePhotosPack'])->name('order.generate-photos-pack');
 
     Route::middleware('role:' . Role::ADMIN)->group(function (){
         Route::delete('order/delete-photo/{order}/{file}', [OrderController::class, 'deletePhoto'])->name('order.delete-photo');
@@ -109,46 +151,22 @@ Route::middleware('auth:web')->group(function () {
         Route::delete('reclamations/delete-photo-after/{reclamation}/{file}', [ReclamationController::class, 'deletePhotoAfter'])->name('reclamations.delete-photo-after');
         Route::delete('reclamations/delete-document/{reclamation}/{file}', [ReclamationController::class, 'deleteDocument'])->name('reclamations.delete-document');
         Route::delete('reclamations/delete-act/{reclamation}/{file}', [ReclamationController::class, 'deleteAct'])->name('reclamations.delete-act');
-
     });
 
-    Route::get('order/generate-installation-pack/{order}', [OrderController::class, 'generateInstallationPack'])->name('order.generate-installation-pack');
-    Route::get('order/generate-handover-pack/{order}', [OrderController::class, 'generateHandoverPack'])->name('order.generate-handover-pack');
-    Route::get('reclamation/generate-reclamation-pack/{reclamation}', [ReclamationController::class, 'generateReclamationPack'])->name('order.generate-reclamation-pack');
-    Route::get('reclamation/generate-photos-before-pack/{reclamation}', [ReclamationController::class, 'generatePhotosBeforePack'])->name('reclamation.generate-photos-before-pack');
-    Route::get('reclamation/generate-photos-after-pack/{reclamation}', [ReclamationController::class, 'generatePhotosAfterPack'])->name('reclamation.generate-photos-after-pack');
-    Route::get('order/generate-photos-pack/{order}', [OrderController::class, 'generatePhotosPack'])->name('order.generate-photos-pack');
 
-    // Склад (МАФ)
-    Route::get('product_sku', [ProductSKUController::class, 'index'])->name('product_sku.index');
-    Route::get('product_sku/{product_sku}', [ProductSKUController::class, 'show'])->name('product_sku.show');
-    Route::post('product_sku/update/{product_sku}', [ProductSKUController::class, 'update'])->name('product_sku.update');
 
-    // Склад заказы МАФ
-    Route::get('maf_orders', [MafOrderController::class, 'index'])->name('maf_order.index');
-    Route::get('maf_orders/{maf_order}', [MafOrderController::class, 'show'])->name('maf_order.show');
-    Route::post('maf_orders/store', [MafOrderController::class, 'store'])->name('maf_order.store');
-    Route::post('maf_orders/update/{maf_order}', [MafOrderController::class, 'update'])->name('maf_order.update');
-    Route::delete('maf_orders/delete/{maf_order}', [MafOrderController::class, 'destroy'])->name('maf_order.delete');
-    Route::post('maf_orders/set_in_stock/{maf_order}', [MafOrderController::class, 'setInStock'])->name('maf_order.set_in_stock');
+
+
 
     Route::get('reclamations', [ReclamationController::class, 'index'])->name('reclamations.index');
-    Route::post('reclamations/create/{order}', [ReclamationController::class, 'create'])->name('reclamations.create');
     Route::get('reclamations/show/{reclamation}', [ReclamationController::class, 'show'])->name('reclamations.show');
-    Route::post('reclamations/update/{reclamation}', [ReclamationController::class, 'update'])->name('reclamations.update');
 
-    Route::post('reclamations/{reclamation}/upload-document', [ReclamationController::class, 'uploadDocument'])->name('reclamations.upload-document');
+
     Route::post('reclamations/{reclamation}/upload-photo-before', [ReclamationController::class, 'uploadPhotoBefore'])->name('reclamations.upload-photo-before');
     Route::post('reclamations/{reclamation}/upload-photo-after', [ReclamationController::class, 'uploadPhotoAfter'])->name('reclamations.upload-photo-after');
-    Route::post('reclamations/{reclamation}/upload-act', [ReclamationController::class, 'uploadAct'])->name('reclamations.upload-act');
-    Route::post('reclamations/{reclamation}/update-details', [ReclamationController::class, 'updateDetails'])->name('reclamations.update-details');
-
-    Route::get('reports', [ReportController::class, 'index'])->name('reports.index');
 
     Route::get('schedule', [ScheduleController::class, 'index'])->name('schedule.index');
-    Route::post('schedule/create_from_order', [ScheduleController::class, 'createFromOrder'])->name('schedule.create-from-order');
-    Route::post('schedule/update', [ScheduleController::class, 'update'])->name('schedule.update');
-    Route::delete('schedule/delete/{schedule}', [ScheduleController::class, 'delete'])->name('schedule.delete');
+
 
     // ajax search products
     Route::get('product/search', [ProductController::class, 'search'])->name('product.search');