From 22cfa5def06ff90eae501ed0a4bf56ee6b7bbfe6 Mon Sep 17 00:00:00 2001 From: Raihan Surya Date: Fri, 10 Nov 2023 10:05:22 +0700 Subject: [PATCH] Datatable kontak dan user --- .../Admin/AdminRefundController.php | 4 + .../Admin/AdminSettingController.php | 55 +++++++- .../Admin/AdminTransactionController.php | 4 + .../Controllers/Admin/AdminUserController.php | 13 +- .../User/UserContactController.php | 133 ++++++++++++++---- .../Controllers/User/UserRefundController.php | 4 + .../User/UserTransactionController.php | 4 + database/seeders/DatabaseSeeder.php | 2 +- resources/views/Admin/setting/index.blade.php | 75 +++++----- resources/views/Admin/users/index.blade.php | 4 +- resources/views/User/contact/index.blade.php | 70 +++++---- .../User/contact/modal-add-contact.blade.php | 35 ++--- 12 files changed, 277 insertions(+), 126 deletions(-) diff --git a/app/Http/Controllers/Admin/AdminRefundController.php b/app/Http/Controllers/Admin/AdminRefundController.php index d33cb72..8c0aa1b 100644 --- a/app/Http/Controllers/Admin/AdminRefundController.php +++ b/app/Http/Controllers/Admin/AdminRefundController.php @@ -130,4 +130,8 @@ class AdminRefundController extends Controller ]); } } + + public function listRefund(Request $request){ + + } } diff --git a/app/Http/Controllers/Admin/AdminSettingController.php b/app/Http/Controllers/Admin/AdminSettingController.php index 2e4e6c7..c47fe45 100644 --- a/app/Http/Controllers/Admin/AdminSettingController.php +++ b/app/Http/Controllers/Admin/AdminSettingController.php @@ -8,6 +8,7 @@ use App\Http\Controllers\Controller; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; use Throwable; +use Yajra\DataTables\DataTables; class AdminSettingController extends Controller { @@ -16,10 +17,7 @@ class AdminSettingController extends Controller */ public function index() { - $settings = Setting::all(); - return view('admin.setting.index', [ - 'settings' => $settings, - ]); + return view('admin.setting.index'); } /** @@ -85,4 +83,53 @@ class AdminSettingController extends Controller } } } + + public function listSetting(Request $request){ + try{ + $subQuery = Setting::latest()->select('id','bulan','tahun','persentase','status'); + + if($request->has('search') && !empty($request->search['value'])){ + $searchSetting = $request->search['value']; + + if (!is_numeric($searchSetting)) { + $subQuery->where(function($a) use ($searchSetting){ + $a->whereRaw('LOWER(status) LIKE ?', ['%' . strtolower($searchSetting) . '%']); + }); + } else { + $subQuery->where(function($a) use ($searchSetting){ + $a->where('bulan',$searchSetting) + ->orWhere('tahun',$searchSetting) + ->orWhere('persentase',$searchSetting); + }); + } + } + + $querySetting = Setting::from(DB::raw("({$subQuery->toSql()}) as tmp")) + ->mergeBindings($subQuery->getQuery()) // Menggabungkan binding parameters + ->select('*') + ->get(); + + if($request->ajax()){ + return DataTables::of($querySetting) + ->addIndexColumn() + ->addColumn('action', function($row){ + $status = $row->status ? 'checked' : ''; + $html_code = ''; + return $html_code; + }) + ->rawColumns(['action']) + ->make(true); + } + + }catch(Throwable $e){ + Log::error($e->getMessage()); + + return response()->json(['success' => false, 'message' => 'Terjadi Kesalahan pada sisi server']); + } + } } diff --git a/app/Http/Controllers/Admin/AdminTransactionController.php b/app/Http/Controllers/Admin/AdminTransactionController.php index ade9579..7fb1238 100644 --- a/app/Http/Controllers/Admin/AdminTransactionController.php +++ b/app/Http/Controllers/Admin/AdminTransactionController.php @@ -49,4 +49,8 @@ class AdminTransactionController extends Controller } } + + public function listTransaction(Request $request){ + + } } diff --git a/app/Http/Controllers/Admin/AdminUserController.php b/app/Http/Controllers/Admin/AdminUserController.php index 92961b5..de7cf39 100644 --- a/app/Http/Controllers/Admin/AdminUserController.php +++ b/app/Http/Controllers/Admin/AdminUserController.php @@ -17,11 +17,7 @@ class AdminUserController extends Controller */ public function index() { - $users = User::where('role', 'User') - ->orderByRaw("CASE WHEN status = 'Progress' THEN 1 WHEN status = 'Finished' THEN 2 WHEN status = 'Rejected' THEN 3 ELSE 4 END ASC") - ->latest() - ->get(); - return view('admin.users.index', ['users' => $users]); + return view('admin.users.index'); } /** @@ -101,9 +97,10 @@ class AdminUserController extends Controller if ($request->has('search') && !empty($request->search['value'])) { $searchUser = $request->search['value']; $subQuery->where(function ($a) use ($searchUser) { - $a->whereRaw('email LIKE ?', ['%' . $searchUser . '%']) - ->orWhereRaw('nama_depan LIKE ?', ['%' . $searchUser . '%']) - ->orWhereRaw('nama_belakang LIKE ?', ['%' . $searchUser . '%']); + $a->whereRaw('LOWER(email) LIKE ?', ['%' . strtolower($searchUser) . '%']) + ->orWhereRaw('LOWER(nama_depan) LIKE ?', ['%' . strtolower($searchUser) . '%']) + ->orWhereRaw('LOWER(nama_belakang) LIKE ?', ['%' . strtolower($searchUser) . '%']) + ->orWhereRaw('LOWER(status) LIKE ?',['%'.strtolower($searchUser).'%']); }); } diff --git a/app/Http/Controllers/User/UserContactController.php b/app/Http/Controllers/User/UserContactController.php index 374a1a8..2755de4 100644 --- a/app/Http/Controllers/User/UserContactController.php +++ b/app/Http/Controllers/User/UserContactController.php @@ -8,6 +8,9 @@ use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; +use Throwable; +use Yajra\DataTables\DataTables; class UserContactController extends Controller { @@ -16,8 +19,7 @@ class UserContactController extends Controller */ public function index() { - $contacts = Contact::where('pemilik_kontak', Auth::user()->email)->get(); - return view('user.contact.index', ['contacts' => $contacts]); + return view('user.contact.index'); } public function getContact() @@ -35,29 +37,38 @@ class UserContactController extends Controller */ public function store(Request $request) { - $email_relasi = $request->input('email'); + $email_relasi = $request->email; if ($email_relasi == Auth::user()->email) { return response()->json([ 'status' => false, 'message' => 'Kontak yang ingin didaftarkan tidak boleh sama', ]); - } else { - $result = Contact::create([ + } + + try{ + DB::beginTransaction(); + + Contact::create([ 'pemilik_kontak' => Auth::user()->email, - 'relasi_kontak' => $request->input('email'), + 'relasi_kontak' => $email_relasi, ]); - if ($result) { - return response()->json([ - 'status' => true, - 'message' => 'Akun berhasil masuk ke kontak', - ]); - } else { - return response()->json([ - 'status' => false, - 'message' => 'Akun gagal masuk ke kontak', - ]); - } + DB::commit(); + + return response()->json([ + 'status' => true, + 'message' => 'Kontak berhasil ditambahkan.' + ]); + + }catch(Throwable $e){ + DB::rollBack(); + + Log::error($e->getMessage()); + + return response()->json([ + 'status' => false, + 'message' => 'Terjadi error di bagian server atau kontak sudah didaftarkan', + ]); } } @@ -67,22 +78,25 @@ class UserContactController extends Controller public function destroy($id) { try { - $result = Contact::destroy($id); - if ($result) { - return response()->json([ - 'message' => 'Berhasil hapus data', - 'status' => true, - ]); - } else { - return response()->json([ - 'message' => 'Gagal hapus data karena ' . $result, - 'status' => false, - ]); - } - } catch (\Exception $e) { + DB::beginTransaction(); + + Contact::destroy($id); + + DB::commit(); + + return response()->json([ + 'message' => 'Berhasil hapus data', + 'status' => true, + ]); + + } catch (Throwable $e) { + DB::rollBack(); + + Log::error($e->getMessage()); + return response()->json([ - 'message' => 'Gagal hapus data, karena ' . $e, 'status' => false, + 'message' => 'Terjadi error di bagian server.', ]); } } @@ -111,4 +125,61 @@ class UserContactController extends Controller ]); } } + + public function listContact(Request $request){ + try{ + $subQuery = Contact::join('users','contacts.relasi_kontak','=','users.email') + ->join('indonesia_villages','users.kode_kelurahan','=','indonesia_villages.code') + ->join('indonesia_districts','indonesia_villages.district_code','=','indonesia_districts.code') + ->join('indonesia_cities', 'indonesia_districts.city_code','=','indonesia_cities.code') + ->join('indonesia_provinces','indonesia_cities.province_code','=','indonesia_provinces.code') + ->where('pemilik_kontak', Auth::user()->email) + ->select('contacts.id', 'users.email as email as email', 'users.nohp as nohp', 'users.alamat as alamat', DB::raw("CONCAT(users.nama_depan, ' ', users.nama_belakang) as nama_lengkap"),'indonesia_villages.name as kelurahan','indonesia_districts.name as kecamatan','indonesia_cities.name as kota','indonesia_provinces.name as provinsi'); + + if($request->has('search') && !empty($request->search['value'])){ + $searchContact = $request->search['value']; + $subQuery->where(function($a) use ($searchContact){ + $a->whereRaw('LOWER(users.nama_depan) LIKE ?',['%'.strtolower($searchContact).'%']) + ->orWhereRaw('LOWER(users.nama_belakang) LIKE ?',['%'.strtolower($searchContact).'%']); + }); + } + + $queryContact = Contact::from(DB::raw("({$subQuery->toSql()}) as tmp")) + ->mergeBindings($subQuery->getQuery()) // Menggabungkan binding parameters + ->select('*') + ->get(); + + if($request->ajax()){ + return DataTables::of($queryContact) + ->addIndexColumn() + ->addColumn('action', function($row){ + $village = $row->kelurahan; + $city = $row->kota; + $district = $row->kecamatan; + $province = $row->provinsi; + $html_code = ' + + + '; + return $html_code; + }) + ->rawColumns(['action']) + ->make(true); + } + }catch(Throwable $e){ + Log::error($e->getMessage()); + + return response()->json(['success' => false, 'message' => 'Terjadi Kesalahan pada sisi server']); + } + } } diff --git a/app/Http/Controllers/User/UserRefundController.php b/app/Http/Controllers/User/UserRefundController.php index e533498..0aeed32 100644 --- a/app/Http/Controllers/User/UserRefundController.php +++ b/app/Http/Controllers/User/UserRefundController.php @@ -107,4 +107,8 @@ class UserRefundController extends Controller 'descriptions' => $refundDescription ]); } + + public function listRefund(Request $request){ + + } } diff --git a/app/Http/Controllers/User/UserTransactionController.php b/app/Http/Controllers/User/UserTransactionController.php index 85e429f..d453b7e 100644 --- a/app/Http/Controllers/User/UserTransactionController.php +++ b/app/Http/Controllers/User/UserTransactionController.php @@ -821,4 +821,8 @@ class UserTransactionController extends Controller } } } + + public function listTransaction(Request $request){ + + } } diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 158dcf4..a4a879a 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -92,7 +92,7 @@ class DatabaseSeeder extends Seeder 'no_rek' => '01980921' ]); - // User::factory(20)->create(); + User::factory(100)->create(); $now = Carbon::now()->tz('Asia/Jakarta'); $bulan = $now->format('n'); diff --git a/resources/views/Admin/setting/index.blade.php b/resources/views/Admin/setting/index.blade.php index 4d4ab7a..55c4d2d 100644 --- a/resources/views/Admin/setting/index.blade.php +++ b/resources/views/Admin/setting/index.blade.php @@ -3,6 +3,43 @@