Skip to content

Instantly share code, notes, and snippets.

@aspsptyd
Created January 15, 2023 22:18
Show Gist options
  • Save aspsptyd/ab78b6e490efeb856ec9ef3e2a836bfd to your computer and use it in GitHub Desktop.
Save aspsptyd/ab78b6e490efeb856ec9ef3e2a836bfd to your computer and use it in GitHub Desktop.
Menambahkan fungsi edit dan delete
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User as Model;
class UserController extends Controller
{
private $viewIndex = 'user_index';
private $viewCreate = 'user_form';
private $viewEdit = 'user_form';
private $routePrefix = 'user';
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('operator.user_index', [
'models' => Model::where('akses', '<>', 'wali')->where('akses', '<>', '-')
->latest()
->paginate(50)
]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$data = [
'model' => new Model(),
'method' => 'POST',
'route' => 'user.store',
'button' => 'SIMPAN'
];
return view('operator.user_form', $data);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$requestData = $request->validate([
'name' => 'required',
'email' => 'required|unique:users',
'nohp' => 'required|unique:users',
'akses' => 'required|in:operator,admin,wali',
'password' => 'required'
]);
$requestData['password'] = bcrypt($requestData['password']);
Model::create($requestData);
flash('Data berhasil disimpan');
return redirect()->route('user.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)
{
$data = [
'model' => \App\Models\User::findOrFail($id),
'method' => 'PUT',
'route' => ['user.update', $id],
'button' => 'UPDATE'
];
return view('operator.user_form', $data);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$requestData = $request->validate([
'name' => 'required',
'email' => 'required|unique:users,email,' . $id,
'nohp' => 'required|unique:users,nohp,' . $id,
'akses' => 'required|in:operator,admin,wali',
'password' => 'nullable'
]);
$model = Model::findOrFail($id);
if ($requestData['password'] == "") {
unset($requestData['password']);
} else {
$requestData['password'] = bcrypt($requestData['password']);
}
$model->fill($requestData);
$model->save();
flash('Data berhasil diubah');
return redirect()->route('user.index');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$model = Model::findOrFail($id);
if ($model->email == '[email protected]') {
flash('Data tidak bisa dihapus, karena data Administrator')->error();
return back();
}
$model->delete();
flash('Data berhasil dihapus');
return back();
}
}
@aspsptyd
Copy link
Author

record-003

@aspsptyd
Copy link
Author

Update UserController.php Refactoring Class (Variable Public)

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User as Model;

class UserController extends Controller
{
    private $viewIndex = 'user_index';
    private $viewCreate = 'user_form';
    private $viewEdit = 'user_form';
    private $routePrefix = 'user';
    
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return view('operator.' . $this->viewIndex, [
            'models' => Model::where('akses', '<>', 'wali')->where('akses', '<>', '-')
                ->latest()
                ->paginate(50)
        ]);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $data = [
            'model' => new Model(),
            'method' => 'POST',
            'route' => $this->routePrefix . '.store',
            'button' => 'SIMPAN'
        ];
        return view('operator.' . $this->viewCreate, $data);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $requestData = $request->validate([
            'name' => 'required',
            'email' => 'required|unique:users',
            'nohp' => 'required|unique:users',
            'akses' => 'required|in:operator,admin,wali',
            'password' => 'required'
        ]);
        $requestData['password'] = bcrypt($requestData['password']);

        Model::create($requestData);
        flash('Data berhasil disimpan');
        return redirect()->route($this->routePrefix . '.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)
    {
        $data = [
            'model' => \App\Models\User::findOrFail($id),
            'method' => 'PUT',
            'route' => [$this->routePrefix . '.update', $id],
            'button' => 'UPDATE'
        ];
        return view('operator.' . $this->viewEdit, $data);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $requestData = $request->validate([
            'name' => 'required',
            'email' => 'required|unique:users,email,' . $id,
            'nohp' => 'required|unique:users,nohp,' . $id,
            'akses' => 'required|in:operator,admin,wali',
            'password' => 'nullable'
        ]);
        $model = Model::findOrFail($id);
        if ($requestData['password'] == "") {
            unset($requestData['password']);
        } else {
            $requestData['password'] = bcrypt($requestData['password']);
        }
        $model->fill($requestData);
        $model->save();

        flash('Data berhasil diubah');
        return redirect()->route($this->routePrefix . '.index');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $model = Model::findOrFail($id);

        if ($model->email == '[email protected]') {
            flash('Data tidak bisa dihapus, karena data Administrator')->error();
            return back();
        }

        $model->delete();
        flash('Data berhasil dihapus');
        return back();
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment