Blame view

app/Http/Controllers/MainController.php 9.4 KB
02a1ed535   Андрей Ларионов   Первый коммит Rek...
1
2
3
  <?php
  
  namespace App\Http\Controllers;
d152a3a68   Андрей Ларионов   Создание основных...
4
  use App\Models\Ad_employer;
5b68533bb   Андрей Ларионов   Работа над проект...
5
  use App\Models\Category;
d152a3a68   Андрей Ларионов   Создание основных...
6
  use App\Models\Education;
5b68533bb   Андрей Ларионов   Работа над проект...
7
8
9
10
  use App\Models\Employer;
  use App\Models\Job_title;
  use App\Models\News;
  use App\Models\reclame;
02a1ed535   Андрей Ларионов   Первый коммит Rek...
11
  use Illuminate\Http\Request;
a13ce8670   Андрей Ларионов   Обновление проект...
12
13
  use Illuminate\Support\Facades\Auth;
  use Illuminate\Support\Facades\Validator;
a9dfa8c95   Андрей Ларионов   Обновление на 7 м...
14
  use App\Classes\StatusUser;
02a1ed535   Андрей Ларионов   Первый коммит Rek...
15
16
17
  
  class MainController extends Controller
  {
1d1c16604   Андрей Ларионов   Фрондэнд - главна...
18
      // Главная страница публичной части
02a1ed535   Андрей Ларионов   Первый коммит Rek...
19
      public function index() {
5b68533bb   Андрей Ларионов   Работа над проект...
20
21
22
23
24
25
26
27
28
29
30
31
          $news = News::query()->orderBy('id')->limit(6)->get();
  
          $categories = Category::query()->selectRaw('count(ad_employers.id) as cnt, categories.*')
              ->join('ad_employers', 'ad_employers.category_id', '=', 'categories.id')
              ->OrderByDesc('created_at')
              ->GroupBy('categories.id')
              ->get();
  
          $employers = Employer::query()->orderBy('id')->limit(20)->get();
  
          return view('index', compact('news', 'categories', 'employers'));
      }
a13ce8670   Андрей Ларионов   Обновление проект...
32
33
34
35
36
37
38
39
40
      public function search_vacancies(Request $request) {
          if ($request->has('search')) {
              $search = $request->get('search');
              $job_titles = Job_title::query()->where('name', 'LIKE', "%$search%")->first();
              if (isset($job_titles->id))
                  if ($job_titles->id > 0)
                      return redirect()->route('vacancies', ['job' => $job_titles->id]);
          }
      }
5b68533bb   Андрей Ларионов   Работа над проект...
41
42
43
44
45
46
47
48
49
50
      public function vacancies(Request $request) {
          //должности
          $Job_title = Job_title::query()->orderBy('name')->get();
  
          $categories = Category::query()->selectRaw('count(ad_employers.id) as cnt, categories.*')
                      ->selectRaw('min(ad_employers.salary) as min_salary, max(ad_employers.salary) as max_salary')
                      ->join('ad_employers', 'ad_employers.category_id', '=', 'categories.id')
                      ->join('ad_jobs', 'ad_jobs.ad_employer_id', '=', 'ad_employers.id');
  
          //категории и вакансии
a13ce8670   Андрей Ларионов   Обновление проект...
51
          if (($request->has('job')) && ($request->get('job') > 0)) {
5b68533bb   Андрей Ларионов   Работа над проект...
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
                $categories = $categories->Where('job_title_id', '=', $request->get('job'))
                                          ->OrderByDesc('created_at')
                                          ->GroupBy('categories.id')
                                          ->get();
          } else {
                  $categories = $categories->OrderByDesc('created_at')
                                             ->GroupBy('categories.id')
                                             ->get();
          }
  
          if ($request->ajax()) {
              return view('ajax.vacancies', compact('categories'));
          } else {
              return view('vacancies', compact('Job_title', 'categories'));
          }
      }
  
      //Вакансии категория детальная
d152a3a68   Андрей Ларионов   Создание основных...
70
      public function list_vacancies(Category $categories, Request $request) {
a9dfa8c95   Андрей Ларионов   Обновление на 7 м...
71
72
73
74
         if (isset(Auth()->user()->id))
             $uid = Auth()->user()->id;
         else
             $uid = 0;
d152a3a68   Андрей Ларионов   Создание основных...
75
76
77
78
79
80
  
         $Query = Ad_employer::with('jobs')->
                               with('cat')->
                               with('employer')->
                               whereHas('jobs_code', function ($query) use ($request) {
                                 if ($request->ajax()) {
a9dfa8c95   Андрей Ларионов   Обновление на 7 м...
81
                                     if (null !== ($request->get('job')) && ($request->get('job') !== 0)) {
d152a3a68   Андрей Ларионов   Создание основных...
82
83
84
85
86
                                         $query->where('job_title_id', $request->get('job'));
                                     }
                                 }
                              })
                              ->select('ad_employers.*');
a9dfa8c95   Андрей Ларионов   Обновление на 7 м...
87

d152a3a68   Андрей Ларионов   Создание основных...
88
89
90
         if ($categories->id > 0) {
             $Query = $Query->where('category_id', '=', $categories->id);
             $Name_categori = Category::query()->where('id', '=', $categories->id)->get();
5b68533bb   Андрей Ларионов   Работа над проект...
91
         }
a9dfa8c95   Андрей Ларионов   Обновление на 7 м...
92
93
94
95
96
97
98
99
100
101
102
          if ($request->get('sort')) {
              $sort = $request->get('sort');
              switch ($sort) {
                  case 'name_up': $Query = $Query->orderBy('name')->orderBy('id'); break;
                  case 'name_down': $Query = $Query->orderByDesc('name')->orderby('id'); break;
                  case 'created_at_up': $Query = $Query->OrderBy('created_at')->orderBy('id'); break;
                  case 'created_at_down': $Query = $Query->orderByDesc('created_at')->orderBy('id'); break;
                  case 'default': $Query = $Query->orderBy('id')->orderby('updated_at'); break;
                  default: $Query = $Query->orderBy('id')->orderby('updated_at'); break;
              }
          }
d152a3a68   Андрей Ларионов   Создание основных...
103
         $Job_title = Job_title::query()->OrderBy('name')->get();
5b68533bb   Андрей Ларионов   Работа над проект...
104

d152a3a68   Андрей Ларионов   Создание основных...
105
         $Query_count = $Query->count();
5b68533bb   Андрей Ларионов   Работа над проект...
106

d152a3a68   Андрей Ларионов   Создание основных...
107
108
109
         $Query = $Query->OrderBy('updated_at')->paginate(3);
  
         $Reclama = reclame::query()->limit(3)->get();
5b68533bb   Андрей Ларионов   Работа над проект...
110

d152a3a68   Андрей Ларионов   Создание основных...
111
112
113
  
  
         if ($request->ajax()) {
a9dfa8c95   Андрей Ларионов   Обновление на 7 м...
114
115
116
117
118
119
             return view('ajax.list_vacancies', compact('Query',
                                                            'Query_count',
                                                                      'Name_categori',
                                                                      'Reclama',
                                                                      'categories',
                                                                      'uid'));
d152a3a68   Андрей Ларионов   Создание основных...
120
121
122
123
124
125
126
         } else {
             //Вернуть все
             return view('list_vacancies', compact('Query',
                                                      'Query_count',
                                                                'Reclama',
                                                                'Name_categori',
                                                                'categories',
a9dfa8c95   Андрей Ларионов   Обновление на 7 м...
127
128
                                                                'Job_title',
                                                                'uid'));
5b68533bb   Андрей Ларионов   Работа над проект...
129
         }
d152a3a68   Андрей Ларионов   Создание основных...
130
      }
5b68533bb   Андрей Ларионов   Работа над проект...
131

d152a3a68   Андрей Ларионов   Создание основных...
132
133
134
      // Образование
      public function education(Request $request) {
          $educations = Education::query();
a9dfa8c95   Андрей Ларионов   Обновление на 7 м...
135
136
          if (($request->has('search')) && (!empty($request->get('search')))) {
              $search = trim($request->get('search'));
d152a3a68   Андрей Ларионов   Создание основных...
137
138
              $educations = $educations->where('name', 'LIKE', "%$search%");
          }
a9dfa8c95   Андрей Ларионов   Обновление на 7 м...
139
140
141
142
143
144
145
146
147
148
149
150
  
          if ($request->get('sort')) {
              $sort = $request->get('sort');
              switch ($sort) {
                  case 'name_up': $educations = $educations->orderBy('name')->orderBy('id'); break;
                  case 'name_down': $educations = $educations->orderByDesc('name')->orderby('id'); break;
                  case 'created_at_up': $educations = $educations->OrderBy('created_at')->orderBy('id'); break;
                  case 'created_at_down': $educations = $educations->orderByDesc('created_at')->orderBy('id'); break;
                  case 'default': $educations = $educations->orderBy('id')->orderby('updated_at'); break;
                  default: $educations = $educations->orderBy('id')->orderby('updated_at'); break;
              }
          }
d152a3a68   Андрей Ларионов   Создание основных...
151
152
          $count_edu = $educations->count();
          $educations = $educations->paginate(6);
a9dfa8c95   Андрей Ларионов   Обновление на 7 м...
153
154
155
156
157
          if ($request->ajax()) {
              return view('ajax.education', compact('educations'));
          } else {
              return view('education', compact('educations', 'count_edu'));
          }
d152a3a68   Андрей Ларионов   Создание основных...
158
      }
5b68533bb   Андрей Ларионов   Работа над проект...
159

d152a3a68   Андрей Ларионов   Создание основных...
160
161
162
      // Контакты
      public function contacts() {
          return view('contacts');
02a1ed535   Андрей Ларионов   Первый коммит Rek...
163
      }
a13ce8670   Андрей Ларионов   Обновление проект...
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
  
      // Вход в личный кабинет
      public function input_login(Request $request)
      {
          $rules = [
              'email' => 'required|string|email',
              'password' => 'required|string',
          ];
  
          $messages = [
              'required' => 'Укажите обязательное поле «:attribute»',
              'email' => 'Введите корректный email',
              'min' => [
                  'string' => 'Поле «:attribute» должно быть не меньше :min символов',
                  'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт'
              ],
              'max' => [
                  'string' => 'Поле «:attribute» должно быть не больше :max символов',
                  'file' => 'Файл «:attribute» должен быть не больше :max Кбайт'
              ],
          ];
  
          $validator = Validator::make($request->all(), $rules, $messages);
  
          if ($validator->fails()) {
e3c7b0ffb   Андрей Ларионов   Коммит на понедел...
189
              return redirect()->route('index')->with('Error', "Email или пароль невалидный");
a13ce8670   Андрей Ларионов   Обновление проект...
190
191
192
193
194
195
196
          } else {
              $credentials = $request->only('email', 'password');
  
              if (Auth::attempt($credentials, $request->has('remember'))) {
  
                  if (is_null(Auth::user()->email_verified_at)) {
                      Auth::logout();
e3c7b0ffb   Андрей Ларионов   Коммит на понедел...
197
                      return json_encode(Array("ERROR" => "Адрес почты не подтвержден"));
a13ce8670   Андрей Ларионов   Обновление проект...
198
199
200
                  }
  
                  if (Auth::user()->is_worker) {
e3c7b0ffb   Андрей Ларионов   Коммит на понедел...
201
                      return json_encode(Array("REDIRECT" => redirect()->route('worker.cabinet')->getTargetUrl()));
a13ce8670   Андрей Ларионов   Обновление проект...
202
                  } else {
e3c7b0ffb   Андрей Ларионов   Коммит на понедел...
203
                      return json_encode(Array("REDIRECT" => redirect()->route('employer.cabinet')->getTargetUrl()));
a13ce8670   Андрей Ларионов   Обновление проект...
204
                  }
e3c7b0ffb   Андрей Ларионов   Коммит на понедел...
205
                  return json_encode(Array("SUCCESS" => "Вы успешно вошли в личный кабинет"));
a13ce8670   Андрей Ларионов   Обновление проект...
206
207
208
                      //->route('index')
                      //->with('success', 'Вы вошли в личный кабинет.');
              } else {
e3c7b0ffb   Андрей Ларионов   Коммит на понедел...
209
                  return json_encode(Array("ERROR" => "Неверный логин или пароль!"));
a13ce8670   Андрей Ларионов   Обновление проект...
210
211
212
              }
          }
      }
02a1ed535   Андрей Ларионов   Первый коммит Rek...
213
  }