diff --git a/app/Http/Controllers/API/Contact/ContactApiController.php b/app/Http/Controllers/API/Contact/ContactApiController.php new file mode 100644 index 0000000..3a71ae0 --- /dev/null +++ b/app/Http/Controllers/API/Contact/ContactApiController.php @@ -0,0 +1,11 @@ +middleware('auth:api', ['except' => ['login', 'register', 'hai']]); + } + + /** + * Get a JWT via given credentials. + * + * @return \Illuminate\Http\JsonResponse + */ + public function login(Request $request) + { + // $credentials = $request->validate( + // [ + // 'email' => ['required', 'email'], + // 'password' => ['required', 'min:8'], + // ], + // [ + // 'email.required' => 'Alamat email wajib diisi.', + // 'email.email' => 'Alamat email harus berformat valid.', + // 'password.required' => 'Password wajib diisi.', + // 'password.min' => 'Password harus memiliki panjang minimal 8 karakter.', + // ], + // ); + + // $credentials = $request->only('email', 'password'); + + // if (!$token = Auth::attempt($credentials)) { + // return response()->json(['error' => 'Unauthorized', 'message' => $credentials ], 401); + // } + + // // return $this->respondWithToken($token); + // return response()->json([ + // 'token' => $token + // ]); + + $credentials = request(['email', 'password']); + + if (!($token = Auth::guard('api')->attempt($credentials))) { + return response()->json(['error' => 'Unauthorized'], 401); + } + + return $this->respondWithToken($token); + } + + /** + * Get the authenticated User. + * + * @return \Illuminate\Http\JsonResponse + */ + public function me() + { + $token = JWTAuth::getToken(); + return response()->json(JWTAuth::user($token)); + } + + public function test(Request $request) + { + return response()->json([ + 'message' => 'Hello from API', + 'data' => $request->input('data'), + ]); + } + + /** + * Log the user out (Invalidate the token). + * + * @return \Illuminate\Http\JsonResponse + */ + public function logout() + { + auth()->logout(); + + return response()->json(['message' => 'Successfully logged out']); + } + + /** + * Refresh a token. + * + * @return \Illuminate\Http\JsonResponse + */ + public function refresh() + { + return $this->respondWithToken(Auth::refresh()); + } + + /** + * Get the token array structure. + * + * @param string $token + * + * @return \Illuminate\Http\JsonResponse + */ + protected function respondWithToken($token) + { + return response()->json([ + 'access_token' => $token, + 'token_type' => 'bearer', + 'expires_in' => JWTFactory::getTTL() * 60, + ]); + } + + public function register(Request $request) + { + $nama_depan = $request->input('nama_depan'); + $nama_belakang = $request->input('nama_belakang'); + $tanggal_lahir = $request->input('tanggal_lahir'); + $new_password = $request->input('new_password'); + $nik = $request->input('nik'); + $email = $request->input('new_email'); + $nohp = $request->input('nohp'); + $alamat = $request->input('alamat'); + $foto_ktp = ''; + $foto_wajah = ''; + $persentase_kemiripan = 0; + $gender = $request->input('gender'); + $kode_kelurahan = $request->input('village_code'); + + // $ktpBase64 = $request->input('ktp'); + // $wajahBase64 = $request->input('wajah'); + + // if ($ktpBase64 && $wajahBase64) { + // // Konversi string Base64 ke file gambar + // $ktpFile = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $ktpBase64)); + // $wajahFile = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $wajahBase64)); + + // $foto_ktp = 'Foto-KTP-' . $nama_depan . '-' . $nama_belakang . '.jpg'; + // $foto_wajah = 'Foto-Wajah-' . $nama_depan . '-' . $nama_belakang . '.jpg'; + + // file_put_contents(public_path('storage/foto-ktp/' . $foto_ktp), $ktpFile); + // file_put_contents(public_path('storage/foto-wajah/' . $foto_wajah), $wajahFile); + // } + + if ($request->hasFile('ktp') && $request->hasFile('wajah')) { + $fileKtp = $request->file('ktp'); + $fileWajah = $request->file('wajah'); + $foto_ktp = $nama_depan.'-'.$nama_belakang. '.' . $fileKtp->getClientOriginalExtension(); + $foto_wajah = $nama_depan.'-'.$nama_belakang. '.' . $fileWajah->getClientOriginalExtension(); + $pathKtp = 'foto-ktp/' . $foto_ktp; + $pathWajah = 'foto-wajah/' . $foto_wajah; + + Storage::disk('public')->put($pathKtp, file_get_contents($fileKtp)); + Storage::disk('public')->put($pathWajah, file_get_contents($fileWajah)); + } + + //OCR + try { + // $fotoKTP = public_path('storage/foto-ktp/' . $foto_ktp); + + // $image = Image::make($fotoKTP); + + // $image->greyscale(); // Convert to grayscale + // $image->contrast(10); // Increase contrast, adjust the value as needed + + // $preprocessedfotoKTP = public_path('storage/preprocessed/preprocessed_image.jpg'); + // $image->save($preprocessedfotoKTP); + + // $result = (new TesseractOCR($preprocessedfotoKTP))->run(); + + // (5) Normalize + + // $lines = explode("\n", $result); + // $namaOCR = ''; + // $nikOCR = ''; + // $nikInputan = $nik; + // $namaInputan = $nama_depan . ' ' . $nama_belakang; + + // foreach ($lines as $line) { + // // Mencari NIK + // if (strpos($line, $nikInputan) !== false) { + // $nikOCR = preg_replace('/[^0-9]/', '', $line); + // } + + // // Mencari nama + // if (strpos($line, $namaInputan) !== false) { + // $namaOCR = trim(substr($line, strpos($line, ':') + 1)); + // } + // } + + //Selesai + + // $persentase_kemiripan = (similar_text($nikInputan, $nikOCR, $percent) + similar_text($namaOCR, $namaOCR, $percent)) / 2; + // $status = 'Progress'; + + // if (similar_text($nikInputan, $nikOCR, $percent) >= 70 && similar_text($namaOCR, $namaOCR, $percent) >= 70) { + // $status = 'Progress'; + // } else { + // $status = 'Progress'; + // } + + DB::beginTransaction(); + + $password = Hash::make($new_password); + + User::create([ + 'nama_depan' => $nama_depan, + 'nama_belakang' => $nama_belakang, + 'tanggal_lahir' => $tanggal_lahir, + 'email' => $email, + 'email_verified_at' => now(), + 'password' => $password, + 'nohp' => $nohp, + 'nik' => $nik, + 'alamat' => $alamat, + 'foto_ktp' => $foto_ktp, + 'foto_wajah' => $foto_wajah, + 'persentase_kemiripan' => $persentase_kemiripan, + 'gender' => $gender, + 'kode_kelurahan' => $kode_kelurahan, + 'remember_token' => Str::random(10), + ]); + + DB::commit(); + + return response()->json([ + 'status' => true, + 'message' => 'Akun anda sudah terdaftar dan butuh verifikasi hingga maksimal 1 hari kerja', + ]); + } catch (\Exception $e) { + DB::rollBack(); + + Log::error($e->getMessage()); + + return response()->json([ + 'status' => false, + 'message' => 'Akun anda gagal terdaftar. Coba lagi!', + ]); + } + } +} diff --git a/app/Http/Controllers/API/LoginApiController.php b/app/Http/Controllers/API/LoginApiController.php deleted file mode 100644 index bdff943..0000000 --- a/app/Http/Controllers/API/LoginApiController.php +++ /dev/null @@ -1,127 +0,0 @@ -middleware('auth:api', ['except' => ['login', 'register', 'hai']]); - } - - /** - * Get a JWT via given credentials. - * - * @return \Illuminate\Http\JsonResponse - */ - public function login() - { - // $request->validate([ - // 'email' => 'required|string|email', - // 'password' => 'required', - // ]); - - $credentials = request(['email', 'password']); - - if (!($token = auth()->attempt($credentials))) { - return response()->json(['error' => 'Unauthorized'], 401); - } - - return $this->respondWithToken($token); - } - - /** - * Get the authenticated User. - * - * @return \Illuminate\Http\JsonResponse - */ - public function me() - { - return response()->json(Auth::user()); - } - - public function hai() - { - return response()->json([ - 'message' => 'Hello from API', - ]); - } - - /** - * Log the user out (Invalidate the token). - * - * @return \Illuminate\Http\JsonResponse - */ - public function logout() - { - auth()->logout(); - - return response()->json(['message' => 'Successfully logged out']); - } - - /** - * Refresh a token. - * - * @return \Illuminate\Http\JsonResponse - */ - public function refresh() - { - return $this->respondWithToken(Auth::refresh()); - } - - /** - * Get the token array structure. - * - * @param string $token - * - * @return \Illuminate\Http\JsonResponse - */ - protected function respondWithToken($token) - { - return response()->json([ - 'user' => auth()->user(), - 'access_token' => $token, - 'token_type' => 'bearer', - 'expires_in' => Auth::factory()->getTTL() * 60, - // 'status' => auth()->check(), - ]); - } - - public function register(Request $request) - { - $request->validate([ - 'name' => 'required|string|max:255', - 'email' => 'required|string|email|unique:users', - 'password' => 'required|string|min:8', - ]); - - $user = User::create([ - 'name' => $request->name, - 'email' => $request->email, - 'password' => Hash::make($request->password), - ]); - - return response()->json([ - 'message' => 'User created successfully', - 'user' => $user, - ]); - } - - // public function check() - // { - // return response()->json([ - // 'status' => auth()->check(), - // ]); - // } -} diff --git a/app/Http/Controllers/API/Pembeli/PembeliApiController.php b/app/Http/Controllers/API/Pembeli/PembeliApiController.php new file mode 100644 index 0000000..bab4e6e --- /dev/null +++ b/app/Http/Controllers/API/Pembeli/PembeliApiController.php @@ -0,0 +1,11 @@ + auth()->user()->email, 'judul' => 'fas fa-long-arrow-alt-right', 'background' => 'bg-primary', - 'deskripsi' => 'Admin telah menolak refund. Transaksi akan diteruskan ke penjual', + 'deskripsi' => 'Admin telah menolak refund. Transaksi akan diteruskan ke penjual. Alasan: '.$request->complaint, ]); DB::commit(); diff --git a/app/Http/Controllers/Admin/AdminSettingController.php b/app/Http/Controllers/Admin/Setting/AdminSettingController.php similarity index 98% rename from app/Http/Controllers/Admin/AdminSettingController.php rename to app/Http/Controllers/Admin/Setting/AdminSettingController.php index 113c6be..d182fdc 100644 --- a/app/Http/Controllers/Admin/AdminSettingController.php +++ b/app/Http/Controllers/Admin/Setting/AdminSettingController.php @@ -1,6 +1,6 @@ auth()->user()->email, 'judul' => 'fa fa-times', 'background' => 'bg-primary', - 'deskripsi' => 'Admin telah menolak pembayaran karena terindikasi penipuan.', + 'deskripsi' => 'Admin telah menolak pembayaran. Alasan: '.$request->compaint, ]); DB::commit(); diff --git a/app/Http/Controllers/Admin/AdminUserController.php b/app/Http/Controllers/Admin/User/AdminUserController.php similarity index 97% rename from app/Http/Controllers/Admin/AdminUserController.php rename to app/Http/Controllers/Admin/User/AdminUserController.php index 142cef9..96ea836 100644 --- a/app/Http/Controllers/Admin/AdminUserController.php +++ b/app/Http/Controllers/Admin/User/AdminUserController.php @@ -1,6 +1,6 @@ id)->update([ - 'status' => 'Rejected' + 'status' => 'Rejected', + 'keterangan' => $request->keterangan ]); DB::commit(); diff --git a/app/Http/Controllers/Login/LoginController.php b/app/Http/Controllers/Login/LoginController.php index 63e2297..6e58734 100644 --- a/app/Http/Controllers/Login/LoginController.php +++ b/app/Http/Controllers/Login/LoginController.php @@ -61,7 +61,7 @@ class LoginController extends Controller return redirect()->intended('user'); } } elseif (Auth::user()->status == 'Rejected') { - Session::flash('message', 'Akun ditolak karena tidak memenuhi persyaratan'); + Session::flash('message', 'Akun ditolak. Alasan: '.Auth::user()->keterangan); return redirect()->back(); } else { Session::flash('message', 'Akun tidak ditemukan atau sedang dalam pengajuan'); @@ -93,7 +93,7 @@ class LoginController extends Controller public function register(Request $request) { - $credentials = $request->validate( + $request->validate( [ 'nama_depan' => ['required'], 'nama_belakang' => ['required'], @@ -281,8 +281,8 @@ class LoginController extends Controller public function accountStatus(Request $request) { - $result = User::where('email', $request->email)->get(); - if ($result->isNotEmpty()) { + $result = User::where('email', $request->email)->first(); + if ($result) { return response()->json([ 'status' => true, 'message' => $result, @@ -290,7 +290,7 @@ class LoginController extends Controller } else { return response()->json([ 'status' => false, - 'message' => $result, + 'message' => 'Akun dengan email '.$request->email.' tidak tersedia', ]); } } @@ -417,12 +417,10 @@ class LoginController extends Controller } public function invoice(){ - // return view('invoice.export-invoice', [ - // 'transaction' => Transaction::findOrFail('80d9b19b-ba17-4aea-8cad-c3b4661d33bc'), - // ]); + // return view('invoice.export-invoice'); - $transaction = Transaction::findOrFail('80d9b19b-ba17-4aea-8cad-c3b4661d33bc'); - $pdf = Pdf::loadView('invoice.export-invoice',compact('transaction'))->setPaper('A4','portrait'); + // $transaction = Transaction::findOrFail('80d9b19b-ba17-4aea-8cad-c3b4661d33bc'); + $pdf = Pdf::loadView('invoice.export-invoice')->setPaper('A4','portrait'); return $pdf->download("invoice-80d9b19b-ba17-4aea-8cad-c3b4661d33b-".uniqid().".pdf"); } } diff --git a/app/Http/Controllers/User/UserContactController.php b/app/Http/Controllers/User/Contact/UserContactController.php similarity index 99% rename from app/Http/Controllers/User/UserContactController.php rename to app/Http/Controllers/User/Contact/UserContactController.php index b6749f1..6ab1866 100644 --- a/app/Http/Controllers/User/UserContactController.php +++ b/app/Http/Controllers/User/Contact/UserContactController.php @@ -1,6 +1,6 @@ $this->faker->randomElement(['Progress', 'Finished', 'Rejected']), 'gender' => $this->faker->randomElement(['Laki-laki', 'Perempuan']), 'kode_kelurahan' => '1101012002', + 'keterangan' => $this->faker->sentence ]; } diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index a4a879a..1591301 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -68,7 +68,8 @@ class DatabaseSeeder extends Seeder 'gender' => $faker->randomElement(['Laki-laki', 'Perempuan']), 'kode_kelurahan' => '1101012002', 'nama_bank' => 'mandiri', - 'no_rek' => '019809210873' + 'no_rek' => '019809210873', + 'keterangan' => $faker->sentence() ]); $user2 = User::factory()->create([ @@ -89,7 +90,8 @@ class DatabaseSeeder extends Seeder 'gender' => $faker->randomElement(['Laki-laki', 'Perempuan']), 'kode_kelurahan' => '1101012002', 'nama_bank' => 'bca', - 'no_rek' => '01980921' + 'no_rek' => '01980921', + 'keterangan' => $faker->sentence() ]); User::factory(100)->create(); diff --git a/resources/views/Admin/refund/detail-refund.blade.php b/resources/views/Admin/refund/detail-refund.blade.php index 748f345..2cc5813 100644 --- a/resources/views/Admin/refund/detail-refund.blade.php +++ b/resources/views/Admin/refund/detail-refund.blade.php @@ -106,12 +106,12 @@ const csrfToken = $('meta[name="csrf-token"]').attr("content"); Swal.fire({ - title: 'Setuju Refund', - text: 'Apakah anda yakin untuk menyetujui refund ini?', + title: 'Terima Refund?', + text: 'Apakah anda yakin untuk menerima refund ini?', icon: 'question', confirmButtonText: 'Ya, setuju', showCancelButton: true, - cancelButtonText: 'Tunggu sebentar.' + cancelButtonText: 'Tunggu, lihat detail dahulu' }).then((result) => { if (result.isConfirmed) { Swal.fire({ @@ -142,9 +142,9 @@ text: response.message, icon: response.status ? 'success' : 'error' }).then(function() { - // if (response.status) { - // location.reload(); - // } + if (response.status) { + location.reload(); + } }); console.log(response); }, @@ -159,7 +159,7 @@ } else { Swal.fire({ title: 'Ditunda', - text: 'Mohon diperiksa dahulu sebelum disetujui', + text: 'Mohon diperiksa dahulu sebelum menerima refund', icon: 'info' }); } @@ -171,60 +171,74 @@ const csrfToken = $('meta[name="csrf-token"]').attr("content"); Swal.fire({ - title: 'Tolak Refund', + title: 'Tolak Refund?', text: 'Apakah anda yakin untuk menolak refund ini?', icon: 'question', confirmButtonText: 'Ya, setuju', showCancelButton: true, - cancelButtonText: 'Tunggu sebentar.' + cancelButtonText: 'Tunggu, lihat detail dahulu' }).then((result) => { if (result.isConfirmed) { Swal.fire({ - html: '

Form Anda sedang diproses!

Mohon tunggu...

', - allowEscapeKey: false, - allowOutsideClick: false, - didOpen: () => { - Swal.showLoading(); - } - }); + title: 'Tolak Refund?', + text: 'Berikan alasan menolak refund ini' + input: 'text', + inputPlaceholder: 'Cth. Bukti foto tidak sesuai', + confirmButtonText: 'Kirim', + showCancelButton: true + cancelButtonText: 'Batal' + }).then((a) => { + if (a.isConfirmed) { + if (a.value) { + $.ajaxSetup({ + headers: { + 'X-CSRF-TOKEN': csrfToken, + } + }); - $.ajaxSetup({ - headers: { - 'X-CSRF-TOKEN': csrfToken, - } - }); - - $.ajax({ - url: "{{ route('admin-refund.deny') }}", - type: 'PUT', - data: { - id: id - }, - success: function(response) { - Swal.fire({ - title: response.status ? 'Berhasil' : - 'Gagal', - text: response.message, - icon: response.status ? 'success' : 'error' - }).then(function() { - if (response.status) { - location.reload(); - } - }); - }, - error: function(error) { - Swal.fire({ - title: 'Gagal', - text: 'Terjadi kesalahan di error', - icon: 'error', - }); + $.ajax({ + url: "{{ route('admin-refund.deny') }}", + type: 'PUT', + data: { + id: id, + complaint: a.value + }, + success: function(response) { + Swal.fire({ + title: response.status ? + 'Berhasil' : + 'Gagal', + text: response.message, + icon: response.status ? + 'success' : 'error' + }).then(function() { + if (response.status) { + location.reload(); + } + }); + }, + error: function(error) { + Swal.fire({ + title: 'Gagal', + text: 'Terjadi kesalahan di error', + icon: 'error', + }); + } + }); + } else { + Swal.fire({ + title: 'Peringatan', + text: 'Masukkan alasan untuk menolak transaksi ini', + icon: 'warning' + }); + } } }); } else { Swal.fire({ - title: 'Ditunda', - text: 'Mohon diperiksa dahulu sebelum ditolak', - icon: 'info' + title: 'Peringatan', + text: 'Mohon diperiksa dahulu sebelum menolak refund', + icon: 'warning' }); } }); diff --git a/resources/views/Admin/transaction/detail-transaction.blade.php b/resources/views/Admin/transaction/detail-transaction.blade.php index 8c73140..97fc1b8 100644 --- a/resources/views/Admin/transaction/detail-transaction.blade.php +++ b/resources/views/Admin/transaction/detail-transaction.blade.php @@ -187,11 +187,11 @@ const csrfToken = $('meta[name="csrf-token"]').attr('content'); Swal.fire({ - title: 'Terima Transaksi', + title: 'Terima Transaksi?', text: 'Apakah anda yakin untuk menerima transaksi ini?', icon: 'question', showCancelButton: true, - cancelButtonText: 'Tunggu, Lihat sebentar', + cancelButtonText: 'Tunggu, lihat detail dahulu', confirmButtonText: 'Ya, terima transaksi ini' }).then((result) => { if (result.isConfirmed) { @@ -237,6 +237,12 @@ console.log(error); } }); + } else { + Swal.fire({ + title: 'Peringatan', + text: 'Periksa dahulu sebelum menerima transaksi', + icon: 'warning' + }); } }); }); @@ -246,55 +252,84 @@ const csrfToken = $('meta[name="csrf-token"]').attr('content'); Swal.fire({ - title: 'Tolak Transaksi', + title: 'Tolak Transaksi?', text: 'Apakah anda yakin untuk menolak transaksi ini?', icon: 'question', showCancelButton: true, - cancelButtonText: 'Tunggu, Lihat sebentar', + cancelButtonText: 'Tunggu, lihat detail dahulu', confirmButtonText: 'Ya, tolak transaksi ini' }).then((result) => { if (result.isConfirmed) { Swal.fire({ - html: '

Form Anda sedang diproses!

Mohon tunggu...

', - allowEscapeKey: false, - allowOutsideClick: false, - didOpen: () => { - Swal.showLoading(); + title: 'Tolak Transaksi?', + text: 'Berikan alasan untuk menolak transaksi ini', + input: 'text', + inputPlaceholder: 'Cth. terindikasi penipuan.', + confirmButtonText: 'Kirim', + showCancelButton: true, + cancelButtonText: 'Batal' + }).then((a) => { + if (a.isConfirmed) { + if (a.value) { + Swal.fire({ + html: '

Form Anda sedang diproses!

Mohon tunggu...

', + allowEscapeKey: false, + allowOutsideClick: false, + didOpen: () => { + Swal.showLoading(); + } + }); + + $.ajaxSetup({ + headers: { + 'X-CSRF-TOKEN': csrfToken + } + }); + + $.ajax({ + url: "{{ route('admin-transaction.deny-transaction') }}", + data: { + id: id, + complaint: a.value + }, + type: 'PUT', + success: function(response) { + Swal.fire({ + title: response.status ? + 'Berhasil' : + 'Gagal', + text: response.message, + icon: response.status ? + 'success' : 'error' + }).then(function() { + if (response.status) { + location.reload(); + } + }); + }, + error: function(error) { + Swal.fire({ + title: 'Gagal', + text: 'Terjadi kesalahan di server', + icon: 'error' + }); + console.log(error); + } + }); + } else { + Swal.fire({ + title: 'Peringatan', + text: 'Masukkan alasan untuk menolak transaksi.', + icon: 'warning' + }); + } } }); - - $.ajaxSetup({ - headers: { - 'X-CSRF-TOKEN': csrfToken - } - }); - - $.ajax({ - url: "{{ route('admin-transaction.deny-transaction') }}", - data: { - id: id - }, - type: 'PUT', - success: function(response) { - Swal.fire({ - title: response.status ? 'Berhasil' : - 'Gagal', - text: response.message, - icon: response.status ? 'success' : 'error' - }).then(function() { - if (response.status) { - location.reload(); - } - }); - }, - error: function(error) { - Swal.fire({ - title: 'Gagal', - text: 'Terjadi kesalahan di server', - icon: 'error' - }); - console.log(error); - } + } else { + Swal.fire({ + title: 'Peringatan', + text: 'Periksa dahulu sebelum menolak transaksi.', + icon: 'warning' }); } }); diff --git a/resources/views/Admin/users/detail-user.blade.php b/resources/views/Admin/users/detail-user.blade.php index 5e129f1..26cbdfc 100644 --- a/resources/views/Admin/users/detail-user.blade.php +++ b/resources/views/Admin/users/detail-user.blade.php @@ -31,6 +31,9 @@

Status : {{ $user->status == 'Finished' ? 'Selesai diverifikasi' : ($user->status == 'Progress' ? 'Sedang diverifikasi' : 'Tolak') }}

+ @if ($user->status == 'Rejected') +

Keterangan : {{ $user->keterangan }}

+ @endif
NIK @@ -178,12 +181,12 @@ let id = $(this).data('id'); const csrfToken = $('meta[name="csrf-token"]').attr('content'); Swal.fire({ - title: 'Status Akun', + title: 'Terima Akun?', text: 'Apakah anda yakin menyetujui akun ini?', icon: 'info', confirmButtonText: 'Ya, setuju!', showCancelButton: true, - cancelButtonText: 'Tidak' + cancelButtonText: 'Tunggu, lihat sebentar' }).then((result) => { if (result.isConfirmed) { Swal.fire({ @@ -229,6 +232,12 @@ }); } }); + } else { + Swal.fire({ + title: 'Peringatan', + text: 'Silahkan periksa dahulu sebelum menerima user', + icon: 'warning' + }); } }); }); @@ -237,54 +246,85 @@ let id = $(this).data('id'); const csrfToken = $('meta[name="csrf-token"]').attr('content'); Swal.fire({ - title: 'Status Akun', + title: 'Tolak Akun?', text: 'Apakah anda yakin menolak akun ini?', icon: 'info', - confirmButtonText: 'Ya, setuju!', + confirmButtonText: 'Ya, tolak!', showCancelButton: true, - cancelButtonText: 'Tidak' + cancelButtonText: 'Tunggu, lihat sebentar' }).then((result) => { if (result.isConfirmed) { Swal.fire({ - html: '

Form Anda sedang diproses!

Mohon tunggu...

', - allowEscapeKey: false, - allowOutsideClick: false, - didOpen: () => { - Swal.showLoading(); + title: 'Tolak Akun?', + text: 'Berikan alasan menolak akun ini?', + icon: 'question', + input: 'text', + inputPlaceholder: 'Cth. Data tidak sesuai.', + confirmButtonText: 'Kirim', + showCancelButton: true, + cancelButtonText: 'Batal' + }).then((a) => { + if (a.isConfirmed) { + if (a.value) { + Swal.fire({ + html: '

Form Anda sedang diproses!

Mohon tunggu...

', + allowEscapeKey: false, + allowOutsideClick: false, + didOpen: () => { + Swal.showLoading(); + } + }); + + $.ajaxSetup({ + headers: { + 'X-CSRF-TOKEN': csrfToken + } + }); + + $.ajax({ + url: "{{ route('admin-user.deny') }}", + data: { + id: id, + keterangan: a.value + }, + type: 'PUT', + success: function(response) { + Swal.fire({ + title: response.status ? + 'Berhasil!' : + 'Gagal!', + text: response.message, + icon: response.status ? + 'success' : 'error', + confirmButtonText: 'OK' + }).then(function() { + location.reload(); + }); + }, + error: function(error) { + Swal.fire({ + title: 'Gagal!', + text: 'Gagal mengubah status akun, karena ' + + error, + icon: 'info' + }); + } + }); + } else { + Swal.fire({ + title: 'Peringatan', + text: 'Masukkan alasan menolak user ini.', + icon: 'warning' + }); + } } }); - $.ajaxSetup({ - headers: { - 'X-CSRF-TOKEN': csrfToken - } - }); - - $.ajax({ - url: "{{ route('admin-user.deny') }}", - data: { - id: id - } - type: 'PUT', - success: function(response) { - Swal.fire({ - title: response.status ? 'Berhasil!' : - 'Gagal!', - text: response.message, - icon: response.status ? 'success' : 'error', - confirmButtonText: 'OK' - }).then(function() { - location.reload(); - }); - }, - error: function(error) { - Swal.fire({ - title: 'Gagal!', - text: 'Gagal mengubah status akun, karena ' + - error, - icon: 'info' - }); - } + } else { + Swal.fire({ + title: 'Peringatan', + text: 'Silahkan periksa dahulu sebelum menolak user', + icon: 'warning' }); } }); diff --git a/resources/views/Admin/users/index.blade.php b/resources/views/Admin/users/index.blade.php index 9357a94..df10532 100644 --- a/resources/views/Admin/users/index.blade.php +++ b/resources/views/Admin/users/index.blade.php @@ -53,7 +53,7 @@ render: function(data, type, row) { var foto = data; return `
- ...
`; }, @@ -108,64 +108,6 @@ className: 'text-center' }], }); - - // Hapus data - $('#table-user').on('click', '#deleteUser', function() { - const csrfToken = $('meta[name="csrf-token"]').attr('content'); - let dataId = $(this).data("id"); - - Swal.fire({ - title: 'Hapus data', - text: 'Apakah yakin ingin menghapus data user ini?', - icon: 'question', - confirmButtonText: 'Ya, hapus!', - showDenyButton: true, - denyButtonText: 'Tidak, jangan hapus!', - }).then((result) => { - if (result.isConfirmed) { - $.ajaxSetup({ - headers: { - 'X-CSRF-TOKEN': csrfToken - } - }); - - $.ajax({ - url: "{{ route('admin-user.destroy') }}" - data: { - id: dataId - }, - type: 'DELETE', - processData: false, - contentType: false, - success: function(response) { - Swal.fire({ - title: response.status ? 'Berhasil!' : - 'Gagal!', - text: response.message, - icon: response.status ? 'success' : 'error', - confirmButtonText: 'OK' - }).then(function() { - location.reload(); - }); - }, - error: function(error) { - Swal.fire({ - title: 'Gagal!', - text: 'Tidak ada data yang dihapus, karena ' + - error, - icon: 'info' - }); - } - }); - } else if (result.isDenied) { - Swal.fire({ - title: 'Gagal!', - text: 'Tidak ada data yang dihapus', - icon: 'info' - }); - } - }); - }); }); @endsection diff --git a/resources/views/User/index.blade.php b/resources/views/User/index.blade.php index a91abb9..b7d7a61 100644 --- a/resources/views/User/index.blade.php +++ b/resources/views/User/index.blade.php @@ -114,56 +114,10 @@

INCOME

- + 1412
- - - {{--
-
-
-

Transaction

-
-
-
- - - - - - - - - - - @foreach ($refundUserss as $HistoryRefundUser) - - - - - - - - - - @endforeach -
Order IDCustomerSellerTotalDue DateStatusImage
- {{ $HistoryRefundUser['orderId'] }} - {{ $HistoryRefundUser['Customer'] }} - {{ $HistoryRefundUser['seller'] }} - {{ $HistoryRefundUser['Total'] }}{{ $HistoryRefundUser['dueDate'] }} -
Diterima
-
- {{ $HistoryRefundUser['uploadBukti'] }} - -
-
-
-
-
--}} - diff --git a/resources/views/User/transaction/Pembeli/index.blade.php b/resources/views/User/transaction/Pembeli/index.blade.php index abe4f1a..d760a94 100644 --- a/resources/views/User/transaction/Pembeli/index.blade.php +++ b/resources/views/User/transaction/Pembeli/index.blade.php @@ -421,7 +421,7 @@ text: 'Apakah anda yakin untuk membatalkan transaksi?', icon: 'question', showCancelButton: true, - cancelButtonText: 'Tidak.', + cancelButtonText: 'Tunggu, lihat detail dahulu.', confirmButtonText: 'Ya, batalkan transaksi.' }).then((result) => { if (result.isConfirmed) { @@ -484,13 +484,16 @@ }); } else { Swal.fire({ - title: 'Gagal', + title: 'Peringatan', text: 'Masukan alasan untuk membatalkan transaksi', - icon: 'error' + icon: 'warning' }); } } }); + } else { + location.href = "{{ route('user-transaction.show', ':id') }}".replace( + ':id', id); } }); }); diff --git a/resources/views/User/transaction/penjual/index.blade.php b/resources/views/User/transaction/penjual/index.blade.php index a90f022..9f2bfe0 100644 --- a/resources/views/User/transaction/penjual/index.blade.php +++ b/resources/views/User/transaction/penjual/index.blade.php @@ -236,44 +236,59 @@ const csrfToken = $('meta[name="csrf-token"]').attr('content'); Swal.fire({ - html: '

Form Anda sedang diproses!

Mohon tunggu...

', - allowEscapeKey: false, - allowOutsideClick: false, - didOpen: () => { - Swal.showLoading(); - } - }); - - $.ajaxSetup({ - headers: { - 'X-CSRF-TOKEN': csrfToken - } - }); - - $.ajax({ - url: "{{ route('user-penjual.accept') }}", - type: 'PUT', - data: { - id: id, - }, - success: function(response) { + title: 'Terima Transaksi?', + text: 'Apakah anda yakin untuk menerima transaksi ini?', + icon: 'question', + showCancelButton: true, + cancelButtonText: "Tunggu, lihat detail dahulu", + confirmButtonText: 'Ya, proses transaksi' + }).then((result) => { + if (result.isConfirmed) { Swal.fire({ - title: response.status ? 'Berhasil' : 'Gagal', - text: response.message, - icon: response.status ? 'success' : 'error', - }).then(function() { - Swal.close(); - if (response.status) { - listPenjual.ajax.reload(); + html: '

Form Anda sedang diproses!

Mohon tunggu...

', + allowEscapeKey: false, + allowOutsideClick: false, + didOpen: () => { + Swal.showLoading(); } }); - }, - error: function(error) { - Swal.fire({ - title: 'Gagal', - text: 'Pemrosesan transaksi gagal', - icon: 'error' + + $.ajaxSetup({ + headers: { + 'X-CSRF-TOKEN': csrfToken + } }); + + $.ajax({ + url: "{{ route('user-penjual.accept') }}", + type: 'PUT', + data: { + id: id, + }, + success: function(response) { + Swal.fire({ + title: response.status ? 'Berhasil' : + 'Gagal', + text: response.message, + icon: response.status ? 'success' : 'error', + }).then(function() { + Swal.close(); + if (response.status) { + listPenjual.ajax.reload(); + } + }); + }, + error: function(error) { + Swal.fire({ + title: 'Gagal', + text: 'Pemrosesan transaksi gagal', + icon: 'error' + }); + } + }); + } else { + location.href = "{{ route('user-transaction.show', ':id') }}".replace(':id', + id); } }); }); @@ -349,15 +364,13 @@ }); } else { Swal.fire({ - title: 'Gagal', + title: 'Peringatan', text: 'Masukan alasan untuk menolak transaksi', - icon: 'error' + icon: 'warning' }); } } }); - - } else { location.href = "{{ route('user-transaction.show', ':id') }}".replace(':id', id); diff --git a/resources/views/index.blade.php b/resources/views/index.blade.php index 549b1d8..a8586e0 100644 --- a/resources/views/index.blade.php +++ b/resources/views/index.blade.php @@ -457,7 +457,7 @@ }, type: 'GET', success: function(response) { - let status = response.message[0].status + let status = response.message.status if (response.status) { Swal.fire({ title: 'Akun ditemukan', @@ -465,7 +465,8 @@ 'Finished' ? ' siap digunakan' : ( status == 'Progress' ? ' masih proses verifikasi' : - ' ditolak')), + ' ditolak. Alasan: ' + response + .message.keterangan)), icon: (status == 'Finished' ? 'success' : ( status == 'Progress' ? 'info' : 'error')), @@ -475,8 +476,7 @@ } else { Swal.fire({ title: 'Gagal', - text: 'Akun dengen email ' + email + - ' tidak tersedia', + text: response.message, icon: 'error', confirmButtonText: 'OK' }); diff --git a/routes/api.php b/routes/api.php index ab5de87..243086e 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1,15 +1,8 @@ group(function(){ - Route::middleware(['admin'])->group(function(){ - Route::prefix('admin')->group(function(){ - // aprove atau deny dan hapus user - Route::controller(AdminUserController::class)->group(function(){ - - }); - - // approve atau deny dan hapus refund - Route::controller(AdminRefundController::class)->group(function(){ - - }); - - Route::controller(AdminSettingController::class)->group(function(){ - - }); - }); - }); Route::prefix('profile')->group(function(){ Route::controller(ProfileController::class)->group(function(){ diff --git a/routes/web.php b/routes/web.php index 73bfd60..32880ca 100644 --- a/routes/web.php +++ b/routes/web.php @@ -3,27 +3,30 @@ use App\Models\Refunds; use App\Models\Transactions; use Illuminate\Support\Facades\Route; + //Admin -use App\Http\Controllers\Login\LoginController; -use App\Http\Controllers\Admin\AdminUserController; -use App\Http\Controllers\User\UserRefundController; +use App\Http\Controllers\Admin\User\AdminUserController; +use App\Http\Controllers\Admin\Setting\AdminSettingController; +use App\Http\Controllers\Admin\Dashboard\AdminDashboardController; +use App\Http\Controllers\Admin\Transaction\AdminTransactionController; +use App\Http\Controllers\Admin\Refund\AdminRefundController; + //Login -use App\Http\Controllers\User\UserContactController; -use App\Http\Controllers\Admin\AdminRefundController; +use App\Http\Controllers\Login\LoginController; + //User -use App\Http\Controllers\Admin\AdminSettingController; -use App\Http\Controllers\User\UserDashboardController; -use App\Http\Controllers\Admin\AdminDashboardController; -use App\Http\Controllers\User\UserTransactionController; -use App\Http\Controllers\Admin\AdminTransactionController; +use App\Http\Controllers\User\Contact\UserContactController; +use App\Http\Controllers\User\Refund\UserRefundController; +use App\Http\Controllers\User\Dashboard\UserDashboardController; +use App\Http\Controllers\User\Transaction\UserTransactionController; +use App\Http\Controllers\User\Pembeli\PembeliController; +use App\Http\Controllers\User\Penjual\PenjualController; //Profile use App\Http\Controllers\Profile\ProfileController; //Invoice use App\Http\Controllers\Invoice\InvoiceController; -use App\Http\Controllers\User\PembeliController; -use App\Http\Controllers\User\PenjualController; // use Illuminate\Foundation\Auth\User; @@ -80,7 +83,7 @@ Route::controller(LoginController::class)->group(function(){ Route::post('kode-verifikasi','sendVerificationCode')->name('kirim-kode'); Route::get('ocr','getOcr'); Route::get('email','email'); - Route::get('test-invoice','invoice'); + Route::get('test','invoice'); }); // admin dan user