Anons79 Mini Shell

Directory : /home/aplikasiposinfo/.trash/app/Http/Controllers/
Upload File :
Current File : /home/aplikasiposinfo/.trash/app/Http/Controllers/UserController.php

<?php

namespace App\Http\Controllers;

use App\Helpers\Helper;
use App\Models\Departemen;
use App\Models\Karyawan;
use App\Models\Perusahaan;
use App\Models\Role;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class UserController extends BaseController
{   
    public $namaMenu = 'user';
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {   
        $this->cekAkses();
        $datas = User::with('perusahaans','departemen')->filtersInput([
            'nama',
            'email',
            'no_hp',
            [
                'perusahaan'=>[
                    'nama_perusahaan'
                ],
                'departemen'=>[
                    'nama_departemen'
                ],
            ]
        ],'search')->simplePaginate(10)->appends(request()->query());
        return view('user.index', compact('datas'),['akses'=>$this->akses]);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {   
        $perusahaans = Perusahaan::all();
        $roles = Role::all();
        $departemens = Departemen::all();
        return view('user.create',compact('perusahaans','roles','departemens'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $requestnama
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $this->validate($request, [
            'nama' => 'required',
            'email' => 'required',
            'password'=>'required',
        ]);
        $cek_user = User::where('email',$request->email)->first();
        $cek_karyawan = Karyawan::where('email',$request->email)->first();

        if($cek_user){
            return redirect()->back()->withErrors([
                'error'=> 'Email ini sudah pernah di gunakan'
            ])->withInput($request->all());
        }
        if($cek_karyawan){
            return redirect()->back()->withErrors([
                'error'=> 'Email ini sudah pernah di gunakan di data karyawaan'
            ])->withInput($request->all());
        }
        DB::beginTransaction();
        try {
            $data = User::create([
                'nama'=>$request->nama,
                'email'=>$request->email,
                'password'=>bcrypt($request->password),
                // 'perusahaan_id'=>$request->perusahaan_id,
                'no_hp'=>$request->no_hp,
            ]);
            $data->perusahaans()->attach($request->perusahaan_id ?? []);
            if($request->has('foto_user')){
                $request->validate([
                    'foto_user' => 'required|image|max:1024'
                ]);
                $data->update([
                    'foto_user'=>$request->foto->store('user')
                ]);
            }
            $data->syncRoles([Role::find($request->role_id)]);
            if($request->filled('departemen_id')){
                $data->departemen()->attach($request->departemen_id);
            }
            Helper::addUserLog(auth()->user()->nama." menambah data user : ".$data->nama);
            DB::commit();
        } catch (\Throwable $th) {
            DB::rollBack();
            return redirect()->back()->withErrors([
                'error'=> 'Data gagal ditambahkan'.((env('APP_DEBUG') == true)?' : ' . $th->getMessage():'')
            ])->withInput($request->all());
        }
        return redirect()->route('user.index')->with('success', 'Data berhasil ditambahkan');
    }

    /**
     * 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)
    {   
        $perusahaans = Perusahaan::all();
        $roles = Role::all();
        $data = User::findOrFail($id);
        $departemens = Departemen::all();
        return view('user.edit', compact('data','perusahaans','roles','departemens'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $this->validate($request, [
            'nama' => 'required',
            'email' => 'required',
        ]);

        $cek_user = User::where('email',$request->email)->first();
        $cek_karyawan = Karyawan::where('email',$request->email)->first();

        if($cek_user){
            if($id != $cek_user->id){
                return redirect()->back()->withErrors([
                    'error'=> 'Email ini sudah pernah di gunakan'
                ])->withInput($request->all());
            }
        }
        if($cek_karyawan){
            return redirect()->back()->withErrors([
                'error'=> 'Email ini sudah pernah di gunakan di data karyawaan'
            ])->withInput($request->all());
        }

        DB::beginTransaction();
        try {
            $data = User::findOrFail($id);
            $data->update([
                'nama'=>$request->nama,
                'email'=>$request->email,
                // 'perusahaan_id'=>$request->perusahaan_id,
                'no_hp'=>$request->no_hp,
            ]);
            $data->perusahaans()->sync($request->perusahaan_id ?? []);
            if($request->has('foto_user')){
                $request->validate([
                    'foto_user' => 'required|image|max:1024'
                ]);
                $data->update([
                    'foto_user'=>$request->foto->store('user')
                ]);
            }
            if($request->has('password_baru')  && $request->password_baru != ''){
                $data->update([
                    'password'=>bcrypt($request->password_baru)
                ]);
            }
            $data->syncRoles([Role::find($request->role_id)]);
            if($request->filled('departemen_id')){
                $data->departemen()->sync($request->departemen_id);
            } else {
                $data->departemen()->detach();
            }
            Helper::addUserLog(auth()->user()->nama." mengubah data user : ".$data->nama);
            DB::commit();
        } catch (\Throwable $th) {
            DB::rollBack();
            return redirect()->back()->withErrors([
                'error'=> 'Data gagal diubah'.((env('APP_DEBUG') == true)?' : ' . $th->getMessage():'')
            ])->withInput($request->all());
        }
        return redirect()->route('user.index')->with('success', 'Data berhasil diubah');
    }

    /**
     * Remove the specified resource from storage.
     * 
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id) {
        DB::beginTransaction();
        try {
            $data = User::findOrFail($id);
            if($data->id != 1){
                $data->delete();
            }
            Helper::addUserLog(auth()->user()->nama." menghapus data user : ".$data->nama);
            DB::commit();
        } catch (\Throwable $th) {
            DB::rollBack();
            return redirect()->back()->withErrors([
                'error'=> 'Data gagal dihapus'.((env('APP_DEBUG') == true)?' : ' . $th->getMessage():'')
            ]);
        }
        return redirect()->route('user.index')->with('success', 'Data berhasil dihapus');
    }

    public function fotoUser($id) {
        $user = User::find($id);
        return response()->file(storage_path('app/'.$user->foto_user));
    }
}

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]