Blame view

app/Http/Controllers/MainController.php 5.91 KB
b80175387   Андрей Ларионов   Начальный проект ...
1
2
3
  <?php
  
  namespace App\Http\Controllers;
1bd0c6ebe   Андрей Ларионов   Админка, товары. ...
4
5
  use App\Models\Banner;
  use App\Models\Category;
2f5f2c1a4   Андрей Ларионов   Баг с версткой ка...
6
  use App\Models\Good;
c5f46e4d5   Андрей Ларионов   Таблица просматри...
7
  use App\Models\Good_Look;
0cbcbfbe0   Андрей Ларионов   Дополнительные ка...
8
  use App\Models\Images;
2f5f2c1a4   Андрей Ларионов   Баг с версткой ка...
9
  use App\Models\News;
0cbcbfbe0   Андрей Ларионов   Дополнительные ка...
10
11
  use App\Models\Project;
  use Illuminate\Database\Eloquent\Model;
b80175387   Андрей Ларионов   Начальный проект ...
12
  use Illuminate\Http\Request;
0cbcbfbe0   Андрей Ларионов   Дополнительные ка...
13
  use Illuminate\Support\Facades\Redirect;
2f5f2c1a4   Андрей Ларионов   Баг с версткой ка...
14
  use Symfony\Component\HttpFoundation\Session\Storage;
