WorkersController.php
4.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Company;
use App\Models\Job_title;
use App\Models\Static_worker;
use App\Models\User;
use App\Models\Worker;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
class WorkersController extends Controller
{
public function index(Request $request) {
if ($request->ajax()) {
$user = User::find($request->id);
$request->offsetUnset('id');
$user->update($request->all());
}
$users = User::with('workers')->where('is_worker', '1');
$find_key = "";
if (isset($request->find)) {
$find_key = $request->find;
$users = $users->where(function($query) use($find_key) {
$query->Where('name_man', 'LIKE', "%$find_key%")
->orWhere('email', 'LIKE', "%$find_key%")
->orWhere('telephone', 'LIKE', "%$find_key%");
});
}
$users = $users->paginate(15);
if ($request->ajax()) {
return view('admin.worker.index_ajax', compact('users'));
} else {
return view('admin.worker.index', compact('users', 'find_key'));
}
}
public function form_edit_worker(Worker $worker) {
$job_titles = Job_title::query()->active()->orderBy('name')->get();
$time_end_anketa = 'Бессрочно';
if (!empty($worker->updated_at)) {
$long_days = Company::find(1)->time_resume;
$time_end_anketa = date("d.m.Y H:i:s", strtotime($worker->updated_at . "+$long_days days"));
}
return view('admin.worker.edit', compact('worker', 'job_titles', 'time_end_anketa'));
}
public function form_update_worker(Request $request, Worker $worker)
{
$params = $request->all();
$rules = [
'email' => 'email|string|max:255',
//'photo' => 'mimes:jpeg,jpg,png|max:15000',
];
$messages = [
'required' => 'Укажите обязательное поле «:attribute»',
'confirmed' => 'Пароли не совпадают',
'email' => 'Введите корректный email',
'min' => [
'string' => 'Поле «:attribute» должно быть не меньше :min символов',
'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт'
],
'max' => [
'string' => 'Поле «:attribute» должно быть не больше :max символов',
'file' => 'Файл «:attribute» должен быть не больше :max Кбайт'
],
];
$validator = Validator::make($params, $rules, $messages);
if ($validator->fails()) {
return back()->withErrors($validator)->withInput();
} else {
$user_id = $worker->user_id;
if ($request->has('photo')) {
if (!empty($worker->photo)) {
Storage::delete($worker->photo);
}
if (!empty($request->photo))
$params['photo'] = $request->file('photo')->store("workers/$user_id", 'public');
}
$worker->update($params);
return redirect()->route('admin.workers');
}
}
// кабинет - статистика работников
public function static_workers(Request $request) {
$stat = Static_worker::with('users');
//->join('users', 'users.id', '=', 'static_workers.user_id');
$users = User::query()->active()->OrderBy('id')->get();
$periods = Static_worker::query()->distinct('year_month')->select('year_month')->get();
if ($request->ajax()) {
if (isset($request->user_id))
if (!$request->user_id == "0")
$stat = $stat->Where('user_id', '=', $request->user_id);
if (isset($request->year_month)) {
if (!$request->year_month == "0")
$stat = $stat->Where('year_month', '=', $request->year_month);
}
}
$stat = $stat->OrderByDesc('year_month');
//->OrderBy('users.name');
//OrderBy('users.name')->
/*$stat->implode() loadMissing(['users' => function (Builder $query) {
$query->orderBy('name', 'asc');
}]);*/
$stat = $stat->paginate(15);
if ($request->ajax())
return view('admin.static.index_workers_ajax', compact('stat'));
else
return view('admin.static.index_workers', compact('stat', 'users', 'periods'));
}
}