Blame view

app/Http/Controllers/WorkerController.php 13.1 KB
b52b1df0d   Андрей Ларионов   Опция поднятия ва...
1
2
3
  <?php
  
  namespace App\Http\Controllers;
f3766c7c1   Андрей Ларионов   Коммит по регистр...
4
5
6
7
8
  use App\Classes\RusDate;
  use App\Models\Ad_employer;
  use App\Models\Category;
  use App\Models\Employer;
  use App\Models\Job_title;
e3c7b0ffb   Андрей Ларионов   Коммит на понедел...
9
  use App\Models\Message;
f3766c7c1   Андрей Ларионов   Коммит по регистр...
10
  use App\Models\reclame;
b52b1df0d   Андрей Ларионов   Опция поднятия ва...
11
  use App\Models\Static_worker;
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
12
  use App\Models\User;
f3766c7c1   Андрей Ларионов   Коммит по регистр...
13
  use App\Models\User as User_Model;
b52b1df0d   Андрей Ларионов   Опция поднятия ва...
14
  use App\Models\Worker;
f3766c7c1   Андрей Ларионов   Коммит по регистр...
15
  use Carbon\Carbon;
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
16
  use Illuminate\Auth\Events\Registered;
f3766c7c1   Андрей Ларионов   Коммит по регистр...
17
  use Illuminate\Database\Eloquent\Builder;
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
18
  use Illuminate\Http\JsonResponse;
b52b1df0d   Андрей Ларионов   Опция поднятия ва...
19
  use Illuminate\Http\Request;
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
20
21
22
  use Illuminate\Support\Facades\Auth;
  use Illuminate\Support\Facades\Hash;
  use Illuminate\Support\Facades\Validator;
b52b1df0d   Андрей Ларионов   Опция поднятия ва...
23
24
25
  
  class WorkerController extends Controller
  {
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
26
      public $status_work = array(0 => 'Ищу работу', 1 => 'Не указано', 2 => 'Не ищу работу');
5b68533bb   Андрей Ларионов   Работа над проект...
27
      //профиль
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
28
29
      public function profile(Worker $worker)
      {
673a7768d   Андрей Ларионов   Правки в админке,...
30
          $get_date = date('Y.m');
b52b1df0d   Андрей Ларионов   Опция поднятия ва...
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
  
          $c = Static_worker::query()->where('year_month', '=', $get_date)
              ->where('user_id', '=', $worker->users->id)
              ->get();
  
          if ($c->count() > 0) {
              $upd = Static_worker::find($c[0]->id);
              $upd->lookin = $upd->lookin + 1;
              $upd->save();
          } else {
              $crt = new Static_worker();
              $crt->lookin = 1;
              $crt->year_month = $get_date;
              $crt->user_id = $worker->user_id;
              $crt->save();
          }
  
          $stat = Static_worker::query()->where('year_month', '=', $get_date)
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
49
50
              ->where('user_id', '=', $worker->users->id)
              ->get();
b52b1df0d   Андрей Ларионов   Опция поднятия ва...
51
52
53
  
          return view('public.workers.profile', compact('worker', 'stat'));
      }
5b68533bb   Андрей Ларионов   Работа над проект...
54

a13ce8670   Андрей Ларионов   Обновление проект...
55
      // лист база резюме
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
56
57
      public function bd_resume()
      {
a13ce8670   Андрей Ларионов   Обновление проект...
58
59
60
61
62
63
64
65
66
67
          $status_work = $this->status_work;
          $resumes = Worker::query()->with('users')->with('job_titles');
  
          $res_count = $resumes->count();
          $resumes = $resumes->paginate(5);
  
          return view('resume', compact('resumes', 'status_work', 'res_count'));
      }
  
      // анкета соискателя
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
68
69
      public function resume_profile(Worker $worker)
      {
a13ce8670   Андрей Ларионов   Обновление проект...
70
71
72
73
74
75
76
77
78
79
          $status_work = $this->status_work;
          $Query = Worker::query()->with('users')->with('job_titles')
              ->with('place_worker')->with('sertificate')->with('prev_company')
              ->with('infobloks');
          $Query = $Query->where('id', '=', $worker->id);
          $Query = $Query->get();
          return view('worker', compact('Query', 'status_work'));
      }
  
      // скачать анкету соискателя
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
80
81
      public function resume_download(Worker $worker)
      {
a13ce8670   Андрей Ларионов   Обновление проект...
82
          print_r('Резюме для скачивания');
5b68533bb   Андрей Ларионов   Работа над проект...
83
      }
e3c7b0ffb   Андрей Ларионов   Коммит на понедел...
84
85
  
      // Кабинет работника
f3766c7c1   Андрей Ларионов   Коммит по регистр...
86
      public function cabinet()
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
87
      {
f3766c7c1   Андрей Ларионов   Коммит по регистр...
88
89
90
91
92
93
94
95
          $id = Auth()->user()->id;
          $Worker = Worker::query()->with('sertificate')->
          with('infobloks')->with('place_worker')->
          WhereHas('users',
              function (Builder $query) use ($id) {$query->Where('id', $id);
              })->get();
          dd($Worker);
          return view('workers.cabinet', compact('Worker'));
e3c7b0ffb   Андрей Ларионов   Коммит на понедел...
96
97
98
      }
  
      // Сохранение данных
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
99
100
      public function cabinet_save(Worker $worker, Request $request)
      {
e3c7b0ffb   Андрей Ларионов   Коммит на понедел...
101
102
103
104
  
      }
  
      // Сообщения данные
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
105
106
      public function messages($type_message)
      {
e3c7b0ffb   Андрей Ларионов   Коммит на понедел...
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
          $user_id = Auth()->user()->id;
  
          $messages_input = Message::query()->with('vacancies')->with('user_from')->
          Where('to_user_id', $user_id)->OrderByDesc('created_at');
  
          $messages_output = Message::query()->with('vacancies')->
          with('user_to')->where('user_id', $user_id)->
          OrderByDesc('created_at');
  
  
          $count_input = $messages_input->count();
          $count_output = $messages_output->count();
  
          if ($type_message == 'input') {
              $messages = $messages_input->paginate(15);
          }
  
          if ($type_message == 'output') {
              $messages = $messages_output->paginate(15);
          }
          // Вернуть все 100%
          return view('workers.messages', compact('messages', 'count_input', 'count_output', 'type_message', 'user_id'));
      }
  
      // Избранный
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
132
133
      public function favorite()
      {
1862e7a3a   Андрей Ларионов   Борьба против кол...
134
          dd('dgfghfghfgh');
e3c7b0ffb   Андрей Ларионов   Коммит на понедел...
135
136
137
138
139
          return view('workers.favorite');
      }
  
  
      // Сменить пароль
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
140
141
      public function new_password()
      {
f3766c7c1   Андрей Ларионов   Коммит по регистр...
142
143
          $email = Auth()->user()->email;
          return view('workers.new_password', compact('email'));
e3c7b0ffb   Андрей Ларионов   Коммит на понедел...
144
      }
f3766c7c1   Андрей Ларионов   Коммит по регистр...
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
      // Обновление пароля
      public function save_new_password(Request $request) {
          $use = Auth()->user();
          $request->validate([
              'password' => 'required|string',
              'new_password' => 'required|string',
              'new_password2' => 'required|string'
          ]);
  
          if ($request->get('new_password') == $request->get('new_password2'))
              if ($request->get('password') !== $request->get('new_password')) {
                  $credentials = $request->only('email', 'password');
                  if (Auth::attempt($credentials)) {
  
                      if (!is_null($use->email_verified_at)){
  
                          $user_data = User_Model::find($use->id);
                          $user_data->update([
                              'password' => Hash::make($request->get('new_password')),
                              'pubpassword' => base64_encode($request->get('new_password')),
                          ]);
                          return redirect()
                              ->route('worker.new_password')
                              ->with('success', 'Поздравляю! Вы обновили свой пароль!');
                      }
  
                      return redirect()
                          ->route('worker.new_password')
                          ->withError('Данная учетная запись не было верифицированна!');
                  }
              }
  
          return redirect()
              ->route('worker.new_password')
              ->withErrors('Не совпадение данных, обновите пароли!');
      }
  
      // Удаление профиля форма
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
183
184
      public function delete_profile()
      {
f3766c7c1   Андрей Ларионов   Коммит по регистр...
185
186
187
          $login = Auth()->user()->email;
          return view('workers.delete_profile', compact('login'));
      }
e3c7b0ffb   Андрей Ларионов   Коммит на понедел...
188

f3766c7c1   Андрей Ларионов   Коммит по регистр...
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
      // Удаление профиля код
      public function delete_profile_result(Request $request) {
          $Answer = $request->all();
          $user_id = Auth()->user()->id;
          $request->validate([
              'password' => 'required|string',
          ]);
  
          $credentials = $request->only('email', 'password');
          if (Auth::attempt($credentials)) {
              Auth::logout();
              $it = User_Model::find($user_id);
              //$it->delete();
              return redirect()->route('index')->with('success', 'Вы успешно удалили свой аккаунт');
          } else {
              return redirect()->route('worker.delete_profile')
                  ->withErrors( 'Неверный пароль! Нужен корректный пароль');
          }
e3c7b0ffb   Андрей Ларионов   Коммит на понедел...
207
      }
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
208
209
210
211
212
213
214
215
216
217
218
  
      // Регистрация соискателя
      public function register_worker(Request $request)
      {
          $params = $request->all();
  
          $rules = [
              'surname' => ['required', 'string', 'max:255'],
              'name_man' => ['required', 'string', 'max:255'],
              'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
              'password' => ['required', 'string', 'min:8'],
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
          ];
  
          $messages = [
              'required' => 'Укажите обязательное поле',
              'min' => [
                  'string' => 'Поле «:attribute» должно быть не меньше :min символов',
                  'integer' => 'Поле «:attribute» должно быть :min или больше',
                  'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт'
              ],
              'max' => [
                  'string' => 'Поле «:attribute» должно быть не больше :max символов',
                  'integer' => 'Поле «:attribute» должно быть :max или меньше',
                  'file' => 'Файл «:attribute» должен быть не больше :max Кбайт'
              ]
          ];
f3766c7c1   Андрей Ларионов   Коммит по регистр...
234

142d287bd   Андрей Ларионов   Шаблоны кабинета ...
235
236
237
238
239
240
241
          if ($request->get('password') !== $request->get('confirmed')){
              return json_encode(Array("ERROR" => "Error: Не совпадают пароль и подтверждение пароля"));
          }
  
          $validator = Validator::make($request->all(), $rules, $messages);
  
          if ($validator->fails()) {
f3766c7c1   Андрей Ларионов   Коммит по регистр...
242
              return json_encode(Array("ERROR" => "Error1: Регистрация оборвалась ошибкой! Не все обязательные поля заполнены. Либо вы уже были зарегистрированы в системе."));
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
243
244
245
246
247
248
249
250
251
          } else {
              $user = $this->create($params);
              event(new Registered($user));
  
              Auth::guard()->login($user);
          }
          if ($user) {
              return json_encode(Array("REDIRECT" => redirect()->route('worker.cabinet')->getTargetUrl()));;
          } else {
f3766c7c1   Андрей Ларионов   Коммит по регистр...
252
              return json_encode(Array("ERROR" => "Error2: Данные были утеряны!"));
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
253
254
255
256
257
258
259
260
261
          }
      }
  
      // Создание пользователя
      protected function create(array $data)
      {
          $Use = new User();
          $Code_user = $Use->create([
                              'name' => $data['surname']." ".$data['name_man'],
f3766c7c1   Андрей Ларионов   Коммит по регистр...
262
263
264
                              'name_man' => $data['name_man'],
                              'surname' => $data['surname'],
                              'surname2' => $data['surname2'],
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
265
266
267
268
269
                              'subscribe_email' => $data['email'],
                              'email' => $data['email'],
                              'telephone' => $data['telephone'],
                              'password' => Hash::make($data['password']),
                              'pubpassword' => base64_encode($data['password']),
f3766c7c1   Андрей Ларионов   Коммит по регистр...
270
                              'email_verified_at' => Carbon::now()
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
271
                          ]);
f3766c7c1   Андрей Ларионов   Коммит по регистр...
272
273
274
275
276
277
278
279
280
281
          if ($Code_user->id > 0) {
              $Worker = new Worker();
              $Worker->user_id = $Code_user->id;
              $Worker->position_work = $data['job_titles'];
              $Worker->email = $data['email'];
              $Worker->telephone = $data['telephone'];
              $Worker->save();
  
              return $Code_user;
          }
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
282
      }
1862e7a3a   Андрей Ларионов   Борьба против кол...
283

f3766c7c1   Андрей Ларионов   Коммит по регистр...
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
      // Борьба против колорадских жуков, хотя жуков победил все таки 45.
      public function colorado(Request $request) {
          if (isset($_COOKIE['favorite_vac'])) {
              $items = RusDate::count_vacancy_fav();
              $it = $_COOKIE['favorite_vac'];
              $it = str_replace('"', "", $it);
              $it = str_replace('[', "", $it);
              $it = str_replace(']', "", $it);
              $Arr = explode(",", $it);
          } else {
              $Arr = Array();
          }
  
          $Query = Ad_employer::Query();
          if (count($Arr) > 0) {
              $Query = $Query->whereIn('id', $Arr);
          }
          $Query = $Query->with('jobs')->
          with('cat')->
          with('employer')->
          whereHas('jobs_code', function ($query) use ($request) {
              if ($request->ajax()) {
                  if (null !== ($request->get('job'))) {
                      $query->where('job_title_id', $request->get('job'));
                  }
              }
          })->select('ad_employers.*');
  
          $Job_title = Job_title::query()->OrderBy('name')->get();
  
          $Query_count = $Query->count();
  
          $Query = $Query->OrderBy('updated_at')->paginate(3);
  
          return view('workers.favorite', compact('Query',
                                                      'Query_count',
                                                                  'Job_title'));
  
      }
  
      //Переписка пись-пись-пись
      public function dialog(User_Model $user1, User_Model $user2) {
          if (isset($user2->id)) {
              $companion = User_Model::query()->with('workers')->
              with('employers')->
              where('id', $user2->id)->first();
          }
  
          $Messages = Message::query()->with('response')->where(function($query) use ($user1, $user2) {
              $query->where('user_id', $user1->id)->where('to_user_id', $user2->id);
          })->orWhere(function($query) use ($user1, $user2) {
              $query->where('user_id', $user2->id)->where('to_user_id', $user1->id);
          })->OrderBy('created_at')->get();
  
          $id_vac = null;
          foreach ($Messages as $it) {
              if (isset($it->response)) {
                  foreach ($it->response as $r) {
                      if (isset($r->ad_employer_id)) {
                          $id_vac = $r->ad_employer_id;
                          break;
                      }
                  }
              }
              if (!is_null($id_vac)) break;
          }
  
          $ad_employer = null;
          if (!is_null($id_vac)) $ad_employer = Ad_employer::query()->where('id', $id_vac)->first();
          $sender = $user1;
1862e7a3a   Андрей Ларионов   Борьба против кол...
354

f3766c7c1   Андрей Ларионов   Коммит по регистр...
355
          return view('workers.dialog', compact('companion', 'sender', 'Messages', 'ad_employer'));
1862e7a3a   Андрей Ларионов   Борьба против кол...
356
      }
b52b1df0d   Андрей Ларионов   Опция поднятия ва...
357
  }
142d287bd   Андрей Ларионов   Шаблоны кабинета ...
358