ajax()) { $data = User::select('*')->whereIn('level', [1,2])->orderBy('created_at', 'desc'); // Convert the Eloquent Collection to a regular PHP array $data->each(function ($item, $key) { $item->rowIndex = $key + 1; }); return Datatables::eloquent($data) ->addIndexColumn() ->addColumn('title-post', function($row) { return '
' . $row->name . '
'; }) ->addColumn('action', function($row){ $view = route('users.show', ['id' => $row->id]); $edit = route('users.edit', ['id' => $row->id]); $delete = route('users.delete', ['id' => $row->id]); $btn = ' '; return $btn; }) ->addColumn('status', function($row){ if ($row->status == GlobalEnum::isActive) { return 'Active'; } elseif($row->status == GlobalEnum::isInactive) { return 'Non Active'; } elseif($row->status == GlobalEnum::isDeactive) { return 'Deactivated'; } else { return 'Not Verified'; } }) ->rawColumns(['title-post','action','status']) ->filter(function ($query) use ($request) { if ($request->has('search')) { $search = $request->get('search')['value']; $filterCategory = explode('|', $search); if($filterCategory[0] === 'status') { if(!empty($filterCategory[1])) { $filterCode = $filterCategory[1]-1; if ($filterCode !== 0) { $query->where('status', '=', $filterCode); } } else { $query->get(); } } elseif($filterCategory[0] === 'user') { if(!empty($filterCategory[1])) { $query->where('name', 'LIKE', "%$filterCategory[1]%"); } else { $query->get(); } } } }) ->make(true); } $data = [ 'subtitle' => 'Users', 'button' => true, 'module' => [ 'url' => route('users.create'), 'name' => 'Create New' ] ]; return view('admin.app.users.index', compact('data')); } public function create() { $data = [ 'subtitle' => 'Create New' ]; $roles = Roles::whereIn('id', [1,2])->get(); return view('admin.app.users.add', compact('data', 'roles')); } public function store(Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required', 'email' => 'required|email', 'password' => 'required', 'status' => 'required', 'level' => 'required', 'image' => 'image|mimes:jpg,jpeg,png,svg|max:7048', ], [ 'image.mimes' => 'Tipe file yang diunggah harus jpg, jpeg, png, atau svg.', ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } $input = $request->all(); $foto_namaBaru = null; if ($request->hasFile('image') && $request->file('image')->isValid()) { $foto_namaBaru = $request->file('image')->store('public/images'); } $post = new User([ 'name' => $input['name'], 'username' => Str::before($input['email'], '@') . rand(100, 999), 'email' => $input['email'], 'password' => bcrypt($input['password']), 'status' => $input['status'], 'level' => $input['level'], 'thumbnail' => empty($foto_namaBaru) ? '' : $foto_namaBaru, ]); $check = User::where('email', $input['email'])->count(); // $insertLog = LogActivites::default([ // 'causedBy' => user()->id, // 'logType' => GlobalEnum::LogOfGeneral, // 'withContent' => [ // 'status' => 'add', // 'text' => 'Insert a new user with email ' . $input['email'], // ] // ]); if ($check == 0) { if ($post->save()) { return redirect()->route('users')->with('swal', swal_alert('success', 'You have successfully added data')); } else { return redirect()->route('users')->with('swal', swal_alert('error', 'An error occurred in the query')); } } else { return redirect()->route('users')->with('swal', swal_alert('error', 'Email already exists')); } } public function show($id) { $data = [ 'subtitle' => User::where('id', $id)->first()->email, 'records' => User::where('id', $id)->first(), 'logs' => User::where('id', $id)->first() ]; return view('admin.app.users.detail', compact('data')); } public function edit($id) { $data = [ 'subtitle' => User::where('id', $id)->first()->email, 'records' => User::where('id', $id)->first() ]; $roles = Roles::whereIn('id', [1,2])->get(); return view('admin.app.users.edit', compact('data', 'id', 'roles')); } public function update(Request $request, $id) { $validator = Validator::make($request->all(), [ 'name' => 'required', 'email' => 'required|email', 'level' => 'required', 'status' => 'required', 'image' => 'image|mimes:jpg,jpeg,png,svg|max:7048', ], [ 'image.mimes' => 'Tipe file yang diunggah harus jpg, jpeg, png, atau svg.', ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } // Cari data berdasarkan ID $user = User::find($id); // Jika data ditemukan if ($user) { // Jika ada file baru yang diunggah, hapus file thumbnail yang lama if ($request->hasFile('image') && $request->file('image')->isValid()) { if ($user->thumbnail) { Storage::delete($user->thumbnail); } } // Update data dengan data baru dari form yang telah dibersihkan $user->name = $request->input('name'); $user->email = $request->input('email'); !empty($request->input('password')) ? $user->password = bcrypt($request->input('password')) : $user->password; $user->level = $request->input('level'); $user->status = $request->input('status'); $user->username = Str::before($user->email, '@') . rand(100, 999); // Jika ada file baru yang diunggah, simpan file baru di storage if ($request->hasFile('image') && $request->file('image')->isValid()) { $foto_namaBaru = $request->file('image')->store('public/images'); $user->thumbnail = $foto_namaBaru; } // Simpan perubahan pada database $user->save(); return redirect()->route('users')->with('swal', swal_alert('success', 'You are successfully modify data')); } else { return redirect()->route('users')->with('swal', swal_alert('error', 'Unexpected error')); } } public function destroy($id) { $user = User::find($id); // Jika data ditemukan if ($user) { // Cek apakah ada file di kolom "is_thumbnail" if ($user->thumbnail) { // Hapus file thumbnail dari storage Storage::delete($user->is_thumbnail); } // Hapus data dari database $user->delete(); return redirect()->route('users')->with('swal', swal_alert('success', 'You are successfully deleted records')); } else { return redirect()->route('users')->with('swal', swal_alert('error', 'Data not found')); } } /** * Retrieves the roles from the database and returns them as a DataTables response. * * @param Request $request The HTTP request object. * @throws Some_Exception_Class description of exception * @return Some_Return_Value The DataTables response with roles data. */ public function roles(Request $request) { if ($request->ajax()) { $data = Roles::select('*'); // Convert the Eloquent Collection to a regular PHP array $data->each(function ($item, $key) { $item->rowIndex = $key + 1; }); return Datatables::of($data) ->addIndexColumn() ->addColumn('action', function($row){ $edit = route('roles.edit', ['id' => $row->id]); $btn = ' '; return $btn; }) ->rawColumns(['action']) ->make(true); } $data = [ 'subtitle' => 'Roles', ]; return view('admin.app.users.roles.index', compact('data')); } public function editRoles($id) { $data = [ 'subtitle' => Roles::where('id', $id)->first()->name, 'records' => Roles::where('id', $id)->first() ]; return view('admin.app.users.roles.edit', compact('data', 'id')); } public function updateRoles(Request $request, $id) { $validator = Validator::make($request->all(), [ 'name' => 'required', ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } // Cari data berdasarkan ID $user = Roles::find($id); // Jika data ditemukan if ($user) { // Update data dengan data baru dari form yang telah dibersihkan $user->name = $request->input('name'); // Simpan perubahan pada database $user->save(); return redirect()->route('roles')->with('swal', swal_alert('success', 'You are successfully modify data')); } else { return redirect()->route('roles')->with('swal', swal_alert('error', 'Unexpected error')); } } public function permission(Request $request) { if ($request->ajax()) { $data = Permission::whereNull('idParent'); // Convert the Eloquent Collection to a regular PHP array $data->each(function ($item, $key) { $item->rowIndex = $key + 1; }); return Datatables::of($data) ->addIndexColumn() ->addColumn('updated_at', function($row) { return $row->updated_at; }) ->addColumn('action', function($row){ $edit = route('permission.edit', ['id' => $row->id]); $delete = route('permission.delete', ['id' => $row->id]); $detail = route('permission.detail', ['slug' => $row->slug]); $btn = ' '; return $btn; }) ->rawColumns(['action','updated_at']) ->make(true); } $data = [ 'subtitle' => 'Permission', 'button' => true, 'module' => [ 'url' => route('permission.create'), 'name' => 'Create New' ] ]; return view('admin.app.users.permission.index', compact('data')); } public function createPermission() { $data = [ 'subtitle' => 'Create Permission', ]; $routeInApplication = routesAll(); return view('admin.app.users.permission.add', compact('data','routeInApplication')); } public function editPermission($id) { $data = [ 'subtitle' => Permission::where('id', $id)->first()->name, 'records' => Permission::where('id', $id)->first() ]; return view('admin.app.users.permission.edit', compact('data', 'id')); } public function storePermission(Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required' ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } $input = $request->all(); $permission = new Permission([ 'slug' => Str::random(10), 'name' => $input['name'] ]); $check = Permission::where('name', $input['name'])->count(); if ($check == 0) { if ($permission->save()) { return redirect()->route('permission')->with('swal', swal_alert('success', 'You have successfully added data')); } else { return redirect()->route('permission')->with('swal', swal_alert('error', 'An error occurred in the query')); } } else { return redirect()->route('permission')->with('swal', swal_alert('error', 'Guard Name already exists')); } } public function updatePermission(Request $request, $id) { $validator = Validator::make($request->all(), [ 'name' => 'required', 'guard_name' => 'required', 'action' => 'required' ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } // Cari data berdasarkan ID $permission = Permission::find($id); // Jika data ditemukan if ($permission) { $permission->name = $request->input('name'); $permission->guard_name = $request->input('guard_name'); $permission->action = $request->input('action'); // Simpan perubahan pada database $permission->save(); return redirect()->route('permission')->with('swal', swal_alert('success', 'You are successfully modify data')); } else { return redirect()->route('permission')->with('swal', swal_alert('error', 'Unexpected error')); } } public function deletePermission($id) { $permission = Permission::find($id); // Jika data ditemukan if ($permission) { $permission->delete(); return redirect()->route('permission')->with('swal', swal_alert('success', 'You are successfully deleted records')); } else { return redirect()->route('permission')->with('swal', swal_alert('error', 'Data not found')); } } public function detailPermission(Request $request, $slug) { if ($request->ajax()) { $getIdPermissionBySlug = Permission::where('slug', $slug)->first(); $data = Permission::select("*")->where("idParent", "=", $getIdPermissionBySlug->id)->get(); // Convert the Eloquent Collection to a regular PHP array $data->each(function ($item, $key) { $item->rowIndex = $key + 1; }); return Datatables::of($data) ->addIndexColumn() ->addColumn('nameOfPermission', function($row) { $var = '

