Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Http\Controllers\Backend;
- use App\Traits\Authorizable;
- use App\Http\Requests\UserRequest;
- use App\Role;
- use App\User;
- use App\Rank;
- use App\Duty;
- use App\Category;
- use Illuminate\Http\Request;
- use Auth;
- use Illuminate\Support\Facades\DB;
- use Lang;
- use Mail;
- use App\Http\Controllers\Controller;
- class UserController extends Controller
- {
- use Authorizable;
- /**
- * Display a listing of the resource.
- *
- * @return \Illuminate\Http\Response
- */
- public function index()
- {
- $users = User::latest()->paginate(10);
- return view('backend.users.index', compact('users'));
- }
- /**
- * Show the form for creating a new resource.
- *
- * @return \Illuminate\Http\Response
- */
- public function create()
- {
- $roles = Role::pluck('name', 'id');
- $ranks = Rank::pluck('title', 'id');
- //get all duties without alias
- $duties = Duty::whereNull('alias')->pluck('title', 'id');
- //get all duties with alias
- $duties_grp = Duty::whereNotNull('alias')->pluck('title', 'id');
- $commands = Category::where('parent_id', '0')->pluck('title', 'id');
- $user_categories_array = [];
- return view('backend.users.create', compact('roles', 'ranks', 'duties', 'duties_grp', 'commands', 'user_categories_array'));
- }
- /**
- * Store a newly created resource in storage.
- *
- * @param \Illuminate\Http\Request $request
- * @return \Illuminate\Http\Response
- */
- public function store(UserRequest $request)
- {
- //duties_array for database in json format (duty_id)
- $duties_array = [];
- //check if duty has been selected in form
- if ($request->duties[0] != null) {
- foreach ($request->duties as $duty)
- array_push($duties_array, $duty);
- }
- //check if grp duty has been selected in form
- if ($request->grp_duties[0] != null) {
- foreach ($request->grp_duties as $grp_duty)
- array_push($duties_array, $grp_duty);
- }
- $request->merge([
- 'username' => $this->setUsername($request->get('first_name'), $request->get('last_name')),
- 'token' => str_random(25),
- 'duty_id' => json_encode($duties_array)
- ]);
- $user = User::create($request->except('roles', 'permissions'));
- if (!$user) {
- flash()->error(Lang::get('actions.store.messages.error'));
- return redirect()->route('backend.users.index');
- } else {
- //store information about categories in database
- DB::table('user_has_categories')->insert([
- 'user_id' => $user->id,
- 'command_id' => $request->command,
- 'formation_id' => $request->formation,
- 'unit_id' => $request->unit
- ]);
- $this->syncPermissions($request, $user);
- Mail::send('mails.passwords.create', $request->all(), function ($message) use ($request) {
- $message->to($request['email']);
- $message->subject('Registration confirmation');
- });
- flash()->success(Lang::get('actions.store.messages.success'));
- return redirect()->route('backend.users.index');
- }
- }
- /**
- * Display the specified resource.
- *
- * @param int $id
- * @return \Illuminate\Http\Response
- */
- public function show($id)
- {
- //
- }
- /**
- * Show the form for editing the specified resource.
- *
- * @param int $id
- * @return \Illuminate\Http\Response
- */
- public function edit($id)
- {
- $user = User::findOrFail($id);
- $ranks = Rank::pluck('title', 'id');
- $duties = Duty::whereNull('alias')->pluck('title', 'id');
- $duties_grp = Duty::whereNotNull('alias')->pluck('title', 'id');
- $commands = Category::where('parent_id', '0')->pluck('title', 'id');
- $user_duty_array = [];
- $user_duty_grp_array = [];
- $user_categories_array = [];
- //check if user has duty_id column filled in
- if ($user->duty_id) {
- //foreach to check all duties from user table duty_id(json format) column
- foreach (json_decode($user->duty_id) as $duty) {
- //if duty id from json exists in duties array
- if (array_key_exists($duty, $duties->all())) {
- array_push($user_duty_array, $duty);
- }
- //if duty id from json exists in duties_grp array
- if (array_key_exists($duty, $duties_grp->all())) {
- array_push($user_duty_grp_array, $duty);
- }
- }
- }
- $user_categories = DB::table('user_has_categories')->select('command_id', 'formation_id', 'unit_id')->where('user_id', $user->id)->first();
- if ($user_categories) {
- //put user category ids to the array
- array_push($user_categories_array, $user_categories->command_id);
- array_push($user_categories_array, $user_categories->formation_id);
- array_push($user_categories_array, $user_categories->unit_id);
- //get all formations from chosen command
- $_formations = Category::where('parent_id', $user_categories->command_id)->pluck('title', 'id');
- //get all units from chosen formation
- $_units = Category::where('parent_id', $user_categories->formation_id)->pluck('title', 'id');;
- }
- $roles = Role::pluck('name', 'id');
- return view('backend.users.edit', compact('user', 'roles', 'ranks', 'duties', 'duties_grp', 'commands', '_formations', '_units', 'user_duty_array', 'user_duty_grp_array', 'user_categories_array'));
- }
- /**
- * Update the specified resource in storage.
- *
- * @param \Illuminate\Http\Request $request
- * @param int $id
- * @return \Illuminate\Http\Response
- */
- public function update(UserRequest $request, $id)
- {
- $user = User::findOrFail($id);
- //duties_array for database in json format (duty_id)
- $duties_array = [];
- if ($request->duties[0] != null) {
- foreach ($request->duties as $duty)
- array_push($duties_array, $duty);
- }
- if ($request->grp_duties[0] != null) {
- foreach ($request->grp_duties as $grp_duty)
- array_push($duties_array, $grp_duty);
- }
- $request->merge([
- 'username' => $this->setUsername($request->get('first_name'), $request->get('last_name')),
- 'duty_id' => json_encode($duties_array)
- ]);
- $user->fill($request->except('roles', 'permissions', 'password'));
- // Check for password change
- if ($request->get('password')) {
- $user->password = bcrypt($request->get('password'));
- }
- // Handle the user roles
- $this->syncPermissions($request, $user);
- $user->save();
- if (!$user) {
- flash()->error(Lang::get('actions.update.messages.error'));
- return redirect()->route('backend.users.index');
- } else {
- //update user's categories
- $category_update = DB::table('user_has_categories')->where('user_id', $user->id)
- ->update([
- 'user_id' => $user->id,
- 'command_id' => $request->command,
- 'formation_id' => $request->formation,
- 'unit_id' => $request->unit
- ]);
- if($category_update == 0){
- DB::table('user_has_categories')->insert([
- 'user_id' => $user->id,
- 'command_id' => $request->command,
- 'formation_id' => $request->formation,
- 'unit_id' => $request->unit
- ]);
- }
- flash()->success(Lang::get('actions.update.messages.success'));
- return redirect()->route('backend.users.index');
- }
- }
- /**
- * Remove the specified resource from storage.
- *
- * @param int $id
- * @return \Illuminate\Http\Response
- */
- public function destroy($id)
- {
- if (Auth::user()->id == $id) {
- flash()->warning(Lang::get('actions.destroy.messages.myself'))->important();
- return redirect()->back();
- }
- $user = User::findOrFail($id)->delete();
- if (!$user) {
- flash()->error(Lang::get('actions.destroy.messages.error'));
- }
- flash()->success(Lang::get('actions.destroy.messages.success'));
- return redirect()->back();
- }
- private function syncPermissions(Request $request, $user)
- {
- // Get the submitted roles
- $roles = $request->get('roles', []);
- $permissions = $request->get('permissions', []);
- // Get the roles
- $roles = Role::find($roles);
- // Check for current role changes
- if (!$user->hasAllRoles($roles)) {
- // reset all direct permissions for user
- $user->permissions()->sync([]);
- } else {
- // Handle permissions
- $user->syncPermissions($permissions);
- }
- $user->syncRoles($roles);
- return $user;
- }
- private function setUsername($firstName, $lastName)
- {
- $firstName = $this->convertText($firstName);
- $lastName = $this->convertText($lastName);
- $username = $firstName . '.' . $lastName;
- return $username;
- }
- private function convertText($text)
- {
- // Remove Spaces
- $text = str_replace(' ', '', $text);
- // Replace LT characters
- $text = @iconv('UTF-8', 'ASCII//TRANSLIT', $text);
- // Remove Symbols
- $text = preg_replace('/[^A-Za-z0-9\-]/', '', $text);
- // Lower case
- $text = mb_strtolower($text);
- return $text;
- }
- public function resendLink(Request $request, $id)
- {
- $user = User::findOrFail($id);
- if (!$user) {
- return redirect()->back();
- } else {
- if ($user->password == null) {
- $request->merge([
- 'first_name' => $user->first_name,
- 'email' => $user->email,
- 'token' => str_random(25),
- ]);
- $user->token = $request->token;
- $user->save();
- Mail::send('mails.passwords.create', $request->all(), function ($message) use ($request) {
- $message->to($request['email']);
- $message->subject('Registration confirmation');
- });
- return redirect()->route('backend.users.index');
- } else {
- return redirect()->back();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement