diff --git a/app/Http/Controllers/API/Login/LoginApiController.php b/app/Http/Controllers/API/Login/LoginApiController.php index eb88295..4190c88 100644 --- a/app/Http/Controllers/API/Login/LoginApiController.php +++ b/app/Http/Controllers/API/Login/LoginApiController.php @@ -9,6 +9,7 @@ use Tymon\JWTAuth\Facades\JWTFactory; use Illuminate\Support\Facades\Hash; use App\Models\User; use Carbon\Carbon; +use GuzzleHttp\Client; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; @@ -19,6 +20,7 @@ use Laravolt\Indonesia\Models\City; use Laravolt\Indonesia\Models\District; use Laravolt\Indonesia\Models\Province; use Laravolt\Indonesia\Models\Village; +use Pusher\Pusher; use Tymon\JWTAuth\Facades\JWTAuth; @@ -120,26 +122,11 @@ class LoginApiController extends Controller $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(); + $foto_ktp = 'Foto-KTP-'.$email. '.' . $fileKtp->getClientOriginalExtension(); + $foto_wajah = 'Foto-Wajah'.$email.'.' . $fileWajah->getClientOriginalExtension(); $pathKtp = 'foto-ktp/' . $foto_ktp; $pathWajah = 'foto-wajah/' . $foto_wajah; @@ -149,48 +136,59 @@ class LoginApiController extends Controller //OCR try { - // $fotoKTP = public_path('storage/foto-ktp/' . $foto_ktp); + // OCR + $client = new Client(); + $response = $client->request('POST', 'http://localhost:8888/process-image', [ + 'multipart' => [ + [ + 'name' => 'image', + 'contents' => fopen(public_path('storage/foto-ktp/'.$foto_ktp), 'r'), + 'filename' => $foto_ktp, + ], + ], + ]); - // $image = Image::make($fotoKTP); + $result = $response->getBody()->getContents(); - // $image->greyscale(); // Convert to grayscale - // $image->contrast(10); // Increase contrast, adjust the value as needed + $lines = json_decode($result,true); - // $preprocessedfotoKTP = public_path('storage/preprocessed/preprocessed_image.jpg'); - // $image->save($preprocessedfotoKTP); + $namaKTP = str_replace(' ','',strtolower($nama_depan.$nama_belakang)); + $nikKTP = $nik; + $persentaseNama = 0; + $persentaseNik = 0; - // $result = (new TesseractOCR($preprocessedfotoKTP))->run(); + foreach($lines['result'] as $line){ + $teks = str_replace(' ','',strtolower($line)); + $persentaseNamaSementara = 0; + $persentaseNikSementara = 0; + similar_text($teks,$namaKTP,$persentaseNamaSementara); + similar_text($teks,$nikKTP,$persentaseNikSementara); - // (5) Normalize + if($persentaseNamaSementara > 0){ + if($persentaseNamaSementara > $persentaseNama){ + $persentaseNama = $persentaseNamaSementara; + } + } - // $lines = explode("\n", $result); - // $namaOCR = ''; - // $nikOCR = ''; - // $nikInputan = $nik; - // $namaInputan = $nama_depan . ' ' . $nama_belakang; + if($persentaseNikSementara > 0){ + if($persentaseNikSementara > $persentaseNik){ + $persentaseNik = $persentaseNikSementara; + } + } + } - // foreach ($lines as $line) { - // // Mencari NIK - // if (strpos($line, $nikInputan) !== false) { - // $nikOCR = preg_replace('/[^0-9]/', '', $line); - // } + $persentase_kemiripan = ($persentaseNama + $persentaseNik)/2; - // // Mencari nama - // if (strpos($line, $namaInputan) !== false) { - // $namaOCR = trim(substr($line, strpos($line, ':') + 1)); - // } - // } + $status = 'Progress'; - //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'; - // } + if($status >= 50){ + $status = 'Finished'; + }else if($status <= 35){ + return response()->json([ + 'status' => false, + 'message' => 'Sistem tidak dapat mendeteksi foto KTP. Kemungkinan foto tidak jelas atau buram, silahkan upload foto KTP yang jelas. Persentase kemiripan inputan : '.$persentase_kemiripan.'%' + ]); + } DB::beginTransaction(); @@ -212,14 +210,35 @@ class LoginApiController extends Controller 'gender' => $gender, 'kode_kelurahan' => $kode_kelurahan, 'remember_token' => Str::random(10), + 'status' => $status ]); DB::commit(); - return response()->json([ - 'status' => true, - 'message' => 'Akun anda sudah terdaftar dan butuh verifikasi hingga maksimal 1 hari kerja', - ]); + $options = [ + 'cluster' => 'ap1', + 'useTLS' => true, + ]; + + $pusher = new Pusher('3e5bdc20dddd7fbc655e', 'f2274c37c616d29ff590', '1659859', $options); + + $payload = [ + 'service' => 'User', + ]; + + $pusher->trigger('chanel-update-notifikasi-untuk-admin', 'event-update-notifikasi-untuk-admin', $payload); + + if($status == 'Finished'){ + return response()->json([ + 'status' => true, + 'message' => 'Akun anda sudah terdaftar dan dapat digunakan', + ]); + }else{ + return response()->json([ + 'status' => true, + 'message' => 'Akun anda sudah terdaftar dan butuh verifikasi hingga maksimal 1 hari kerja', + ]); + } } catch (\Exception $e) { DB::rollBack(); diff --git a/app/Http/Controllers/Login/LoginController.php b/app/Http/Controllers/Login/LoginController.php index 974bdc8..5b96fb6 100644 --- a/app/Http/Controllers/Login/LoginController.php +++ b/app/Http/Controllers/Login/LoginController.php @@ -182,8 +182,6 @@ class LoginController extends Controller $ktpBase64 = $request->request->get('ktp'); $wajahBase64 = $request->request->get('wajah'); - // $validatedData['email_verified_at'] = now(); - if ($ktpBase64 && $wajahBase64) { // Konversi string Base64 ke file gambar $ktpFile = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $ktpBase64)); diff --git a/app/Http/Controllers/User/Pembeli/PembeliController.php b/app/Http/Controllers/User/Pembeli/PembeliController.php index f326e3b..df87924 100644 --- a/app/Http/Controllers/User/Pembeli/PembeliController.php +++ b/app/Http/Controllers/User/Pembeli/PembeliController.php @@ -151,7 +151,7 @@ class PembeliController extends Controller 'name' => $nama_barang, ], [ - 'id' => 'BA01', + 'id' => 'BA'.random_int(1,9), 'price' => $total_keuntungan, 'quantity' => 1, 'name' => 'Biaya Admin', @@ -894,7 +894,7 @@ class PembeliController extends Controller '; } - if($row->status_transaksi == 'sent'){ + // if($row->status_transaksi == 'sent'){ $html_code .= '
  • Selesaikan
  • '; - } + // } $html_code .= ' diff --git a/public/assets/img/modal-end/refund.png b/public/assets/img/modal-end/refund.png index 7afff2e..d589bb1 100644 Binary files a/public/assets/img/modal-end/refund.png and b/public/assets/img/modal-end/refund.png differ diff --git a/resources/views/User/transaction/Pembeli/index.blade.php b/resources/views/User/transaction/Pembeli/index.blade.php index 8caea6d..e8b9dba 100644 --- a/resources/views/User/transaction/Pembeli/index.blade.php +++ b/resources/views/User/transaction/Pembeli/index.blade.php @@ -59,11 +59,11 @@ @include('user.transaction.pembeli.modal-end-transaction') @include('user.transaction.pembeli.modal-tracking') @include('user.transaction.pembeli.modal-keterangan-status') + @endsection @section('tambahan-js') -