Name: ' . $row->name . '

Rule: ' . $row->guard_name . '

Last Updated: ' . $row->updated_at . '

'; return $var; }) ->addColumn('updated_at', function($row) { return $row->updated_at; }) ->addColumn('action', function($row){ $edit = route('permission.edit.child', ['id' => $row->id]); $delete = route('permission.delete.child', ['id' => $row->id]); $btn = ' '; return $btn; }) ->rawColumns(['nameOfPermission','action','updated_at']) ->make(true); } $data = [ 'subtitle' => Permission::where('slug', $slug)->first()->name, 'records' => Permission::where('slug', $slug)->first() ]; $routeInApplication = routesAll(); return view('admin.app.users.permission.detail', compact('data', 'slug','routeInApplication')); } public function storeChildPermission(Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required', 'guard_name' => 'required', ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } $input = $request->all(); $getPermissionDetail = Permission::where('id', $input['idParent'])->first(); $permission = new Permission([ 'slug' => Str::random(6), 'idParent' => $getPermissionDetail->id, 'name' => $input['name'], 'guard_name' => $input['guard_name'], ]); $check = Permission::where('name', $input['name'])->count(); if ($check == 0) { if ($permission->save()) { return redirect()->route('permission.detail', ['slug' => $getPermissionDetail->slug])->with('swal', swal_alert('success', 'You have successfully added data')); } else { return redirect()->route('permission.detail', ['slug' => $getPermissionDetail->slug])->with('swal', swal_alert('error', 'An error occurred in the query')); } } } public function editChildPermission($id) { $data = [ 'subtitle' => Permission::where('id', $id)->first()->name, 'records' => Permission::where('id', $id)->first() ]; return view('admin.app.users.permission.edit.child', compact('data', 'id')); } public function updateChildPermission(Request $request, $id) { $validator = Validator::make($request->all(), [ 'name' => 'required', 'guard_name' => 'required', ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } // Cari data berdasarkan ID $permission = Permission::find($id); $getPermissionDetail = Permission::where('id', $permission->idParent)->first(); // Jika data ditemukan if ($permission) { $permission->name = $request->input('name'); $permission->guard_name = $request->input('guard_name'); // Simpan perubahan pada database $permission->save(); return redirect()->route('permission.detail', ['slug' => $getPermissionDetail->slug])->with('swal', swal_alert('success', 'You are successfully modify data')); } else { return redirect()->route('permission.detail', ['slug' => $getPermissionDetail->slug])->with('swal', swal_alert('error', 'Unexpected error')); } } public function deleteChildPermission($id) { $permission = Permission::find($id); $getPermissionDetail = Permission::where('id', $permission->idParent)->first(); $permission->delete(); return redirect()->route('permission.detail', ['slug' => $getPermissionDetail->slug])->with('swal', swal_alert('success', 'You are successfully deleted records')); } public function indexSiswa(Request $request) { if ($request->ajax()) { $data = User::select('*')->where('level', GlobalEnum::isSiswa)->orderBy('created_at', 'desc'); // Convert the Eloquent Collection to a regular PHP array $data->each(function ($item, $key) { $item->rowIndex = $key + 1; }); return Datatables::eloquent($data) ->addIndexColumn() ->addColumn('title-post', function($row) { return '
' . $row->name . '
'; }) ->addColumn('nis', function($row) { return $row->siswa->first()->nis; }) ->addColumn('agama', function($row) { if($row->siswa->first()->agama == 1) { return 'Islam'; } elseif($row->siswa->first()->agama == 2) { return 'Kristen'; } elseif($row->siswa->first()->agama == 3) { return 'Buddha'; } elseif($row->siswa->first()->agama == 4) { return 'Konghucu'; } }) ->addColumn('action', function($row){ $view = route('users.show', ['id' => $row->id]); $edit = route('users.edit', ['id' => $row->id]); $delete = route('users.delete', ['id' => $row->id]); $btn = ' '; return $btn; }) ->addColumn('status', function($row){ if ($row->status == GlobalEnum::isActive) { return 'Active'; } elseif($row->status == GlobalEnum::isInactive) { return 'Non Active'; } elseif($row->status == GlobalEnum::isDeactive) { return 'Deactivated'; } else { return 'Not Verified'; } }) ->rawColumns(['title-post','action','nis','status']) ->filter(function ($query) use ($request) { if ($request->has('search')) { $search = $request->get('search')['value']; $filterCategory = explode('|', $search); if($filterCategory[0] === 'status') { if(!empty($filterCategory[1])) { $filterCode = $filterCategory[1]-1; if ($filterCode !== 0) { $query->where('status', '=', $filterCode); } } else { $query->get(); } } elseif($filterCategory[0] === 'user') { if(!empty($filterCategory[1])) { $query->where('name', 'LIKE', "%$filterCategory[1]%"); } else { $query->get(); } } } }) ->make(true); } $data = [ 'subtitle' => 'Siswa', 'button' => true, 'module' => [ 'url' => route('siswa.create'), 'name' => 'Create New' ] ]; return view('admin.app.users.siswa.index', compact('data')); } public function createSiswa() { $data = [ 'subtitle' => 'Create New' ]; return view('admin.app.users.siswa.add', compact('data')); } public function storeImport(Request $request) { $validator = Validator::make($request->all(), [ 'file' => 'required|mimes:csv,xls,xlsx' ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } $file = $request->file('file'); // membuat nama file unik $nama_file = $file->hashName(); //temporary file $path = $file->storeAs('public/files',$nama_file); // import data $import = Excel::import(new SiswaImport, storage_path('app/public/files/' . $nama_file)); //remove from server Storage::delete($path); if($import) { //redirect return redirect()->back()->with('success', 'Data berhasil diimport'); } else { //redirect return redirect()->back()->with('error', 'Data gagal diimport'); } } public function storeSiswa(Request $request) { $validator = Validator::make($request->all(), [ 'email' => 'required|email', 'password' => 'required', 'name' => 'required', 'nis' => 'required', 'agama' => 'required', 'agama_ayah' => 'required', 'kota_siswa' => 'required', 'alamat' => 'required', 'nama_ibu' => 'required', 'telepon' => 'required', 'pekerjaan_ibu' => 'required', 'pekerjaan_ayah' => 'required', 'tempat_lahir' => 'required', 'nama_ayah' => 'required', 'tanggal_lahir' => 'required|date', 'telepon_ortu' => 'required', 'agama_ibu' => 'required', 'image' => 'image|mimes:jpg,jpeg,png,svg|max:7048', ], [ 'image.mimes' => 'Tipe file yang diunggah harus jpg, jpeg, png, atau svg.', ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } $input = $request->all(); $foto_namaBaru = null; if ($request->hasFile('image') && $request->file('image')->isValid()) { $foto_namaBaru = $request->file('image')->store('public/images'); } $post = new User([ 'name' => $input['name'], 'username' => Str::before($input['email'], '@') . rand(100, 999), 'email' => $input['email'], 'password' => bcrypt($input['password']), 'status' => $input['status'], 'level' => GlobalEnum::isSiswa, 'thumbnail' => empty($foto_namaBaru) ? '' : $foto_namaBaru, ]); $check = User::where('email', $input['email'])->count(); if ($check == 0) { if ($post->save()) { $postDetail = new Siswa([ 'id' => Str::uuid(), 'user_id' => $post->id, 'nis' => $input['nis'], 'agama' => $input['agama'], 'agama_ayah' => $input['agama_ayah'], 'kota_siswa' => $input['kota_siswa'], 'alamat' => $input['alamat'], 'nama_ibu' => $input['nama_ibu'], 'telepon' => $input['telepon'], 'pekerjaan_ibu' => $input['pekerjaan_ibu'], 'pekerjaan_ayah' => $input['pekerjaan_ayah'], 'tempat_lahir' => $input['tempat_lahir'], 'nama_ayah' => $input['nama_ayah'], 'tanggal_lahir' => $input['tanggal_lahir'], 'telepon_ortu' => $input['telepon_ortu'], 'agama_ibu' => $input['agama_ibu'], ]); $postDetail->save(); return redirect()->route('siswa')->with('swal', swal_alert('success', 'You have successfully added data')); } else { return redirect()->route('siswa')->with('swal', swal_alert('error', 'An error occurred in the query')); } } else { return redirect()->route('siswa')->with('swal', swal_alert('error', 'Email already exists')); } } public function editSiswa($id) { $data = [ 'subtitle' => User::where('id', $id)->first()->email, 'records' => User::where('id', $id)->first() ]; $detail = Siswa::where('user_id', $id)->first(); return view('admin.app.users.siswa.edit', compact('data', 'id', 'detail')); } public function updateSiswa(Request $request, $id) { $validator = Validator::make($request->all(), [ 'name' => 'required', 'nis' => 'required', 'agama' => 'required', 'agama_ayah' => 'required', 'kota_siswa' => 'required', 'alamat' => 'required', 'nama_ibu' => 'required', 'telepon' => 'required', 'pekerjaan_ibu' => 'required', 'pekerjaan_ayah' => 'required', 'tempat_lahir' => 'required', 'nama_ayah' => 'required', 'tanggal_lahir' => 'required|date', 'telepon_ortu' => 'required', 'agama_ibu' => 'required', 'image' => 'image|mimes:jpg,jpeg,png,svg|max:7048', ], [ 'image.mimes' => 'Tipe file yang diunggah harus jpg, jpeg, png, atau svg.', ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } // Cari data berdasarkan ID $user = User::find($id); $detail = Siswa::where('user_id', $id)->first(); // Jika data ditemukan if ($user) { // Jika ada file baru yang diunggah, hapus file thumbnail yang lama if ($request->hasFile('image') && $request->file('image')->isValid()) { if ($user->thumbnail) { Storage::delete($user->thumbnail); } } // Update data dengan data baru dari form yang telah dibersihkan $user->name = $request->input('name'); $user->email = $request->input('email'); !empty($request->input('password')) ? $user->password = bcrypt($request->input('password')) : $user->password; $user->level = GlobalEnum::isSiswa; $user->status = $request->input('status'); $user->username = Str::before($user->email, '@') . rand(100, 999); $detail->nis = $request->input('nis'); $detail->agama = $request->input('agama'); $detail->agama_ayah = $request->input('agama_ayah'); $detail->kota_siswa = $request->input('kota_siswa'); $detail->alamat = $request->input('alamat'); $detail->nama_ibu = $request->input('nama_ibu'); $detail->telepon = $request->input('telepon'); $detail->pekerjaan_ibu = $request->input('pekerjaan_ibu'); $detail->pekerjaan_ayah = $request->input('pekerjaan_ayah'); $detail->tempat_lahir = $request->input('tempat_lahir'); $detail->nama_ayah = $request->input('nama_ayah'); $detail->tanggal_lahir = $request->input('tanggal_lahir'); $detail->telepon_ortu = $request->input('telepon_ortu'); $detail->agama_ibu = $request->input('agama_ibu'); // Jika ada file baru yang diunggah, simpan file baru di storage if ($request->hasFile('image') && $request->file('image')->isValid()) { $foto_namaBaru = $request->file('image')->store('public/images'); $user->thumbnail = $foto_namaBaru; } // Simpan perubahan pada database if($user->save() && $detail->save()) { return redirect()->route('siswa')->with('swal', swal_alert('success', 'Berhasil diperbarui')); } else { return redirect()->route('siswa')->with('swal', swal_alert('error', 'An error occurred in the query')); } } else { return redirect()->route('siswa')->with('swal', swal_alert('error', 'Unexpected error')); } } public function destroySiswa($id) { $user = User::find($id); // Jika data ditemukan if ($user) { // Cek apakah ada file di kolom "is_thumbnail" if ($user->thumbnail) { // Hapus file thumbnail dari storage Storage::delete($user->is_thumbnail); } $detail = Siswa::where('user_id', $id)->first(); // Hapus data dari database $user->delete(); $detail->delete(); return redirect()->route('siswa')->with('swal', swal_alert('success', 'You are successfully deleted records')); } else { return redirect()->route('siswa')->with('swal', swal_alert('error', 'Data not found')); } } public function indexKonselor(Request $request) { if ($request->ajax()) { $data = User::select('*')->where('level', GlobalEnum::isKonselor)->orderBy('created_at', 'desc'); // Convert the Eloquent Collection to a regular PHP array $data->each(function ($item, $key) { $item->rowIndex = $key + 1; }); return Datatables::eloquent($data) ->addIndexColumn() ->addColumn('title-post', function($row) { return '
' . $row->name . '
'; }) ->addColumn('nip', function($row) { return $row->konselor->first()->nip; }) ->addColumn('agama', function($row) { if($row->konselor->first()->agama == 1) { return 'Islam'; } elseif($row->konselor->first()->agama == 2) { return 'Kristen'; } elseif($row->konselor->first()->agama == 3) { return 'Buddha'; } elseif($row->konselor->first()->agama == 4) { return 'Konghucu'; } }) ->addColumn('action', function($row){ $view = route('users.show', ['id' => $row->id]); $edit = route('users.edit', ['id' => $row->id]); $delete = route('users.delete', ['id' => $row->id]); $btn = ' '; return $btn; }) ->addColumn('status', function($row){ if ($row->status == GlobalEnum::isActive) { return 'Active'; } elseif($row->status == GlobalEnum::isInactive) { return 'Non Active'; } elseif($row->status == GlobalEnum::isDeactive) { return 'Deactivated'; } else { return 'Not Verified'; } }) ->rawColumns(['title-post','nip','agama','action','status']) ->filter(function ($query) use ($request) { if ($request->has('search')) { $search = $request->get('search')['value']; $filterCategory = explode('|', $search); if($filterCategory[0] === 'status') { if(!empty($filterCategory[1])) { $filterCode = $filterCategory[1]-1; if ($filterCode !== 0) { $query->where('status', '=', $filterCode); } } else { $query->get(); } } elseif($filterCategory[0] === 'user') { if(!empty($filterCategory[1])) { $query->where('name', 'LIKE', "%$filterCategory[1]%"); } else { $query->get(); } } } }) ->make(true); } $data = [ 'subtitle' => 'Konselor', 'button' => true, 'module' => [ 'url' => route('konselor.create'), 'name' => 'Create New' ] ]; return view('admin.app.users.konselor.index', compact('data')); } public function createKonselor() { $data = [ 'subtitle' => 'Create New' ]; return view('admin.app.users.konselor.add', compact('data')); } public function storeKonselor(Request $request) { $validator = Validator::make($request->all(), [ 'nip' => 'required', 'alamat' => 'required', 'telepon' => 'required', 'agama' => 'required', 'name' => 'required', 'email' => 'required|email', 'password' => 'required', 'status' => 'required', 'image' => 'image|mimes:jpg,jpeg,png,svg|max:7048', ], [ 'image.mimes' => 'Tipe file yang diunggah harus jpg, jpeg, png, atau svg.', ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } $input = $request->all(); $foto_namaBaru = null; if ($request->hasFile('image') && $request->file('image')->isValid()) { $foto_namaBaru = $request->file('image')->store('public/images'); } $post = new User([ 'name' => $input['name'], 'username' => Str::before($input['email'], '@') . rand(100, 999), 'email' => $input['email'], 'password' => bcrypt($input['password']), 'status' => $input['status'], 'level' => GlobalEnum::isKonselor, 'thumbnail' => empty($foto_namaBaru) ? '' : $foto_namaBaru, ]); $check = User::where('email', $input['email'])->count(); if ($check == 0) { if ($post->save()) { $detail = User::where('email', $input['email'])->first(); $postDetail = new Konselor([ 'id' => Str::uuid(), 'user_id' => $detail->id, 'nip' => $input['nip'], 'agama' => $input['agama'], 'alamat' => $input['alamat'], 'telepon' => $input['telepon'] ]); $postDetail->save(); return redirect()->route('konselor')->with('swal', swal_alert('success', 'You have successfully added data')); } else { return redirect()->route('konselor')->with('swal', swal_alert('error', 'An error occurred in the query')); } } else { return redirect()->route('konselor')->with('swal', swal_alert('error', 'Email already exists')); } } public function editKonselor($id) { $data = [ 'subtitle' => User::where('id', $id)->first()->email, 'records' => User::where('id', $id)->first() ]; $detail = Konselor::where('user_id', $id)->first(); return view('admin.app.users.konselor.edit', compact('data', 'id', 'detail')); } public function updateKonselor(Request $request, $id) { $validator = Validator::make($request->all(), [ 'nip' => 'required', 'alamat' => 'required', 'telepon' => 'required', 'agama' => 'required', 'name' => 'required', 'email' => 'required|email', 'status' => 'required', 'image' => 'image|mimes:jpg,jpeg,png,svg|max:7048', ], [ 'image.mimes' => 'Tipe file yang diunggah harus jpg, jpeg, png, atau svg.', ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } // Cari data berdasarkan ID $user = User::find($id); $detail = Konselor::where('user_id', $id)->first(); // Jika data ditemukan if ($user) { // Jika ada file baru yang diunggah, hapus file thumbnail yang lama if ($request->hasFile('image') && $request->file('image')->isValid()) { if ($user->thumbnail) { Storage::delete($user->thumbnail); } } // Update data dengan data baru dari form yang telah dibersihkan $user->name = $request->input('name'); $user->email = $request->input('email'); !empty($request->input('password')) ? $user->password = bcrypt($request->input('password')) : $user->password; $user->status = $request->input('status'); $user->username = Str::before($user->email, '@') . rand(100, 999); $detail->nip = $request->input('nip'); $detail->alamat = $request->input('alamat'); $detail->agama = $request->input('agama'); $detail->telepon = $request->input('telepon'); // Jika ada file baru yang diunggah, simpan file baru di storage if ($request->hasFile('image') && $request->file('image')->isValid()) { $foto_namaBaru = $request->file('image')->store('public/images'); $user->thumbnail = $foto_namaBaru; } // Simpan perubahan pada database $user->save(); $detail->save(); return redirect()->route('konselor')->with('swal', swal_alert('success', 'You are successfully modify data')); } else { return redirect()->route('konselor')->with('swal', swal_alert('error', 'Unexpected error')); } } public function destroyKonselor($id) { $user = User::find($id); $detail = Konselor::where('user_id', $id)->first(); // Jika data ditemukan if ($user) { // Cek apakah ada file di kolom "is_thumbnail" if ($user->thumbnail) { // Hapus file thumbnail dari storage Storage::delete($user->is_thumbnail); } // Hapus data dari database $user->delete(); $detail->delete(); return redirect()->route('konselor')->with('swal', swal_alert('success', 'You are successfully deleted records')); } else { return redirect()->route('konselor')->with('swal', swal_alert('error', 'Data not found')); } } }