Memperbaiki api

This commit is contained in:
Muhammad Raihan Surya 2023-12-15 15:16:57 +07:00
parent 181f1cc236
commit 2ec7008f61
6 changed files with 90 additions and 74 deletions

View File

@ -9,6 +9,7 @@ use Tymon\JWTAuth\Facades\JWTFactory;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use App\Models\User; use App\Models\User;
use Carbon\Carbon; use Carbon\Carbon;
use GuzzleHttp\Client;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
@ -19,6 +20,7 @@ use Laravolt\Indonesia\Models\City;
use Laravolt\Indonesia\Models\District; use Laravolt\Indonesia\Models\District;
use Laravolt\Indonesia\Models\Province; use Laravolt\Indonesia\Models\Province;
use Laravolt\Indonesia\Models\Village; use Laravolt\Indonesia\Models\Village;
use Pusher\Pusher;
use Tymon\JWTAuth\Facades\JWTAuth; use Tymon\JWTAuth\Facades\JWTAuth;
@ -120,26 +122,11 @@ class LoginApiController extends Controller
$gender = $request->input('gender'); $gender = $request->input('gender');
$kode_kelurahan = $request->input('village_code'); $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')) { if ($request->hasFile('ktp') && $request->hasFile('wajah')) {
$fileKtp = $request->file('ktp'); $fileKtp = $request->file('ktp');
$fileWajah = $request->file('wajah'); $fileWajah = $request->file('wajah');
$foto_ktp = $nama_depan.'-'.$nama_belakang. '.' . $fileKtp->getClientOriginalExtension(); $foto_ktp = 'Foto-KTP-'.$email. '.' . $fileKtp->getClientOriginalExtension();
$foto_wajah = $nama_depan.'-'.$nama_belakang. '.' . $fileWajah->getClientOriginalExtension(); $foto_wajah = 'Foto-Wajah'.$email.'.' . $fileWajah->getClientOriginalExtension();
$pathKtp = 'foto-ktp/' . $foto_ktp; $pathKtp = 'foto-ktp/' . $foto_ktp;
$pathWajah = 'foto-wajah/' . $foto_wajah; $pathWajah = 'foto-wajah/' . $foto_wajah;
@ -149,48 +136,59 @@ class LoginApiController extends Controller
//OCR //OCR
try { 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 $lines = json_decode($result,true);
// $image->contrast(10); // Increase contrast, adjust the value as needed
// $preprocessedfotoKTP = public_path('storage/preprocessed/preprocessed_image.jpg'); $namaKTP = str_replace(' ','',strtolower($nama_depan.$nama_belakang));
// $image->save($preprocessedfotoKTP); $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); if($persentaseNikSementara > 0){
// $namaOCR = ''; if($persentaseNikSementara > $persentaseNik){
// $nikOCR = ''; $persentaseNik = $persentaseNikSementara;
// $nikInputan = $nik; }
// $namaInputan = $nama_depan . ' ' . $nama_belakang; }
}
// foreach ($lines as $line) { $persentase_kemiripan = ($persentaseNama + $persentaseNik)/2;
// // Mencari NIK
// if (strpos($line, $nikInputan) !== false) {
// $nikOCR = preg_replace('/[^0-9]/', '', $line);
// }
// // Mencari nama $status = 'Progress';
// if (strpos($line, $namaInputan) !== false) {
// $namaOCR = trim(substr($line, strpos($line, ':') + 1));
// }
// }
//Selesai if($status >= 50){
$status = 'Finished';
// $persentase_kemiripan = (similar_text($nikInputan, $nikOCR, $percent) + similar_text($namaOCR, $namaOCR, $percent)) / 2; }else if($status <= 35){
// $status = 'Progress'; return response()->json([
'status' => false,
// if (similar_text($nikInputan, $nikOCR, $percent) >= 70 && similar_text($namaOCR, $namaOCR, $percent) >= 70) { 'message' => 'Sistem tidak dapat mendeteksi foto KTP. Kemungkinan foto tidak jelas atau buram, silahkan upload foto KTP yang jelas. Persentase kemiripan inputan : '.$persentase_kemiripan.'%'
// $status = 'Progress'; ]);
// } else { }
// $status = 'Progress';
// }
DB::beginTransaction(); DB::beginTransaction();
@ -212,14 +210,35 @@ class LoginApiController extends Controller
'gender' => $gender, 'gender' => $gender,
'kode_kelurahan' => $kode_kelurahan, 'kode_kelurahan' => $kode_kelurahan,
'remember_token' => Str::random(10), 'remember_token' => Str::random(10),
'status' => $status
]); ]);
DB::commit(); DB::commit();
$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([ return response()->json([
'status' => true, 'status' => true,
'message' => 'Akun anda sudah terdaftar dan butuh verifikasi hingga maksimal 1 hari kerja', 'message' => 'Akun anda sudah terdaftar dan butuh verifikasi hingga maksimal 1 hari kerja',
]); ]);
}
} catch (\Exception $e) { } catch (\Exception $e) {
DB::rollBack(); DB::rollBack();

View File

@ -182,8 +182,6 @@ class LoginController extends Controller
$ktpBase64 = $request->request->get('ktp'); $ktpBase64 = $request->request->get('ktp');
$wajahBase64 = $request->request->get('wajah'); $wajahBase64 = $request->request->get('wajah');
// $validatedData['email_verified_at'] = now();
if ($ktpBase64 && $wajahBase64) { if ($ktpBase64 && $wajahBase64) {
// Konversi string Base64 ke file gambar // Konversi string Base64 ke file gambar
$ktpFile = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $ktpBase64)); $ktpFile = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $ktpBase64));

