Commit 2a7870bed35f30735467ae9c4c77a35491a5a97e

Authored by Андрей Ларионов
1 parent 6370754b6b

Обновление главной страницы

Showing 2 changed files with 10 additions and 6 deletions Inline Diff

app/Http/Controllers/MainController.php
1 <?php 1 <?php
2 2
3 namespace App\Http\Controllers; 3 namespace App\Http\Controllers;
4 4
5 use App\Classes\Tools; 5 use App\Classes\Tools;
6 use App\Mail\MailRegistration; 6 use App\Mail\MailRegistration;
7 use App\Mail\MailRepair; 7 use App\Mail\MailRepair;
8 use App\Models\Ad_employer; 8 use App\Models\Ad_employer;
9 use App\Models\Category; 9 use App\Models\Category;
10 use App\Models\Education; 10 use App\Models\Education;
11 use App\Models\Employer; 11 use App\Models\Employer;
12 use App\Models\employers_main;
12 use App\Models\Job_title; 13 use App\Models\Job_title;
13 use App\Models\News; 14 use App\Models\News;
14 use App\Models\reclame; 15 use App\Models\reclame;
15 use App\Models\User; 16 use App\Models\User;
16 use Illuminate\Http\Request; 17 use Illuminate\Http\Request;
17 use Illuminate\Support\Facades\Auth; 18 use Illuminate\Support\Facades\Auth;
18 use Illuminate\Support\Facades\Hash; 19 use Illuminate\Support\Facades\Hash;
19 use Illuminate\Support\Facades\Mail; 20 use Illuminate\Support\Facades\Mail;
20 use Illuminate\Support\Facades\Validator; 21 use Illuminate\Support\Facades\Validator;
21 use App\Classes\StatusUser; 22 use App\Classes\StatusUser;
22 23
23 class MainController extends Controller 24 class MainController extends Controller
24 { 25 {
25 // Главная страница публичной части 26 // Главная страница публичной части
26 public function index() { 27 public function index() {
27 $news = News::query()->orderBy('id')->limit(6)->get(); 28 $news = News::query()->orderBy('id')->limit(6)->get();
28 29
29 $categories = Category::query()->selectRaw('count(ad_employers.id) as cnt, categories.*') 30 $categories = Category::query()->selectRaw('count(ad_employers.id) as cnt, categories.*')
30 ->join('ad_employers', 'ad_employers.category_id', '=', 'categories.id') 31 ->join('ad_employers', 'ad_employers.category_id', '=', 'categories.id')
31 ->OrderByDesc('created_at') 32 ->OrderByDesc('created_at')
32 ->GroupBy('categories.id') 33 ->GroupBy('categories.id')
33 ->get(); 34 ->get();
34 35
35 $employers = Employer::query()->orderBy('id')->limit(20)->get(); 36 $employers = employers_main::query()->with('employer')->orderBy('id')->limit(8)->get();
37
36 38
37 return view('index', compact('news', 'categories', 'employers')); 39 return view('index', compact('news', 'categories', 'employers'));
38 } 40 }
39 41
40 public function search_vacancies(Request $request) { 42 public function search_vacancies(Request $request) {
41 if ($request->has('search')) { 43 if ($request->has('search')) {
42 $search = $request->get('search'); 44 $search = $request->get('search');
43 $job_titles = Job_title::query()->where('name', 'LIKE', "%$search%")->first(); 45 $job_titles = Job_title::query()->where('name', 'LIKE', "%$search%")->first();
44 if (isset($job_titles->id)) 46 if (isset($job_titles->id))
45 if ($job_titles->id > 0) 47 if ($job_titles->id > 0)
46 return redirect()->route('vacancies', ['job' => $job_titles->id]); 48 return redirect()->route('vacancies', ['job' => $job_titles->id]);
47 } 49 }
48 } 50 }
49 51
50 public function vacancies(Request $request) { 52 public function vacancies(Request $request) {
51 //должности 53 //должности
52 $Job_title = Job_title::query()->orderBy('name')->get(); 54 $Job_title = Job_title::query()->orderBy('name')->get();
53 55
54 $categories = Category::query()->selectRaw('count(ad_employers.id) as cnt, categories.*') 56 $categories = Category::query()->selectRaw('count(ad_employers.id) as cnt, categories.*')
55 ->selectRaw('min(ad_employers.salary) as min_salary, max(ad_employers.salary) as max_salary') 57 ->selectRaw('min(ad_employers.salary) as min_salary, max(ad_employers.salary) as max_salary')
56 ->join('ad_employers', 'ad_employers.category_id', '=', 'categories.id') 58 ->join('ad_employers', 'ad_employers.category_id', '=', 'categories.id')
57 ->join('ad_jobs', 'ad_jobs.ad_employer_id', '=', 'ad_employers.id'); 59 ->join('ad_jobs', 'ad_jobs.ad_employer_id', '=', 'ad_employers.id');
58 60
59 //категории и вакансии 61 //категории и вакансии
60 if (($request->has('job')) && ($request->get('job') > 0)) { 62 if (($request->has('job')) && ($request->get('job') > 0)) {
61 $categories = $categories->Where('job_title_id', '=', $request->get('job')); 63 $categories = $categories->Where('job_title_id', '=', $request->get('job'));
62 } 64 }
63 65
64 $categories = $categories->OrderByDesc('created_at')->GroupBy('categories.id')->get(); 66 $categories = $categories->OrderByDesc('created_at')->GroupBy('categories.id')->get();
65 67
66 if ($request->ajax()) { 68 if ($request->ajax()) {
67 return view('ajax.vacancies', compact('categories')); 69 return view('ajax.vacancies', compact('categories'));
68 } else { 70 } else {
69 return view('vacancies', compact('Job_title', 'categories')); 71 return view('vacancies', compact('Job_title', 'categories'));
70 } 72 }
71 } 73 }
72 74
73 //Вакансии категория детальная 75 //Вакансии категория детальная
74 public function list_vacancies(Category $categories, Request $request) { 76 public function list_vacancies(Category $categories, Request $request) {
75 if (isset(Auth()->user()->id)) 77 if (isset(Auth()->user()->id))
76 $uid = Auth()->user()->id; 78 $uid = Auth()->user()->id;
77 else 79 else
78 $uid = 0; 80 $uid = 0;
79 81
80 $Query = Ad_employer::with('jobs')-> 82 $Query = Ad_employer::with('jobs')->
81 with('cat')-> 83 with('cat')->
82 with('employer')-> 84 with('employer')->
83 whereHas('jobs_code', function ($query) use ($request) { 85 whereHas('jobs_code', function ($query) use ($request) {
84 if ($request->ajax()) { 86 if ($request->ajax()) {
85 if (null !== ($request->get('job')) && ($request->get('job') !== 0)) { 87 if (null !== ($request->get('job')) && ($request->get('job') !== 0)) {
86 $query->where('job_title_id', $request->get('job')); 88 $query->where('job_title_id', $request->get('job'));
87 } 89 }
88 } 90 }
89 }) 91 })
90 ->select('ad_employers.*'); 92 ->select('ad_employers.*');
91 93
92 94
93 95
94 if ($categories->id > 0) { 96 if ($categories->id > 0) {
95 $Query = $Query->where('category_id', '=', $categories->id); 97 $Query = $Query->where('category_id', '=', $categories->id);
96 $Name_categori = Category::query()->where('id', '=', $categories->id)->get(); 98 $Name_categori = Category::query()->where('id', '=', $categories->id)->get();
97 } 99 }
98 100
99 if ($request->get('sort')) { 101 if ($request->get('sort')) {
100 $sort = $request->get('sort'); 102 $sort = $request->get('sort');
101 switch ($sort) { 103 switch ($sort) {
102 case 'name_up': $Query = $Query->orderBy('name')->orderBy('id'); break; 104 case 'name_up': $Query = $Query->orderBy('name')->orderBy('id'); break;
103 case 'name_down': $Query = $Query->orderByDesc('name')->orderby('id'); break; 105 case 'name_down': $Query = $Query->orderByDesc('name')->orderby('id'); break;
104 case 'created_at_up': $Query = $Query->OrderBy('created_at')->orderBy('id'); break; 106 case 'created_at_up': $Query = $Query->OrderBy('created_at')->orderBy('id'); break;
105 case 'created_at_down': $Query = $Query->orderByDesc('created_at')->orderBy('id'); break; 107 case 'created_at_down': $Query = $Query->orderByDesc('created_at')->orderBy('id'); break;
106 case 'default': $Query = $Query->orderBy('id')->orderby('updated_at'); break; 108 case 'default': $Query = $Query->orderBy('id')->orderby('updated_at'); break;
107 default: $Query = $Query->orderBy('id')->orderby('updated_at'); break; 109 default: $Query = $Query->orderBy('id')->orderby('updated_at'); break;
108 } 110 }
109 } 111 }
110 112
111 $Job_title = Job_title::query()->OrderBy('name')->get(); 113 $Job_title = Job_title::query()->OrderBy('name')->get();
112 114
113 $Query_count = $Query->count(); 115 $Query_count = $Query->count();
114 116
115 $Query = $Query->OrderBy('updated_at')->paginate(3); 117 $Query = $Query->OrderBy('updated_at')->paginate(3);
116 118
117 $Reclama = reclame::query()->get(); 119 $Reclama = reclame::query()->get();
118 120
119 121
120 122
121 if ($request->ajax()) { 123 if ($request->ajax()) {
122 if ($request->has('title')) { 124 if ($request->has('title')) {
123 return view('ajax.list_category', compact( 125 return view('ajax.list_category', compact(
124 'Name_categori' 126 'Name_categori'
125 )); 127 ));
126 } else { 128 } else {
127 return view('ajax.list_vacancies', compact('Query', 129 return view('ajax.list_vacancies', compact('Query',
128 'Query_count', 130 'Query_count',
129 'Name_categori', 131 'Name_categori',
130 'Reclama', 132 'Reclama',
131 'categories', 133 'categories',
132 'Job_title', 134 'Job_title',
133 'uid')); 135 'uid'));
134 } 136 }
135 } else { 137 } else {
136 //Вернуть все 138 //Вернуть все
137 return view('list_vacancies', compact('Query', 139 return view('list_vacancies', compact('Query',
138 'Query_count', 140 'Query_count',
139 'Reclama', 141 'Reclama',
140 'Name_categori', 142 'Name_categori',
141 'categories', 143 'categories',
142 'Job_title', 144 'Job_title',
143 'uid')); 145 'uid'));
144 } 146 }
145 } 147 }
146 148
147 // Образование 149 // Образование
148 public function education(Request $request) { 150 public function education(Request $request) {
149 $educations = Education::query(); 151 $educations = Education::query();
150 if (($request->has('search')) && (!empty($request->get('search')))) { 152 if (($request->has('search')) && (!empty($request->get('search')))) {
151 $search = trim($request->get('search')); 153 $search = trim($request->get('search'));
152 $educations = $educations->where('name', 'LIKE', "%$search%"); 154 $educations = $educations->where('name', 'LIKE', "%$search%");
153 } 155 }
154 156
155 if ($request->get('sort')) { 157 if ($request->get('sort')) {
156 $sort = $request->get('sort'); 158 $sort = $request->get('sort');
157 switch ($sort) { 159 switch ($sort) {
158 case 'name_up': $educations = $educations->orderBy('name')->orderBy('id'); break; 160 case 'name_up': $educations = $educations->orderBy('name')->orderBy('id'); break;
159 case 'name_down': $educations = $educations->orderByDesc('name')->orderby('id'); break; 161 case 'name_down': $educations = $educations->orderByDesc('name')->orderby('id'); break;
160 case 'created_at_up': $educations = $educations->OrderBy('created_at')->orderBy('id'); break; 162 case 'created_at_up': $educations = $educations->OrderBy('created_at')->orderBy('id'); break;
161 case 'created_at_down': $educations = $educations->orderByDesc('created_at')->orderBy('id'); break; 163 case 'created_at_down': $educations = $educations->orderByDesc('created_at')->orderBy('id'); break;
162 case 'default': $educations = $educations->orderBy('id')->orderby('updated_at'); break; 164 case 'default': $educations = $educations->orderBy('id')->orderby('updated_at'); break;
163 default: $educations = $educations->orderBy('id')->orderby('updated_at'); break; 165 default: $educations = $educations->orderBy('id')->orderby('updated_at'); break;
164 } 166 }
165 } 167 }
166 168
167 $count_edu = $educations->count(); 169 $count_edu = $educations->count();
168 $educations = $educations->paginate(6); 170 $educations = $educations->paginate(6);
169 if ($request->ajax()) { 171 if ($request->ajax()) {
170 return view('ajax.education', compact('educations')); 172 return view('ajax.education', compact('educations'));
171 } else { 173 } else {
172 return view('education', compact('educations', 'count_edu')); 174 return view('education', compact('educations', 'count_edu'));
173 } 175 }
174 } 176 }
175 177
176 // Контакты 178 // Контакты
177 public function contacts() { 179 public function contacts() {
178 return view('contacts'); 180 return view('contacts');
179 } 181 }
180 182
181 // Вход в личный кабинет 183 // Вход в личный кабинет
182 public function input_login(Request $request) 184 public function input_login(Request $request)
183 { 185 {
184 $params = $request->all(); 186 $params = $request->all();
185 187
186 188
187 $rules = [ 189 $rules = [
188 'email' => 'required|string|email', 190 'email' => 'required|string|email',
189 'password' => 'required|string|min:3|max:25', 191 'password' => 'required|string|min:3|max:25',
190 ]; 192 ];
191 193
192 $messages = [ 194 $messages = [
193 'required' => 'Укажите обязательное поле «:attribute»', 195 'required' => 'Укажите обязательное поле «:attribute»',
194 'email' => 'Введите корректный email', 196 'email' => 'Введите корректный email',
195 'min' => [ 197 'min' => [
196 'string' => 'Поле «:attribute» должно быть не меньше :min символов', 198 'string' => 'Поле «:attribute» должно быть не меньше :min символов',
197 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' 199 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт'
198 ], 200 ],
199 'max' => [ 201 'max' => [
200 'string' => 'Поле «:attribute» должно быть не больше :max символов', 202 'string' => 'Поле «:attribute» должно быть не больше :max символов',
201 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' 203 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт'
202 ], 204 ],
203 ]; 205 ];
204 206
205 $validator = Validator::make($request->all(), $rules, $messages); 207 $validator = Validator::make($request->all(), $rules, $messages);
206 208
207 209
208 if ($validator->fails()) { 210 if ($validator->fails()) {
209 return redirect()->route('index')->with('Error', "Email или пароль невалидный"); 211 return redirect()->route('index')->with('Error', "Email или пароль невалидный");
210 } else { 212 } else {
211 $credentials = $request->only('email', 'password'); 213 $credentials = $request->only('email', 'password');
212 214
213 if (Auth::attempt($credentials, $request->has('remember'))) { 215 if (Auth::attempt($credentials, $request->has('remember'))) {
214 216
215 if (is_null(Auth::user()->email_verified_at)) { 217 if (is_null(Auth::user()->email_verified_at)) {
216 Auth::logout(); 218 Auth::logout();
217 return json_encode(Array("ERROR" => "Адрес почты не подтвержден")); 219 return json_encode(Array("ERROR" => "Адрес почты не подтвержден"));
218 } 220 }
219 221
220 if (Auth::user()->is_worker) { 222 if (Auth::user()->is_worker) {
221 return json_encode(Array("REDIRECT" => redirect()->route('worker.cabinet')->getTargetUrl())); 223 return json_encode(Array("REDIRECT" => redirect()->route('worker.cabinet')->getTargetUrl()));
222 } else { 224 } else {
223 return json_encode(Array("REDIRECT" => redirect()->route('employer.cabinet')->getTargetUrl())); 225 return json_encode(Array("REDIRECT" => redirect()->route('employer.cabinet')->getTargetUrl()));
224 } 226 }
225 227
226 return json_encode(Array("SUCCESS" => "Вы успешно вошли в личный кабинет")); 228 return json_encode(Array("SUCCESS" => "Вы успешно вошли в личный кабинет"));
227 //->route('index') 229 //->route('index')
228 //->with('success', 'Вы вошли в личный кабинет.'); 230 //->with('success', 'Вы вошли в личный кабинет.');
229 } else { 231 } else {
230 return json_encode(Array("ERROR" => "Неверный логин или пароль!")); 232 return json_encode(Array("ERROR" => "Неверный логин или пароль!"));
231 } 233 }
232 } 234 }
233 } 235 }
234 236
235 // Восстановление пароля 237 // Восстановление пароля
236 public function repair_password(Request $request) { 238 public function repair_password(Request $request) {
237 $rules = [ 239 $rules = [
238 'email' => 'required|string|email', 240 'email' => 'required|string|email',
239 ]; 241 ];
240 242
241 $messages = [ 243 $messages = [
242 'required' => 'Укажите обязательное поле «:attribute»', 244 'required' => 'Укажите обязательное поле «:attribute»',
243 'email' => 'Введите корректный email', 245 'email' => 'Введите корректный email',
244 'min' => [ 246 'min' => [
245 'string' => 'Поле «:attribute» должно быть не меньше :min символов', 247 'string' => 'Поле «:attribute» должно быть не меньше :min символов',
246 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' 248 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт'
247 ], 249 ],
248 'max' => [ 250 'max' => [
249 'string' => 'Поле «:attribute» должно быть не больше :max символов', 251 'string' => 'Поле «:attribute» должно быть не больше :max символов',
250 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' 252 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт'
251 ], 253 ],
252 ]; 254 ];
253 255
254 $validator = Validator::make($request->all(), $rules, $messages); 256 $validator = Validator::make($request->all(), $rules, $messages);
255 257
256 if ($validator->fails()) { 258 if ($validator->fails()) {
257 return redirect()->back()->with('Error', "Email невалидный"); 259 return redirect()->back()->with('Error', "Email невалидный");
258 } else { 260 } else {
259 $new_password = Tools::generator_id(10); 261 $new_password = Tools::generator_id(10);
260 $hash_password = Hash::make($new_password); 262 $hash_password = Hash::make($new_password);
261 $user = User::query()->where('email', $request->get('email'))->first(); 263 $user = User::query()->where('email', $request->get('email'))->first();
262 $EditRec = User::find($user->id); 264 $EditRec = User::find($user->id);
263 $EditRec->password = $hash_password; 265 $EditRec->password = $hash_password;
264 $EditRec->save(); 266 $EditRec->save();
265 267
266 foreach ([$request->get('email')] as $recipient) { 268 foreach ([$request->get('email')] as $recipient) {
267 Mail::to($recipient)->send(new MailRepair($new_password)); 269 Mail::to($recipient)->send(new MailRepair($new_password));
268 } 270 }
269 return redirect()->route('index'); 271 return redirect()->route('index');
270 272
271 } 273 }
272 274
273 } 275 }
274 276
275 // Вывод новостей 277 // Вывод новостей
276 public function news(Request $request) { 278 public function news(Request $request) {
277 $Query = News::query(); 279 $Query = News::query();
278 if ($request->has('search')) { 280 if ($request->has('search')) {
279 $search = $request->get('search'); 281 $search = $request->get('search');
280 $Query = $Query->where('title', 'LIKE', "%$search%")-> 282 $Query = $Query->where('title', 'LIKE', "%$search%")->
281 orWhere('text', 'LIKE', "%$search%"); 283 orWhere('text', 'LIKE', "%$search%");
282 } 284 }
283 285
284 if ($request->ajax()) { 286 if ($request->ajax()) {
285 if ($request->get('sort')) { 287 if ($request->get('sort')) {
286 $sort = $request->get('sort'); 288 $sort = $request->get('sort');
287 switch ($sort) { 289 switch ($sort) {
288 case 'name_up': $Query = $Query->orderBy('title')->orderBy('id'); break; 290 case 'name_up': $Query = $Query->orderBy('title')->orderBy('id'); break;
289 case 'name_down': $Query = $Query->orderByDesc('title')->orderby('id'); break; 291 case 'name_down': $Query = $Query->orderByDesc('title')->orderby('id'); break;
290 case 'created_at_up': $Query = $Query->OrderBy('created_at')->orderBy('id'); break; 292 case 'created_at_up': $Query = $Query->OrderBy('created_at')->orderBy('id'); break;
291 case 'created_at_down': $Query = $Query->orderByDesc('created_at')->orderBy('id'); break; 293 case 'created_at_down': $Query = $Query->orderByDesc('created_at')->orderBy('id'); break;
292 case 'default': $Query = $Query->orderBy('id')->orderby('updated_at'); break; 294 case 'default': $Query = $Query->orderBy('id')->orderby('updated_at'); break;
293 default: $Query = $Query->orderBy('id')->orderby('updated_at'); break; 295 default: $Query = $Query->orderBy('id')->orderby('updated_at'); break;
294 } 296 }
295 } 297 }
296 } 298 }
297 $Query_count = $Query->count(); 299 $Query_count = $Query->count();
298 $Query = $Query->paginate(6); 300 $Query = $Query->paginate(6);
299 301
300 if ($request->ajax()) { 302 if ($request->ajax()) {
301 return view('ajax.news-list', compact('Query', 'Query_count')); 303 return view('ajax.news-list', compact('Query', 'Query_count'));
302 } else { 304 } else {
303 return view('news-list', compact('Query', 'Query_count')); 305 return view('news-list', compact('Query', 'Query_count'));
304 } 306 }
305 } 307 }
306 308
307 //Детальная новость 309 //Детальная новость
308 public function detail_new(News $new) { 310 public function detail_new(News $new) {
309 // Выборка 311 // Выборка
310 $Query = News::query()->where('id', $new->id)->get(); 312 $Query = News::query()->where('id', $new->id)->get();
311 $title = $Query[0]->title; 313 $title = $Query[0]->title;
312 $All_Query = News::query()->paginate(8); 314 $All_Query = News::query()->paginate(8);
313 return view('detail_new', compact('Query', 'All_Query', 'title')); 315 return view('detail_new', compact('Query', 'All_Query', 'title'));
314 } 316 }
315 } 317 }
316 318
resources/views/index.blade.php
1 @extends('layout.frontend', ['title' => 'Главная страница РекаМоре']) 1 @extends('layout.frontend', ['title' => 'Главная страница РекаМоре'])
2 2
3 @section('scripts') 3 @section('scripts')
4 4
5 @endsection 5 @endsection
6 6
7 @section('content') 7 @section('content')
8 <section class="work"> 8 <section class="work">
9 <div class="container"> 9 <div class="container">
10 <img src="{{ asset('images/1.png') }}" alt="" class="work__pic"> 10 <img src="{{ asset('images/1.png') }}" alt="" class="work__pic">
11 <div class="work__body"> 11 <div class="work__body">
12 <div class="work__title"> 12 <div class="work__title">
13 <h4>Работа в море / 13 <h4>Работа в море /
14 <span class="br">Работа на реке</span></h4> 14 <span class="br">Работа на реке</span></h4>
15 </div> 15 </div>
16 <div class="work__text">Профессиональная сеть морского сообщества «RekaMore.su» приветствует вас — 16 <div class="work__text">Профессиональная сеть морского сообщества «RekaMore.su» приветствует вас —
17 тех, кто не представляет себе жизнь без моря, тех, кто готов связать свою жизнь с работой в 17 тех, кто не представляет себе жизнь без моря, тех, кто готов связать свою жизнь с работой в
18 сложных, но очень интересных условиях. </div> 18 сложных, но очень интересных условиях. </div>
19 <div class="work__list"> 19 <div class="work__list">
20 <div>Тысячи соискателей увидят Ваше объявление</div> 20 <div>Тысячи соискателей увидят Ваше объявление</div>
21 <div>Десятки компаний выкладывают объявления каждый день</div> 21 <div>Десятки компаний выкладывают объявления каждый день</div>
22 </div> 22 </div>
23 <form class="search work__form" action="{{ route('search_vacancies') }}" method="GET"> 23 <form class="search work__form" action="{{ route('search_vacancies') }}" method="GET">
24 <input type="search" id="search" name="search" class="input" placeholder="Желаемая должность" required> 24 <input type="search" id="search" name="search" class="input" placeholder="Желаемая должность" required>
25 <button type="submit" class="button button_light">Посмотреть вакансии</button> 25 <button type="submit" class="button button_light">Посмотреть вакансии</button>
26 <span> 26 <span>
27 <svg> 27 <svg>
28 <use xlink:href="{{ asset('images/sprite.svg#search') }}"></use> 28 <use xlink:href="{{ asset('images/sprite.svg#search') }}"></use>
29 </svg> 29 </svg>
30 </span> 30 </span>
31 </form> 31 </form>
32 @guest 32 @guest
33 <a data-fancybox data-src="#question2" data-options='{"touch":false,"autoFocus":false}' class="button work__search">Я ищу сотрудника</a> 33 <a data-fancybox data-src="#question2" data-options='{"touch":false,"autoFocus":false}' class="button work__search">Я ищу сотрудника</a>
34 @else 34 @else
35 <a href="{{ route('bd_resume') }}" class="button work__search">Я ищу сотрудника</a> 35 <a href="{{ route('bd_resume') }}" class="button work__search">Я ищу сотрудника</a>
36 @endguest 36 @endguest
37 <div class="work__get"> 37 <div class="work__get">
38 <b>Скачать приложение</b> 38 <b>Скачать приложение</b>
39 <a href=""> 39 <a href="">
40 <img src="{{ asset('images/google.svg') }}" alt=""> 40 <img src="{{ asset('images/google.svg') }}" alt="">
41 </a> 41 </a>
42 <a href=""> 42 <a href="">
43 <img src="{{ asset('images/apple.svg') }}" alt=""> 43 <img src="{{ asset('images/apple.svg') }}" alt="">
44 </a> 44 </a>
45 </div> 45 </div>
46 </div> 46 </div>
47 </div> 47 </div>
48 </section> 48 </section>
49 <section class="numbers"> 49 <section class="numbers">
50 <div class="container"> 50 <div class="container">
51 <div class="numbers__body"> 51 <div class="numbers__body">
52 <div class="numbers__item"> 52 <div class="numbers__item">
53 <b>500+</b> 53 <b>500+</b>
54 <span>Резюме</span> 54 <span>Резюме</span>
55 Банальные, но неопровержимые выводы, а также элементы политического процесса лишь добавляют 55 Банальные, но неопровержимые выводы, а также элементы политического процесса лишь добавляют
56 фракционных разногласий и призваны к ответу. 56 фракционных разногласий и призваны к ответу.
57 </div> 57 </div>
58 <div class="numbers__item"> 58 <div class="numbers__item">
59 <b>1 000+</b> 59 <b>1 000+</b>
60 <span>Вакансий</span> 60 <span>Вакансий</span>
61 В рамках спецификации современных стандартов, диаграммы связей заблокированы в рамках своих 61 В рамках спецификации современных стандартов, диаграммы связей заблокированы в рамках своих
62 собственных рациональных ограничений. 62 собственных рациональных ограничений.
63 </div> 63 </div>
64 <div class="numbers__item"> 64 <div class="numbers__item">
65 <b>265</b> 65 <b>265</b>
66 <span>Компаний</span> 66 <span>Компаний</span>
67 Но сторонники тоталитаризма в науке заблокированы в рамках своих собственных рациональных 67 Но сторонники тоталитаризма в науке заблокированы в рамках своих собственных рациональных
68 ограничений. 68 ограничений.
69 </div> 69 </div>
70 </div> 70 </div>
71 </div> 71 </div>
72 </section> 72 </section>
73 <section class="vacancies"> 73 <section class="vacancies">
74 <div class="container"> 74 <div class="container">
75 <div class="title"><h4>Новые вакансии</h4></div> 75 <div class="title"><h4>Новые вакансии</h4></div>
76 <div class="vacancies__body"> 76 <div class="vacancies__body">
77 <a class="vacancies__more button button_light js-parent-toggle" href="{{ route('vacancies') }}">Все должности</a> 77 <a class="vacancies__more button button_light js-parent-toggle" href="{{ route('vacancies') }}">Все должности</a>
78 <div class="vacancies__list"> 78 <div class="vacancies__list">
79 @if ($categories->count()) 79 @if ($categories->count())
80 @foreach ($categories as $cat) 80 @foreach ($categories as $cat)
81 <a href="{{ route('list-vacancies', ['categories' => $cat->id]) }}" class="vacancies__item"> 81 <a href="{{ route('list-vacancies', ['categories' => $cat->id]) }}" class="vacancies__item">
82 <span style="border-color:#F4C4C2"> 82 <span style="border-color:#F4C4C2">
83 <b>{{ $cat->name }}</b> 83 <b>{{ $cat->name }}</b>
84 <i>Вакансий: <span>{{ $cat->cnt }}</span></i> 84 <i>Вакансий: <span>{{ $cat->cnt }}</span></i>
85 </span> 85 </span>
86 </a> 86 </a>
87 @endforeach 87 @endforeach
88 @else 88 @else
89 Тут пока нет никаких вакансий 89 Тут пока нет никаких вакансий
90 @endif 90 @endif
91 </div> 91 </div>
92 </div> 92 </div>
93 </div> 93 </div>
94 </section> 94 </section>
95 <section class="employer"> 95 <section class="employer">
96 <div class="container"> 96 <div class="container">
97 <div class="title"><h4>Работодатели</h4></div> 97 <div class="title"><h4>Работодатели</h4></div>
98 <div class="swiper js-employer-swiper"> 98 <div class="swiper js-employer-swiper">
99 <div class="swiper-wrapper"> 99 <div class="swiper-wrapper">
100 100
101 @if ($employers->count()) 101 @if ($employers->count())
102 @php 102 @php
103 $rec = 0; 103 $rec = 0;
104 $count = $employers->count(); 104 $count = $employers->count();
105
105 @endphp 106 @endphp
107
106 @foreach($employers as $emp) 108 @foreach($employers as $emp)
107 @php $rec++ @endphp 109 @php $rec++ @endphp
108 @if (($rec==1) || ($rec==5) || ($rec==9) || ($rec==13) || ($rec==17)) 110 @if (($rec==1) || ($rec==5) || ($rec==9) || ($rec==13) || ($rec==17))
109 <div class="swiper-slide"> 111 <div class="swiper-slide">
110 <div class="employer__item"> 112 <div class="employer__item">
111 @endif 113 @endif
112 @if (!empty($emp->logo)) 114 @if (!empty($emp->employer->logo))
113 <a href="{{ route('ad-employer', ['ad_employer' => $emp->id]) }}"> 115 <a href="{{ route('ad-employer', ['ad_employer' => $emp->employer->id]) }}">
114 <img src="{{ asset(Storage::url($emp->logo)) }}" alt="{{ $emp->name_company }}"> 116 <img src="{{ asset(Storage::url($emp->employer->logo)) }}" alt="{{ $emp->employer->name_company }}">
115 </a> 117 </a>
116 @else 118 @else
117 <a href="{{ route('ad-employer', ['ad_employer' => $emp->id]) }}"> 119 <a href="{{ route('ad-employer', ['ad_employer' => $emp->employer->id]) }}">
118 <img src="{{ asset('images/logo_emp.png') }}" alt="{{ $emp->name_company }}"> 120 <img src="{{ asset('images/logo_emp.png') }}" alt="{{ $emp->employer->name_company }}">
119 </a> 121 </a>
120 @endif 122 @endif
121 @if (($rec==4) || ($rec==8) || ($rec==12) || ($rec==16) || ($rec==20) || ($rec == $count)) 123 @if (($rec==4) || ($rec==8) || ($rec==12) || ($rec==16) || ($rec==20) || ($rec == $count))
122 </div> 124 </div>
123 </div> 125 </div>
124 @endif 126 @endif
125 @endforeach 127 @endforeach
126 @else 128 @else
127 <h5>Тут нет никаких записей</h5> 129 <h5>Тут нет никаких записей</h5>
128 @endif 130 @endif
129 </div> 131 </div>
130 <div class="swiper-pagination"></div> 132 <div class="swiper-pagination"></div>
131 </div> 133 </div>
132 <a href="{{ route('shipping_companies') }}" class="employer__more button button_light">Все работодатели</a> 134 <a href="{{ route('shipping_companies') }}" class="employer__more button button_light">Все работодатели</a>
133 </div> 135 </div>
134 </section> 136 </section>
135 <section class="about"> 137 <section class="about">
136 <div class="container"> 138 <div class="container">
137 <div class="about__wrapper"> 139 <div class="about__wrapper">
138 <div class="title about__title"><h4>О нас</h4></div> 140 <div class="title about__title"><h4>О нас</h4></div>
139 <div class="about__body"> 141 <div class="about__body">
140 <div class="about__line"></div> 142 <div class="about__line"></div>
141 <div class="about__item"> 143 <div class="about__item">
142 <b>Для работодателей</b> 144 <b>Для работодателей</b>
143 <span>Наш ресурс позволит Вам за демократичную цену найти нужных специалистов в кратчайшие 145 <span>Наш ресурс позволит Вам за демократичную цену найти нужных специалистов в кратчайшие
144 сроки, подробнее об условиях можно узнать <a href="{{ route('page', ['pages' => 'Stoimost-razmescheniya']) }}">здесь</a>.</span> 146 сроки, подробнее об условиях можно узнать <a href="{{ route('page', ['pages' => 'Stoimost-razmescheniya']) }}">здесь</a>.</span>
145 <a class="about__button button button_whited" style="text-decoration: none" href="{{ route('bd_resume') }}">Поиск сотрудников</a> 147 <a class="about__button button button_whited" style="text-decoration: none" href="{{ route('bd_resume') }}">Поиск сотрудников</a>
146 </div> 148 </div>
147 <div class="about__item"> 149 <div class="about__item">
148 <b>Для сотрудников</b> 150 <b>Для сотрудников</b>
149 <span>Наше преимущество — это большой объем вакансий, более 70 судоходных компаний России и 151 <span>Наше преимущество — это большой объем вакансий, более 70 судоходных компаний России и
150 СНГ ищут сотрудников через наши ресурсы</span> 152 СНГ ищут сотрудников через наши ресурсы</span>
151 <a class="about__button button button_whited" style="text-decoration: none" href="{{ route('vacancies') }}">Ищу работу</a> 153 <a class="about__button button button_whited" style="text-decoration: none" href="{{ route('vacancies') }}">Ищу работу</a>
152 </div> 154 </div>
153 </div> 155 </div>
154 </div> 156 </div>
155 </div> 157 </div>
156 </section> 158 </section>
157 159
158 @if ($news->count()) 160 @if ($news->count())
159 <section class="news"> 161 <section class="news">
160 <div class="container"> 162 <div class="container">
161 <div class="news__toper"> 163 <div class="news__toper">
162 <div class="title"><h4>Новости и статьи</h4></div> 164 <div class="title"><h4>Новости и статьи</h4></div>
163 <div class="navs"> 165 <div class="navs">
164 <button class="js-news-swiper-button-prev"> 166 <button class="js-news-swiper-button-prev">
165 <svg class="rotate180"> 167 <svg class="rotate180">
166 <use xlink:href="{{ asset('images/sprite.svg#arrow') }}"></use> 168 <use xlink:href="{{ asset('images/sprite.svg#arrow') }}"></use>
167 </svg> 169 </svg>
168 </button> 170 </button>
169 <button class="js-news-swiper-button-next"> 171 <button class="js-news-swiper-button-next">
170 <svg> 172 <svg>
171 <use xlink:href="{{ asset('images/sprite.svg#arrow') }}"></use> 173 <use xlink:href="{{ asset('images/sprite.svg#arrow') }}"></use>
172 </svg> 174 </svg>
173 </button> 175 </button>
174 </div> 176 </div>
175 </div> 177 </div>
176 178
177 <div class="swiper js-news-swiper"> 179 <div class="swiper js-news-swiper">
178 <div class="swiper-wrapper"> 180 <div class="swiper-wrapper">
179 181
180 @foreach ($news as $new) 182 @foreach ($news as $new)
181 <div class="swiper-slide"> 183 <div class="swiper-slide">
182 <div class="news__item"> 184 <div class="news__item">
183 <img src="{{ asset(Storage::url($new->image)) }}" alt="" class="news__item-pic"> 185 <img src="{{ asset(Storage::url($new->image)) }}" alt="" class="news__item-pic">
184 <div class="news__item-body"> 186 <div class="news__item-body">
185 <time datetime="{{ date('d.m.Y H:i:s', strtotime($new->created_at)) }}" class="news__item-date">{{ date('d.m.Y H:i:s', strtotime($new->created_at)) }}</time> 187 <time datetime="{{ date('d.m.Y H:i:s', strtotime($new->created_at)) }}" class="news__item-date">{{ date('d.m.Y H:i:s', strtotime($new->created_at)) }}</time>
186 <span class="news__item-title">{{ $new->title }}</span> 188 <span class="news__item-title">{{ $new->title }}</span>
187 <span class="news__item-text">{{ mb_strimwidth($new->text, 0, 100) }}</span> 189 <span class="news__item-text">{{ mb_strimwidth($new->text, 0, 100) }}</span>
188 <a href="{{ route('detail_new', ['new' => $new->id]) }}" class="news__item-more button button_light">Читать далее</a> 190 <a href="{{ route('detail_new', ['new' => $new->id]) }}" class="news__item-more button button_light">Читать далее</a>
189 </div> 191 </div>
190 </div> 192 </div>
191 </div> 193 </div>
192 @endforeach 194 @endforeach
193 195
194 </div> 196 </div>
195 <div class="swiper-pagination"></div> 197 <div class="swiper-pagination"></div>
196 </div> 198 </div>
197 <a href="{{ route('news') }}" class="news__all button button_light">Все новости</a> 199 <a href="{{ route('news') }}" class="news__all button button_light">Все новости</a>
198 200
199 </div> 201 </div>
200 </section> 202 </section>
201 @endif 203 @endif
202 204
203 <section class="info"> 205 <section class="info">
204 <div class="container"> 206 <div class="container">
205 <img src="images/5.png" alt="" class="info__pic"> 207 <img src="images/5.png" alt="" class="info__pic">
206 <div class="info__body"> 208 <div class="info__body">
207 <div class="title info__title"><h4>Мы в социальных сетях</h4></div> 209 <div class="title info__title"><h4>Мы в социальных сетях</h4></div>
208 <div class="info__item"> 210 <div class="info__item">
209 <div class="info__text">Телеграм — Подпишитесь на наш телеграм канал и получайте уведомления о 211 <div class="info__text">Телеграм — Подпишитесь на наш телеграм канал и получайте уведомления о
210 новых вакансиях прямо на свой смартфон</div> 212 новых вакансиях прямо на свой смартфон</div>
211 <a href="{{ $companies[0]->telegram }}" class="info__link" style="background:#20A0E1"> 213 <a href="{{ $companies[0]->telegram }}" class="info__link" style="background:#20A0E1">
212 <svg> 214 <svg>
213 <use xlink:href="{{ asset('images/sprite.svg#tg') }}"></use> 215 <use xlink:href="{{ asset('images/sprite.svg#tg') }}"></use>
214 </svg> 216 </svg>
215 Телеграм 217 Телеграм
216 </a> 218 </a>
217 </div> 219 </div>
218 <div class="info__item"> 220 <div class="info__item">
219 <div class="info__text">ВКонтакте — Лучшие вакансии за неделю выкладываем именно тут, информация 221 <div class="info__text">ВКонтакте — Лучшие вакансии за неделю выкладываем именно тут, информация
220 о судоходных компаниях, инструкции по работе с сайтом, конкурсы и многое другое</div> 222 о судоходных компаниях, инструкции по работе с сайтом, конкурсы и многое другое</div>
221 <a href="{{ $companies[0]->vkontact }}" class="info__link" style="background:#2787F5"> 223 <a href="{{ $companies[0]->vkontact }}" class="info__link" style="background:#2787F5">
222 <svg> 224 <svg>
223 <use xlink:href="{{ asset('images/sprite.svg#vk') }}"></use> 225 <use xlink:href="{{ asset('images/sprite.svg#vk') }}"></use>
224 </svg> 226 </svg>
225 ВКонтакте 227 ВКонтакте
226 </a> 228 </a>
227 </div> 229 </div>
228 </div> 230 </div>
229 </div> 231 </div>
230 </section> 232 </section>
231 @endsection 233 @endsection
232 234