b80175387   Андрей Ларионов   Начальный проект ...
15
16
17
  
  class MainController extends Controller
  {
2f5f2c1a4   Андрей Ларионов   Баг с версткой ка...
18
      // Главная страница
e73374e87   Андрей Ларионов   Каталог ajax, адм...
19
      public function index(Request $request) {
1bd0c6ebe   Андрей Ларионов   Админка, товары. ...
20
21
          $banners = Banner::query()->orderBy('id')->get();
          $category = Category::query()->where('parent_id', '>', '0')->orderBy('id')->get();
2f5f2c1a4   Андрей Ларионов   Баг с версткой ка...
22

e73374e87   Андрей Ларионов   Каталог ajax, адм...
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
          if (isset($request->filter)) {
              switch($request->filter) {
                  case 'news':$goods = Good::query()->where('new', '=', '1')->orderBy('id')->paginate(8);
                      break;
                  case 'stock':$goods = Good::query()->where('stock_count', '>', '0')->orderBy('id')->paginate(8);
                      break;
                  case 'demo':$goods = Good::query()->where('demo', '=', '1')->orderBy('id')->paginate(8);
                      break;
                  case 'way':$goods = Good::query()->where('way', '=', '1')->orderBy('id')->paginate(8);
                      break;
              }
          } else {
              $goods = Good::query()->where('new', '=', '1')->orderBy('id')->paginate(8);
          }
  
          if ($request->ajax()) {
              return view('index_catalog', compact('goods'));
          }
2f5f2c1a4   Андрей Ларионов   Баг с версткой ка...
41

e73374e87   Андрей Ларионов   Каталог ajax, адм...
42
          $news = News::query()->where('status', '=', 'новость')->orderByDesc('id')->paginate(3);
2f5f2c1a4   Андрей Ларионов   Баг с версткой ка...
43
          return view('index',
e73374e87   Андрей Ларионов   Каталог ajax, адм...
44
              compact('banners', 'category', 'goods', 'news'));
b80175387   Андрей Ларионов   Начальный проект ...
45
46
47
48
49
      }
  
      public function about_company() {
          return view('company');
      }
477c05de1   Андрей Ларионов   Каталог страница,...
50
      public function catalog(Request $request) {
295e31db7   Андрей Ларионов   Флаги производите...
51
          $items = Category::all();
477c05de1   Андрей Ларионов   Каталог страница,...
52
          $goods = Good::query();
e73374e87   Андрей Ларионов   Каталог ajax, адм...
53
          $articles = News::query()->where('status', '=', 'статья')->paginate(10);
c5f46e4d5   Андрей Ларионов   Таблица просматри...
54
55
56
57
          $reviews = News::query()->where('status', '=', 'отзыв')->paginate(10);
          $lookin = Good_Look::query()->orderByDesc('id')->limit(4)->pluck('goods_id')
              ->toArray();
          $lookin_good = Good::query()->whereIn('id', $lookin)->get();
477c05de1   Андрей Ларионов   Каталог страница,...
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
  
          if (!empty($request->filter)) {
              $filter = json_decode($request->filter);
              if (is_array($filter))
                 if (count($filter) > 0)
                     $goods = $goods->whereIn('manufacturer', $filter);
          }
  
          if ($request->sort == 'count') {
              $goods = $goods->orderByDesc('stock_count')->orderByDesc('id');
          }
  
          if ($request->sort == 'price') {
              $goods = $goods->orderBy('price')->orderByDesc('id');
          }
  
          $goods = $goods->paginate(6);
  
          if ($request->ajax()) {
              return view('catalog_ajax', compact('goods'));
          }
477c05de1   Андрей Ларионов   Каталог страница,...
79
          $mf = Good::select('manufacturer')->distinct()->pluck('manufacturer');
c5f46e4d5   Андрей Ларионов   Таблица просматри...
80
81
          return view('catalog', compact('items', 'goods',
              'mf', 'articles', 'reviews', 'lookin_good'));
477c05de1   Андрей Ларионов   Каталог страница,...
82
      }
e73374e87   Андрей Ларионов   Каталог ajax, адм...
83
      public function catalog_detail(Category $category, Request $request) {
477c05de1   Андрей Ларионов   Каталог страница,...
84
85
          $items = Category::all();
          $title = $category->name;
e73374e87   Андрей Ларионов   Каталог ajax, адм...
86
          $goods = Good::query()->where('category_id', '=', $category->id);
c5f46e4d5   Андрей Ларионов   Таблица просматри...
87
88
89
90
91
          $articles = News::query()->where('status', '=', 'статья')->paginate(10);
          $reviews = News::query()->where('status', '=', 'отзыв')->paginate(10);
          $lookin = Good_Look::query()->orderByDesc('id')->limit(4)->pluck('goods_id')
              ->toArray();
          $lookin_good = Good::query()->whereIn('id', $lookin)->get();
e73374e87   Андрей Ларионов   Каталог ajax, адм...
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
  
          if (!empty($request->filter)) {
              $filter = json_decode($request->filter);
              if (is_array($filter))
                  if (count($filter) > 0)
                      $goods = $goods->whereIn('manufacturer', $filter);
          }
  
          if ($request->sort == 'count') {
              $goods = $goods->orderByDesc('stock_count')->orderByDesc('id');
          }
  
          if ($request->sort == 'price') {
              $goods = $goods->orderBy('price')->orderByDesc('id');
          }
  
          $goods = $goods->paginate(6);
  
          if ($request->ajax()) {
              return view('catalog_ajax', compact('goods'));
          }
477c05de1   Андрей Ларионов   Каталог страница,...
113

e73374e87   Андрей Ларионов   Каталог ajax, адм...
114
          $mf = Good::select('manufacturer')->distinct()->where('category_id', '=', $category->id)->pluck('manufacturer');
c5f46e4d5   Андрей Ларионов   Таблица просматри...
115
116
          return view('catalog_detail', compact('items', 'category', 'goods',
              'title', 'mf', 'articles', 'reviews', 'lookin_good'));
b80175387   Андрей Ларионов   Начальный проект ...
117
      }
295e31db7   Андрей Ларионов   Флаги производите...
118
      public function good(Good $good) {
c5f46e4d5   Андрей Ларионов   Таблица просматри...
119
120
121
          $looking = new Good_Look();
          $looking->goods_id = $good->id;
          $looking->save();
0cbcbfbe0   Андрей Ларионов   Дополнительные ка...
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
          $lookin = Good_Look::query()->orderByDesc('id')->limit(4)->pluck('goods_id')
              ->toArray();
          $lookin_good = Good::query()->whereIn('id', $lookin)->get();
  
          $projects = Project::query()->orderByDesc('id')->paginate(10);
  
          $sample = Images::query()->where('sample', '=', '1')->where('good_id', '=', $good->id)->get();
          $images = Images::query()->where('sample', '=', '0')->where('good_id', '=', $good->id)->get();
  
          $accessory = Good::query()->where('accessory_id', '=', $good->id)->limit(8)->get();
          $tooling = Good::query()->where('tooling_id', '=', $good->id)->limit(8)->get();
          $also_good = Good::query()->where('category_id', '=', $good->category_id)->limit(4)->get();
  
          return view('good', compact('good', 'accessory', 'tooling', 'also_good',
              'sample', 'images', 'lookin_good', 'projects'));
      }
  
      public function simple_good(Good $good) {
          $looking = new Good_Look();
          $looking->goods_id = $good->id;
          $looking->save();
  
          $lookin = Good_Look::query()->orderByDesc('id')->limit(4)->pluck('goods_id')
              ->toArray();
          $lookin_good = Good::query()->whereIn('id', $lookin)->get();
  
          return view('simple_good', compact('good', 'lookin_good'));
b80175387   Андрей Ларионов   Начальный проект ...
149
      }
0cbcbfbe0   Андрей Ларионов   Дополнительные ка...
150
151
      public function online() {
          return redirect()->back();
b80175387   Андрей Ларионов   Начальный проект ...
152
153
      }
  }