Blame view

app/Http/Controllers/Admin/UsersController.php 9.25 KB
8de035475   Андрей Ларионов   Создание: Структу...
1
2
3
4
5
  <?php
  
  namespace App\Http\Controllers\Admin;
  
  use App\Http\Controllers\Controller;
313a7a805   Андрей Ларионов   Работа с разделом...
6
  use App\Http\Requests\BaseUserRequest;
077a30c8a   Андрей Ларионов   Таблица контента ...
7
  use App\Models\ContentRoles;
9b4580039   Андрей Ларионов   Медиа сущность, д...
8
  use App\Models\Job_title;
8de035475   Андрей Ларионов   Создание: Структу...
9
  use App\Models\User;
9b4580039   Андрей Ларионов   Медиа сущность, д...
10
  use App\Models\Worker;
8de035475   Андрей Ларионов   Создание: Структу...
11
  use Illuminate\Http\Request;
bb2fb443d   Андрей Ларионов   Архитектурное доп...
12
  use Illuminate\Support\Facades\Auth;
e2907a576   Hayk Nazaryan   workers fixes
13
  use Illuminate\Support\Facades\Hash;
0961cd3e6   Андрей Ларионов   Модель программы ...
14
  use Illuminate\Support\Facades\Storage;
313a7a805   Андрей Ларионов   Работа с разделом...
15
16
17
18
19
  use PhpOffice\PhpSpreadsheet\Spreadsheet;
  use PhpOffice\PhpSpreadsheet\Style\Alignment;
  use PhpOffice\PhpSpreadsheet\Style\Border;
  use PhpOffice\PhpSpreadsheet\Style\Font;
  use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
