Blame view

app/Http/Controllers/Admin/GroupsController.php 4.88 KB
82a9544dc   Андрей Ларионов   Связи моделей, гр...
1
2
3
4
5
6
  <?php
  
  namespace App\Http\Controllers\Admin;
  
  use App\Http\Controllers\Controller;
  use App\Models\Group_user;
4c66e360c   Андрей Ларионов   Справочник докуме...
7
  use App\Models\Group_works;
29350503f   Андрей Ларионов   Расширение полей ...
8
  use App\Models\User;
4c66e360c   Андрей Ларионов   Справочник докуме...
9
  use Illuminate\Database\Eloquent\Model;
82a9544dc   Андрей Ларионов   Связи моделей, гр...
10
11
12
13
14
15
  use Illuminate\Http\Request;
  use Illuminate\Support\Facades\Auth;
  use Illuminate\Support\Facades\Validator;
  
  class GroupsController extends Controller
  {
4c66e360c   Андрей Ларионов   Справочник докуме...
16
      public $limit = 15;
82a9544dc   Андрей Ларионов   Связи моделей, гр...
17
18
      // индексная страница
      public function index() {
00652ea57   Андрей Ларионов   Оптимизация запро...
19
          $groups = Group_user::with('user')->with('ingroup')->active()->paginate(15);
82a9544dc   Андрей Ларионов   Связи моделей, гр...
20
21
22
23
          return view('admin.groups.index', compact('groups'));
      }
  
      // форма добавления группы
4c66e360c   Андрей Ларионов   Справочник докуме...
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
      public function add(Request $request) {
          /*$editor = Auth::user()->id;
          $users = User::query()->active()->Offset(0)->limit($this->limit)->get();
          return view('admin.groups.add', compact('editor', 'users'));*/
          $hide = false;
          $total = User::query()->active()->count();
          $amt = ceil($total / $this->limit);
          if ($this->limit >= $total) $hide = true;
          if ($request->ajax()) {
              $page = intval($request->page);
              $page = (empty($page)) ? 1 : $page;
              $start = ($page != 1) ? $page * $this->limit - $this->limit : 0;
              $users = User::query()->active()->Offset($start)->limit($this->limit)->get();
              return view('admin.groups.ajax_add', compact('users', 'amt'));
  
          } else {
              $editor = Auth::user()->id;
              $users = User::query()->active()->Offset(0)->limit($this->limit)->get();
              return view('admin.groups.add', compact('editor', 'users', 'amt', 'hide'));
          }
82a9544dc   Андрей Ларионов   Связи моделей, гр...
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
      }
  
      // форма сохранения добавленной группы
      public function store(Request $request) {
          $rules = [
              'name_group' => 'required|min:3',
          ];
          $messages = [
              'required' => 'Укажите обязательное поле',
          ];
          $validator = Validator::make($request->all(), $rules, $messages);
  
          if ($validator->fails()) {
              return redirect()->route('admin.add-group')
                  ->withErrors($validator);
          } else {
4c66e360c   Андрей Ларионов   Справочник докуме...
60
61
62
63
64
65
66
              $id_group = Group_user::create($request->all())->id;
              foreach ($request->usergroup as $user) {
                  $people = new Group_works();
                  $people->group_user_id = $id_group;
                  $people->user_id = $user;
                  $people->save();
              }
82a9544dc   Андрей Ларионов   Связи моделей, гр...
67
68
69
70
71
72
73
74
              return redirect()->route('admin.groups')
                  ->with('success', 'Данные были успешно сохранены');
          }
          return redirect()->route('admin.groups');
      }
  
      // форма редактирования группы
      public function edit(Group_user $group, Request $request) {
4c66e360c   Андрей Ларионов   Справочник докуме...
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
          //https://snipp.ru/php/loading-scrolling
          $hide = false;
          $total = User::query()->active()->count();
          $amt = ceil($total / $this->limit);
          if ($this->limit >= $total) $hide = true;
  
          if ($request->ajax()) {
              $page = intval($request->page);
              $page = (empty($page)) ? 1 : $page;
              $start = ($page != 1) ? $page * $this->limit - $this->limit : 0;
              $users = User::query()->active()->Offset($start)->limit($this->limit)->get();
              return view('admin.groups.ajax', compact('users', 'group', 'amt'));
  
          } else {
              $editor = Auth::user()->id;
              $users = User::query()->active()->Offset(0)->limit($this->limit)->get();
              return view('admin.groups.edit', compact('editor', 'group', 'users', 'amt', 'hide'));
          }
82a9544dc   Андрей Ларионов   Связи моделей, гр...
93
94
95
96
      }
  
      // форма сохранения редактированной группы
      public function update(Group_user $group, Request $request) {
29350503f   Андрей Ларионов   Расширение полей ...
97
98
          $params = $request->all();
          unset($params['usergroup']);
82a9544dc   Андрей Ларионов   Связи моделей, гр...
99
100
101
102
103
104
105
106
107
108
109
110
111
          $rules = [
              'name_group' => 'required|min:3',
          ];
          $messages = [
              'required' => 'Укажите обязательное поле',
          ];
          $validator = Validator::make($request->all(), $rules, $messages);
  
          if ($validator->fails()) {
              return redirect()->route('admin.edit-group', ['group' => $group->id])
                  ->withErrors($validator);
          } else {
              $group->update($request->all());
29350503f   Андрей Ларионов   Расширение полей ...
112
113
114
115
116
117
              $group->ingroup()->sync($request->usergroup);
              /*if ($request->usergroup->count()) {
                  foreach ($request->usergroup as $us) {
                     Group_works
                  }
              }*/
82a9544dc   Андрей Ларионов   Связи моделей, гр...
118
119
120
121
122
              return redirect()->route('admin.groups')
                  ->with('success', 'Данные были успешно сохранены');
          }
          return redirect()->route('admin.groups');
      }
29350503f   Андрей Ларионов   Расширение полей ...
123
124
125
126
127
128
  
      public function destroy(Group_user $group) {
          $group->update(['is_remove' => 1]);
  
          return redirect()->route('admin.groups');
      }
82a9544dc   Андрей Ларионов   Связи моделей, гр...
129
  }