Jelajahi Sumber

add null filter value

Alexander Musikhin 1 bulan lalu
induk
melakukan
79abeb95de

+ 12 - 24
app/Http/Controllers/Controller.php

@@ -48,7 +48,7 @@ class Controller extends BaseController
         foreach ($columnNames as $columnName) {
             if(str_ends_with($columnName, '_price')) {
                 $this->data['ranges'][$columnName] = [
-                    'title' => $this->data['header'][$columnName . '_txt'],
+                    'title' => $this->data['header'][$columnName],
                     'min'   => $model::query()->min($columnName) / 100,
                     'max'   => $model::query()->max($columnName) / 100,
                 ];
@@ -130,31 +130,19 @@ class Controller extends BaseController
                 if(!$filterValue) continue;
                 if(Str::contains($filterValue, '||')) {
                     $values = explode('||', $filterValue);
-                    $query->whereIn($filterName, $values);
+                    foreach ($values as $v) {
+                        if($v == '-пусто-')
+                            $query->whereNull($filterName);
+                    }
+                    $query->orWhereIn($filterName, $values);
                 } else {
-                    $query->where($filterName, $filterValue);
+                    if($filterValue == '-пусто-') {
+                        $query->whereNull($filterName);
+                    } else {
+                        $query->where($filterName, $filterValue);
+                    }
+
                 }
-//                if(Str::contains($filterName, 'price')) {
-//                    $filterValue = $filterValue * 100;
-//                }
-//
-//                if(Str::endsWith($filterName, '_from')) {
-//                    if(is_string($filterValue) && DateHelper::isDate($filterValue)) {
-//                        $filterValue .= ' 00:00:00';
-//                    }
-//                    $query->where(Str::replace('_from', '', $filterName), '>=', $filterValue);
-//                } elseif(Str::endsWith($filterName, '_to')) {
-//                    if(is_string($filterValue) && DateHelper::isDate($filterValue)) {
-//                        $filterValue .= ' 23:59:59';
-//                    }
-//                    $query->where(Str::replace('_to', '', $filterName), '<=', $filterValue);
-//                } else {
-//                    if($filterValue == '-пусто-') {
-//                        $query->whereNull($filterName);
-//                    } else {
-//                        $query->where($filterName, '=', $filterValue);
-//                    }
-//                }
             }
         }
     }

+ 3 - 3
app/Http/Controllers/ProductController.php

@@ -32,9 +32,9 @@ class ProductController extends Controller
             'type'                      => 'Тип',
             'manufacturer_name'         => 'Наименование производителя',
             'sizes'                     => 'Размеры',
-            'product_price_txt'         => 'Цена товара',
-            'installation_price_txt'    => 'Цена установки',
-            'total_price_txt'           => 'Итоговая цена',
+            'product_price'             => 'Цена товара',
+            'installation_price'        => 'Цена установки',
+            'total_price'               => 'Итоговая цена',
             'note'                      => 'Примечания',
             'created_at'                => 'Дата создания',
             'certificate_id'            => 'Сертификат',

+ 2 - 1
resources/views/partials/newFilterElement.blade.php

@@ -40,7 +40,8 @@
                 const response = await fetch(`{!! route('getFilters', ['column' => $id, 'table' => $table]) !!}`);
                 const data = await response.json();
 
-                if (Array.isArray(data) && data.length && data[0] !== null) {
+                if (Array.isArray(data) && data.length) {
+                    if(data[0] === null) data[0] = '-пусто-';
                     const html = data.map(item => `
                     <div class="form-check">
                         <input class="form-check-input" type="checkbox" value="${escapeHtml(item)}" id="flexCheckDefault_${escapeHtml(item)}">