ajax()) { $data = User::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('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','status']) ->filter(function ($query) use ($request) { if ($request->has('search')) { $search = $request->get('search')['value']; if(!empty($search)) { $query->where('name', 'LIKE', "%$search%"); $query->orWhere('email', 'LIKE', "%$search%"); } 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])->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', 'status' => 'required', 'level' => 'required', ]); if ($validator->fails()) { return redirect()->back()->with('error', $validator->errors()->first())->withInput(); } $input = $request->all(); $foto_namaBaru = null; $userEmailToken = md5(Str::random(25)); $post = new User([ 'name' => $input['name'], 'username' => Str::before($input['email'], '@') . rand(100, 999), 'email' => $input['email'], 'password' => empty($input['password']) ? bcrypt('default123') : bcrypt($input['password']), 'status' => $input['status'], 'level' => $input['level'], 'thumbnail' => empty($foto_namaBaru) ? '' : $foto_namaBaru, ]); $check = User::where('email', $input['email'])->count(); if ($check == 0) { if ($post->save()) { return redirect()->route('users')->with('success', 'You have successfully added data'); } else { return redirect()->route('users')->with('error', 'An error occurred in the query email'); } } else { return redirect()->route('users')->with('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])->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()->with('error', $validator->errors()->first())->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('success', 'You have successfully updated data'); } else { return redirect()->route('users')->with('error', 'Data not found'); } } 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('success', 'You are successfully deleted records'); } else { return redirect()->route('users')->with('error', 'Data not found'); } } public function siswa(Request $request) { if ($request->ajax()) { $data = Siswa::select('*'); // 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->nama; }) ->addColumn('wali', function($row) { return $row->wali->name ?? '-'; }) ->addColumn('nis', function($row) { return $row->nis ?? '-'; }) ->addColumn('agama', function($row) { if($row->agama == 1) { return 'Islam'; } elseif($row->agama == 2) { return 'Kristen'; } elseif($row->agama == 3) { return 'Buddha'; } elseif($row->agama == 4) { return 'Konghucu'; } }) ->addColumn('daftar', function($row){ return Carbon::parse($row->created_at)->format('d F Y'); }) ->addColumn('status_siswa', function($row){ if ($row->status == 1) { return 'Siswa Aktif'; } else { return 'Calon Siswa'; } }) ->rawColumns(['title-post','nis','daftar','agama', 'status_siswa', 'wali']) ->filter(function ($query) use ($request) { if ($request->has('search')) { $search = $request->get('search')['value']; if(!empty($search)) { $query->where('nama', 'LIKE', "%$search%"); } else { $query->get(); } } }) ->make(true); } $data = [ 'subtitle' => 'Siswa', 'button' => true, 'module' => [ 'url' => route('siswa.create'), 'name' => 'Tambah Baru' ] ]; 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 storeSiswa(Request $request) { $validator = Validator::make($request->all(), [ 'id_wali' => 'required', 'id_kelas' => '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', '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()->with('error', $validator->errors()->first())->withInput(); } $input = $request->all(); $foto_namaBaru = null; if ($request->hasFile('image') && $request->file('image')->isValid()) { $foto_namaBaru = $request->file('image')->store('public/images'); } $checkSiswa = Siswa::where('nama', $input['name'])->orWhere('id_wali', $input['id_wali'])->count(); if($checkSiswa == 0) { $post = new Siswa([ 'id' => Str::uuid(), 'id_wali' => $input['id_wali'], 'id_kelas' => $input['id_kelas'], 'nama' => $input['name'], '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'], 'status' => $input['status'], ]); if($post->save()) { return redirect()->to(app_url('siswa'))->with('success', 'Data created successfully'); } else { return redirect()->back()->with('error', 'Failed to create data'); } } else { return redirect()->back()->with('error', 'Data already exists'); } } public function editSiswa($id) { $data = [ 'subtitle' => 'Edit Siswa' ]; $detail = Siswa::where('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(), [ 'id_wali' => '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', '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()->with('error', $validator->errors()->first())->withInput(); } // Cari data berdasarkan ID $siswa = Siswa::where('id', $id)->first(); // Jika data ditemukan if ($siswa) { $siswa->id_wali = $request->input('id_wali'); $siswa->id_kelas = $request->input('id_kelas'); $siswa->nis = $request->input('nis'); $siswa->nama = $request->input('name'); $siswa->agama = $request->input('agama'); $siswa->agama_ayah = $request->input('agama_ayah'); $siswa->kota_siswa = $request->input('kota_siswa'); $siswa->alamat = $request->input('alamat'); $siswa->nama_ibu = $request->input('nama_ibu'); $siswa->telepon = $request->input('telepon'); $siswa->pekerjaan_ibu = $request->input('pekerjaan_ibu'); $siswa->pekerjaan_ayah = $request->input('pekerjaan_ayah'); $siswa->tempat_lahir = $request->input('tempat_lahir'); $siswa->nama_ayah = $request->input('nama_ayah'); $siswa->tanggal_lahir = $request->input('tanggal_lahir'); $siswa->telepon_ortu = $request->input('telepon_ortu'); $siswa->agama_ibu = $request->input('agama_ibu'); $siswa->status = $request->input('status'); if($siswa->save()) { return redirect()->to(app_url('siswa'))->with('success', 'Data updated successfully'); } else { return redirect()->back()->with('error', 'Failed to update data'); } } else { return redirect()->route('siswa')->with('error', 'Data not found'); } } public function destroySiswa($id) { $siswa = Siswa::find($id); // Jika data ditemukan if ($siswa) { $siswa->delete(); return redirect()->route('siswa')->with('success', 'You are successfully deleted records'); } else { return redirect()->route('siswa')->with('error', 'Data not found'); } } public function guru(Request $request) { if ($request->ajax()) { $data = Guru::select('*'); // 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->user->name; }) ->addColumn('nip', function($row) { return $row->nip; }) ->addColumn('email', function($row) { return $row->user->email; }) ->addColumn('agama', function($row) { if($row->agama == 1) { return 'Islam'; } elseif($row->agama == 2) { return 'Kristen'; } elseif($row->agama == 3) { return 'Buddha'; } elseif($row->agama == 4) { return 'Konghucu'; } }) ->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', 'status', 'nip', 'agama', 'email']) ->filter(function ($query) use ($request) { if ($request->has('search')) { $search = $request->get('search')['value']; if(!empty($search)) { $query->where('nip', 'LIKE', "%$search%"); } else { $query->get(); } } }) ->make(true); } $data = [ 'subtitle' => 'Guru', 'button' => true, 'module' => [ 'url' => route('guru.create'), 'name' => 'Tambah baru' ] ]; return view('admin.app.users.guru.index', compact('data')); } public function createGuru() { $data = [ 'subtitle' => 'Tambah Data' ]; return view('admin.app.users.guru.add', compact('data')); } public function storeGuru(Request $request) { $validator = Validator::make($request->all(), [ 'nip' => 'required', 'alamat' => 'required', 'telepon' => 'required', 'agama' => 'required', 'name' => 'required', 'email' => 'required|email', 'password' => 'required', 'status' => 'required', ]); if ($validator->fails()) { return redirect()->back()->with('error', $validator->errors()->first())->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 Guru([ 'id' => Str::uuid(), 'id_user' => $detail->id, 'nip' => $input['nip'], 'agama' => $input['agama'], 'alamat' => $input['alamat'], 'telepon' => $input['telepon'], 'status' => 1, ]); $postDetail->save(); return redirect()->to(app_url('guru'))->with('success', 'User created successfully'); } else { return redirect()->back()->with('error', 'User not created'); } } else { return redirect()->back()->with('error', 'User already exists'); } } public function editGuru($id) { $data = [ 'subtitle' => 'Edit Guru', ]; $detail = Guru::where('id_user', $id)->first(); return view('admin.app.users.guru.edit', compact('data', 'id', 'detail')); } public function updateGuru(Request $request, $id) { $validator = Validator::make($request->all(), [ 'nip' => 'required', 'alamat' => 'required', 'telepon' => 'required', 'agama' => 'required', 'name' => 'required', 'email' => 'required|email', 'status' => 'required', ]); if ($validator->fails()) { return redirect()->back()->with('error', $validator->errors()->first())->withInput(); } // Cari data berdasarkan ID $user = User::find($id); $detail = Guru::where('id_user', $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()->to(app_url('guru'))->with('success', 'Data updated successfully'); } else { return redirect()->back()->with('error', 'Data not found'); } } public function destroyGuru($id) { $user = User::find($id); $detail = Guru::where('id_user', $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()->to(app_url('guru'))->with('success', 'Data updated successfully'); } else { return redirect()->back()->with('error', 'Data not found'); } } public function kelas(Request $request) { if ($request->ajax()) { $data = Kelas::select('*'); // Convert the Eloquent Collection to a regular PHP array $data->each(function ($item, $key) { $item->rowIndex = $key + 1; }); return Datatables::of($data) ->addIndexColumn() ->make(true); } $data = [ 'subtitle' => 'Kelas', 'button' => true, 'module' => [ 'url' => route('kelas.create'), 'name' => 'Tambah Kelas' ] ]; return view('admin.app.users.kelas.index', compact('data')); } public function createKelas() { $data = [ 'subtitle' => 'Tambah Kelas', ]; return view('admin.app.users.kelas.add', compact('data')); } public function storeKelas(Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required', ]); if ($validator->fails()) { return redirect()->back()->with('error', $validator->errors()->first())->withInput(); } $checkKelas = Kelas::where('name', $request->name)->count(); if($checkKelas < 1) { $postAccount = new Kelas([ 'name' => $request->name, ]); if($postAccount->save()) { return redirect()->route('kelas')->with('success', 'Kelas baru berhasil ditambahkan'); } else { return redirect()->back()->with('error', 'Kelas baru gagal ditambahkan'); } } else { return redirect()->back()->with('error', 'Kelas sudah ada'); } } public function editKelas($id) { $data = [ 'subtitle' => 'Edit Kelas', ]; $kelas = Kelas::find($id); return view('admin.app.users.kelas.edit', compact('data', 'kelas')); } public function updateKelas(Request $request, $id) { $validator = Validator::make($request->all(), [ 'name' => 'required', ]); if ($validator->fails()) { return redirect()->back()->with('error', $validator->errors()->first())->withInput(); } $checkKelas = Kelas::find($id); if($checkKelas) { $account = Kelas::find($id); $account->name = $request->name; if($account->save()) { return redirect()->route('kelas')->with('success', 'Kelas baru berhasil diperbarui'); } else { return redirect()->back()->with('error', 'Kelas baru gagal diperbarui'); } } else { return redirect()->back()->with('error', 'Kelas tidak ditemukan'); } } public function destroyKelas($id) { $kelas = Kelas::find($id); $kelas->delete(); return redirect()->route('kelas')->with('success', 'Kelas berhasil di hapus'); } public function wali(Request $request) { if ($request->ajax()) { $data = User::select('*')->where('level', 5)->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('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','status']) ->filter(function ($query) use ($request) { if ($request->has('search')) { $search = $request->get('search')['value']; if(!empty($search)) { $query->where('name', 'LIKE', "%$search%"); $query->orWhere('email', 'LIKE', "%$search%"); $query->where('level', 5); } else { $query->where('level', 5); } } }) ->make(true); } $data = [ 'subtitle' => 'Wali Murid', 'button' => true, 'module' => [ 'url' => route('wali-murid.create'), 'name' => 'Tambah baru' ] ]; return view('admin.app.users.walimurid.index', compact('data')); } public function createWali() { $data = [ 'subtitle' => 'Tambah baru' ]; $roles = Roles::whereIn('id', [1])->get(); return view('admin.app.users.walimurid.add', compact('data', 'roles')); } public function storeWali(Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required', 'email' => 'required|email', 'status' => 'required', ]); if ($validator->fails()) { return redirect()->back()->with('error', $validator->errors()->first())->withInput(); } $input = $request->all(); $foto_namaBaru = null; $userEmailToken = md5(Str::random(25)); $post = new User([ 'name' => $input['name'], 'username' => Str::before($input['email'], '@') . rand(100, 999), 'email' => $input['email'], 'password' => empty($input['password']) ? bcrypt('default123') : bcrypt($input['password']), 'status' => $input['status'], 'level' => 5, 'thumbnail' => empty($foto_namaBaru) ? '' : $foto_namaBaru, ]); $check = User::where('email', $input['email'])->count(); if ($check == 0) { if ($post->save()) { return redirect()->to(app_url('wali-murid'))->with('success', 'You have successfully added data'); } else { return redirect()->back()->with('error', 'An error occurred in the query email'); } } else { return redirect()->to(app_url('wali-murid'))->with('error', 'Email already exists'); } } public function editWali($id) { $data = [ 'subtitle' => User::where('id', $id)->first()->email, 'records' => User::where('id', $id)->first() ]; $roles = Roles::whereIn('id', [1])->get(); return view('admin.app.users.walimurid.edit', compact('data', 'id', 'roles')); } public function updateWali(Request $request, $id) { $validator = Validator::make($request->all(), [ '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()->with('error', $validator->errors()->first())->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->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()->to(app_url('wali-murid'))->with('success', 'You have successfully updated data'); } else { return redirect()->back()->with('error', 'Data not found'); } } public function destroyWali($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()->to(app_url('wali-murid'))->with('success', 'You are successfully deleted records'); } else { return redirect()->back()->with('error', 'Data not found'); } } }