8de035475   Андрей Ларионов   Создание: Структу...
20
21
22
23
  
  class UsersController extends Controller
  {
      public function index(Request $request) {
f64f4890f   Андрей Ларионов   Блейды и контролл...
24
          $title = 'Админка - Пользователи системы';
bb2fb443d   Андрей Ларионов   Архитектурное доп...
25
          $id_admin = Auth::user()->id;
8de035475   Андрей Ларионов   Создание: Структу...
26
27
28
29
30
          if ($request->ajax()) {
              $user = User::find($request->id);
              $request->offsetUnset('id');
              $user->update($request->all());
          }
fce775cb9   Андрей Ларионов   Раздел в таблице ...
31

93a3f79f0   Андрей Ларионов   Поисковый движок ...
32
33
34
35
36
37
38
          $find_key = "";
          $users = User::query();
          if (isset($request->find)) {
             $find_key = $request->find;
             $users = $users->where('name', 'LIKE', "%$find_key%")
                          ->orWhere('email', 'LIKE', "%$find_key%");
          }
fce775cb9   Андрей Ларионов   Раздел в таблице ...
39

93a3f79f0   Андрей Ларионов   Поисковый движок ...
40
          $users = $users->paginate(15);
8de035475   Андрей Ларионов   Создание: Структу...
41
42
  
          if ($request->ajax()) {
bb2fb443d   Андрей Ларионов   Архитектурное доп...
43
             return view('admin.users.index_ajax', compact('users', 'id_admin'));
8de035475   Андрей Ларионов   Создание: Структу...
44
          } else {
93a3f79f0   Андрей Ларионов   Поисковый движок ...
45
              return view('admin.users.index', compact('users', 'title', 'id_admin', 'find_key'));
8de035475   Андрей Ларионов   Создание: Структу...
46
47
          }
      }
c54cbb05e   Андрей Ларионов   Коммит субботний
48
      public function user_delete(User $user) {
d3fc274b1   Hayk Nazaryan   users fixes
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
  
          $worker = $user->workers()->first();
          $employer = $user->employers()->first();
  
          if ($worker) {
  
              $worker->delete();
  
          } elseif ($employer) {
  
              $employer->delete();
  
          }
  
          $user->delete();
c54cbb05e   Андрей Ларионов   Коммит субботний
64
65
66
  
          return redirect()->route('admin.users')->with('Пользователь был удален из системы');
      }
313a7a805   Андрей Ларионов   Работа с разделом...
67
68
69
70
71
72
73
74
75
76
77
      public function index_bd(Request $request) {
          $title = 'Админка - Пользователи базы данных';
  
          $find_key = "";
          $users = User::query();
          if (isset($request->find)) {
              $find_key = $request->find;
              $users = $users->where('name', 'LIKE', "%$find_key%")
                  ->orWhere('email', 'LIKE', "%$find_key%")
                  ->orWhere('telephone', 'LIKE', "%$find_key%");
          }
0388bf4f0   Сергей П   Задачи 44,46,48
78
79
80
          $users = $users->Baseuser()
              ->orderByDesc(Worker::select('created_at')->whereColumn('workers.user_id', 'users.id'))
              ->paginate(15);
313a7a805   Андрей Ларионов   Работа с разделом...
81
82
83
84
85
86
87
88
89
  
          if ($request->ajax()) {
              return view('admin.users.index_bd_ajax', compact('users'));
          } else {
              return view('admin.users.index_bd', compact('users', 'title', 'find_key'));
          }
      }
  
      public function add_bd() {
410b65e5b   Андрей Ларионов   Видимость в админ...
90
          $list_job_titles = Job_title::query()->active()->where('is_bd', '=' , '2')->orderBy('name', 'asc')->get();
9b4580039   Андрей Ларионов   Медиа сущность, д...
91
          return view('admin.users.add', compact('list_job_titles'));
313a7a805   Андрей Ларионов   Работа с разделом...
92
93
94
      }
  
      public function add_store_bd(BaseUserRequest $request) {
0e7702a32   Fedor   task-132687 minor...
95
          $params = $request->all();
0961cd3e6   Андрей Ларионов   Модель программы ...
96
97
98
99
  
          if ($request->has('file')) {
              $params['file'] = $request->file('file')->store('basedata', 'public');
          }
9b4580039   Андрей Ларионов   Медиа сущность, д...
100
101
102
          if (isset($request->name)) {
              $params['name'] = $request->surname." ".$request->name_man." ".$request->surname2;
          }
e2907a576   Hayk Nazaryan   workers fixes
103
104
105
          $password = $params['password'];
          $params['password'] = Hash::make($password);
          $params['pubpassword'] = base64_encode($password);
19b449c16   Hayk Nazaryan   verify workers fr...
106
          $params['email_verified_at'] = now();
313a7a805   Андрей Ларионов   Работа с разделом...
107
          $user = User::create($params);
9b4580039   Андрей Ларионов   Медиа сущность, д...
108
          $worker = new Worker();
0e7702a32   Fedor   task-132687 minor...
109
110
111
          $worker->positions_work = isset($params['positions_work']) ? json_encode($params['positions_work']) : [];
          $worker->user_id = $user->id;
          $worker->comment = isset($params['comment']) ? $params['comment'] : null;
9b4580039   Андрей Ларионов   Медиа сущность, д...
112
          $worker->save();
0961cd3e6   Андрей Ларионов   Модель программы ...
113
          return redirect()->route('admin.basedata');
313a7a805   Андрей Ларионов   Работа с разделом...
114
115
116
      }
  
      public function edit_bd(User $user) {
3256f8927   Fedor   task-132687 minor...
117
118
119
120
121
122
          $list_job_titles = Job_title::query()
              ->active()
              ->where('is_bd', '=' , '2')
              ->orderByDesc('sort')
              ->orderBy('name', 'asc')
              ->get();
9b4580039   Андрей Ларионов   Медиа сущность, д...
123
          return view('admin.users.edit', compact('user', 'list_job_titles'));
313a7a805   Андрей Ларионов   Работа с разделом...
124
125
126
127
      }
  
      public function update_bd(BaseUserRequest $request, User $user) {
          $params = $request->all();
2b8dd10cb   Сергей П   Правки по задачам
128
          $positions_work = $request->input('positions_work', []);
0961cd3e6   Андрей Ларионов   Модель программы ...
129
130
131
132
133
134
135
  
          if ($request->has('file')) {
              if (!empty($user->file)) Storage::delete($user->file);
              $params['file'] = $request->file('file')->store('basedata', 'public');
          } else {
              if (!empty($user->image)) $params['file'] = $user->file;
          }
9b4580039   Андрей Ларионов   Медиа сущность, д...
136
137
138
          if (isset($request->name)) {
              $params['name'] = $request->surname." ".$request->name_man." ".$request->surname2;
          }
313a7a805   Андрей Ларионов   Работа с разделом...
139
          $user->update($params);
9b4580039   Андрей Ларионов   Медиа сущность, д...
140
141
          if (isset($user->workers[0]->id)) {
              $worker = Worker::find($user->workers[0]->id);
2b8dd10cb   Сергей П   Правки по задачам
142
              $worker->positions_work = $positions_work;
0e7702a32   Fedor   task-132687 minor...
143
              $worker->comment = isset($params['comment']) ? $params['comment'] : null;
9b4580039   Андрей Ларионов   Медиа сущность, д...
144
145
146
147
              $worker->save();
          } else {
              $worker = new Worker();
              $worker->user_id = $user->id;
2b8dd10cb   Сергей П   Правки по задачам
148
              $worker->positions_work = $positions_work;
0e7702a32   Fedor   task-132687 minor...
149
              $worker->comment = isset($params['comment']) ? $params['comment'] : null;
9b4580039   Андрей Ларионов   Медиа сущность, д...
150
151
              $worker->save();
          }
313a7a805   Андрей Ларионов   Работа с разделом...
152
153
154
155
156
157
158
          return redirect()->route('admin.basedata');
      }
  
      public function destroy_bd(User $user) {
          $user->delete();
          return redirect()->route('admin.basedata');
      }
29350503f   Андрей Ларионов   Расширение полей ...
159
160
161
162
163
164
      public function roles(Request $request) {
          if ($request->ajax()) {
              $user = User::find($request->id);
              $request->offsetUnset('id');
              $user->update($request->all());
          }
313a7a805   Андрей Ларионов   Работа с разделом...
165
          $users = User::query()->Realuser()->paginate(15);
29350503f   Андрей Ларионов   Расширение полей ...
166
167
168
169
170
171
  
          if ($request->ajax()) {
              return view('admin.users.roles.index_ajax', compact('users'));
          } else {
              return view('admin.users.roles.index', compact('users'));
          }
bb2fb443d   Андрей Ларионов   Архитектурное доп...
172
      }
313a7a805   Андрей Ларионов   Работа с разделом...
173

077a30c8a   Андрей Ларионов   Таблица контента ...
174
175
176
      public function admin_roles(Request $request) {
  
          if ($request->ajax()) {
6a2a004b1   Андрей Ларионов   Роли просмотра ст...
177
178
179
              $id = $request->id;
              $request->offsetUnset('id');
              ContentRoles::where('id', '=', $id)->update($request->all());
077a30c8a   Андрей Ларионов   Таблица контента ...
180
          }
6a2a004b1   Андрей Ларионов   Роли просмотра ст...
181
          $roles = ContentRoles::query()->OrderBy('id')->paginate(25);
077a30c8a   Андрей Ларионов   Таблица контента ...
182
183
184
185
186
187
188
189
  
  
          if ($request->ajax()) {
             return view('admin.content.roles_index_ajax', compact('roles'));
          } else {
              return view('admin.content.roles_index', compact('roles'));
          }
      }
313a7a805   Андрей Ларионов   Работа с разделом...
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
      public function doc_bd(User $user) {
          $id = $user->id;
          $spreadsheet = new Spreadsheet();
          $activeWorksheet = $spreadsheet->getActiveSheet();
          $activeWorksheet->setCellValue('A1', 'Отчет по соискателю');
          $activeWorksheet->getStyle('A1')->applyFromArray([
              'font' => [
                  'name' => 'Arial',
                  'bold' => true,
                  'italic' => false,
                  'underline' => Font::UNDERLINE_DOUBLE,
                  'strikethrough' => false,
                  'color' => [
                      'rgb' => '808080'
                  ]
              ],
              'borders' => [
                  'allBorders' => [
                      'borderStyle' => Border::BORDER_THIN,
                      'color' => [
                          'rgb' => '808080'
                      ]
                  ],
0961cd3e6   Андрей Ларионов   Модель программы ...
213
214
215
216
                  'outline' => array(
                      'style' => Border::BORDER_THIN,
                      'color' => array('rgb' => '000000')
                  ),
313a7a805   Андрей Ларионов   Работа с разделом...
217
              ],
0961cd3e6   Андрей Ларионов   Модель программы ...
218

313a7a805   Андрей Ларионов   Работа с разделом...
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
              'alignment' => [
                  'horizontal' => Alignment::HORIZONTAL_CENTER,
                  'vertical' => Alignment::VERTICAL_CENTER,
                  'wrapText' => true,
              ]
          ]);
  
          $activeWorksheet->setCellValue('A2', "Псевдоним/имя: ".$user->name);
          $activeWorksheet->setCellValue('A3', "Фамилия: ".$user->surname);
          $activeWorksheet->setCellValue('A4', "Имя: ".$user->name_man);
          $activeWorksheet->setCellValue('A5', "Отчество: ".$user->surname2);
          $activeWorksheet->setCellValue('A6', "Телефон: ".$user->telephone);
          $activeWorksheet->setCellValue('A7', "Емайл: ".$user->email);
  
          if (isset($user->workers[0]->id)) {
              $activeWorksheet->setCellValue('A9', "Анкета: ");
              $activeWorksheet->setCellValue('A10', "Телефон: " . $user->workers[0]->telephone);
              $activeWorksheet->setCellValue('A11', "Емайл: " . $user->workers[0]->email);
          }
  
          if (isset($user->jobtitles[0]->id)) {
              $activeWorksheet->setCellValue('A12', "Должность: " . $user->jobtitles[0]->name);
          }
0961cd3e6   Андрей Ларионов   Модель программы ...
242
          $activeWorksheet->getColumnDimension("A")->setWidth(100);
313a7a805   Андрей Ларионов   Работа с разделом...
243
244
245
246
247
248
249
250
251
252
253
254
255
          $writer = new Xlsx($spreadsheet);
  
          header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
          header('Content-Disposition: attachment; filename="user'.$id.'.xlsx"');
          header('Cache-Control: no-cache');
  
          $writer->save('php://output');
          $writer->save(storage_path("app/public/export/user$id.xlsx"));
  
          //$spreadsheet->disconnectWorksheets();
          return redirect()->route('admin.basedata');
  
      }
8de035475   Андрей Ларионов   Создание: Структу...
256
  }