View File

@ -151,7 +151,7 @@ class PembeliController extends Controller
'name' => $nama_barang, 'name' => $nama_barang,
], ],
[ [
'id' => 'BA01', 'id' => 'BA'.random_int(1,9),
'price' => $total_keuntungan, 'price' => $total_keuntungan,
'quantity' => 1, 'quantity' => 1,
'name' => 'Biaya Admin', 'name' => 'Biaya Admin',
@ -894,7 +894,7 @@ class PembeliController extends Controller
'; ';
} }
if($row->status_transaksi == 'sent'){ // if($row->status_transaksi == 'sent'){
$html_code .= ' $html_code .= '
<li><a class="dropdown-item" data-toggle="modal" <li><a class="dropdown-item" data-toggle="modal"
data-target="#modalFinish" data-target="#modalFinish"
@ -902,7 +902,7 @@ class PembeliController extends Controller
href="#">Selesaikan</a> href="#">Selesaikan</a>
</li> </li>
'; ';
} // }
$html_code .= ' $html_code .= '
</ul> </ul>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

After

Width:  |  Height:  |  Size: 194 KiB

View File

@ -59,11 +59,11 @@
@include('user.transaction.pembeli.modal-end-transaction') @include('user.transaction.pembeli.modal-end-transaction')
@include('user.transaction.pembeli.modal-tracking') @include('user.transaction.pembeli.modal-tracking')
@include('user.transaction.pembeli.modal-keterangan-status') @include('user.transaction.pembeli.modal-keterangan-status')
<script type="text/javascript" src="https://app.sandbox.midtrans.com/snap/snap.js"
data-client-key="SB-Mid-client-lEMALcmIPviksRRe"></script>
@endsection @endsection
@section('tambahan-js') @section('tambahan-js')
<script type="text/javascript" src="https://app.sandbox.midtrans.com/snap/snap.js"
data-client-key="SB-Mid-client-lEMALcmIPviksRRe"></script>
<script> <script>
$(document).ready(function() { $(document).ready(function() {
let listPembeli = $('#table-pembeli').DataTable({ let listPembeli = $('#table-pembeli').DataTable({

View File

@ -20,18 +20,15 @@
refund. Harap diminta kesadaran penuh anda sebelum memilih selesaikan transaksi atau refund. Harap diminta kesadaran penuh anda sebelum memilih selesaikan transaksi atau
ajukan ajukan
komplain.</p> komplain.</p>
</div>
</div> <div class="container">
</div> <div class="row justify-content-center d-flex">
<div class="row m-4"> <div class="col-6">
<div class="col-12"> <img src="{{ asset('assets/img/modal-end/approve.png') }}" class="img-fluid"
<div class="activities">
<div class="col-6 d-flex justify-content-center">
<img src="{{ asset('assets/img/modal-end/approve.png') }}" style="width:100%;"
alt="approve"> alt="approve">
</div> </div>
<div class="col-6 d-flex justify-content-center"> <div class="col-6">
<img src="{{ asset('assets/img/modal-end/refund.png') }}" style="width:100%;" <img src="{{ asset('assets/img/modal-end/refund.png') }}" class="img-fluid"
alt="refund"> alt="refund">
</div> </div>
</div> </div>
@ -39,6 +36,8 @@
</div> </div>
</div> </div>
</div> </div>
</div>
</div>
<div class="modal-footer d-flex justify-content-center"> <div class="modal-footer d-flex justify-content-center">
</div> </div>