diff --git a/app/Http/Controllers/API/Contact/ContactApiController.php b/app/Http/Controllers/API/Contact/ContactApiController.php index 4f39678..0d35cce 100644 --- a/app/Http/Controllers/API/Contact/ContactApiController.php +++ b/app/Http/Controllers/API/Contact/ContactApiController.php @@ -10,22 +10,31 @@ use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Auth; +use Tymon\JWTAuth\Facades\JWTAuth; +use Yajra\DataTables\Facades\DataTables; class ContactApiController extends Controller { - public function getContact() + public function getListContact(Request $request) { + // $token = JWTAuth::getToken(); + // $user = JWTAuth::user($token); + $data = DB::table('contacts') ->join('users', 'contacts.relasi_kontak', '=', 'users.email') - ->select('contacts.relasi_kontak', 'users.nama_depan', 'users.nama_belakang') - ->where('contacts.pemilik_kontak', '=', Auth::user()->email) + ->select('contacts.relasi_kontak', DB::raw("CONCAT(users.nama_depan, ' ', users.nama_belakang) as nama_lengkap") ) + ->where('contacts.pemilik_kontak', '=', auth()->user()->email) + ->whereRaw("LOWER(CONCAT(users.nama_depan, ' ', users.nama_belakang)) LIKE ?", ['%' . strtolower($request->input('search')) . '%']) ->paginate(10); - return response()->json($data); + + return response()->json([ + 'data' => $data + ]); } - public function store(Request $request) + public function storeContact(Request $request) { - $email_relasi = $request->email; + $email_relasi = $request->input('email'); if ($email_relasi == Auth::user()->email) { return response()->json([ 'status' => false, @@ -33,7 +42,7 @@ class ContactApiController extends Controller ]); } - try{ + try { DB::beginTransaction(); Contact::create([ @@ -45,10 +54,9 @@ class ContactApiController extends Controller return response()->json([ 'status' => true, - 'message' => 'Kontak berhasil ditambahkan.' + 'message' => 'Kontak berhasil ditambahkan.', ]); - - }catch(Throwable $e){ + } catch (Throwable $e) { DB::rollBack(); Log::error($e->getMessage()); @@ -60,12 +68,12 @@ class ContactApiController extends Controller } } - public function destroy(Request $request) + public function deleteContact(Request $request) { try { DB::beginTransaction(); - Contact::destroy($request->id); + Contact::destroy($request->input('id')); DB::commit(); @@ -73,7 +81,6 @@ class ContactApiController extends Controller 'message' => 'Berhasil hapus data', 'status' => true, ]); - } catch (Throwable $e) { DB::rollBack(); @@ -86,9 +93,9 @@ class ContactApiController extends Controller } } - public function cekEmail(Request $request) + public function checkContact(Request $request) { - $result = User::where('email', $request->email) + $result = User::where('email', $request->input('email')) ->where('role', 'User') ->first(); if ($result) { @@ -100,37 +107,76 @@ class ContactApiController extends Controller } else { return response()->json([ 'status' => false, - 'message' => 'Akun dengen email ' . $request->email . ' tersedia dan belum diverifikasi', + 'message' => 'Akun dengen email ' . $request->input('email') . ' tersedia dan belum diverifikasi', ]); } } else { return response()->json([ 'status' => false, - 'message' => 'Akun dengen email ' . $request->email . ' tidak tersedia atau ditolak', + 'message' => 'Akun dengen email ' . $request->input('email') . ' tidak tersedia atau ditolak', ]); } } - public function detailContact(Request $request){ - $data = 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('contacts.id',$request->id) - ->select( - DB::raw("CONCAT(users.nama_depan,' ',users.nama_belakang) as nama_lengkap"), - 'users.alamat', - 'users.email', - 'users.nohp', - 'indonesia_villages.name as kelurahan', - 'indonesia_districts.name as kecamatan', - 'indonesia_cities.name as kota', - 'indonesia_provinces.name as provinsi' - ) - ->first(); + public function detailContact(Request $request) + { + $data = 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('contacts.id', $request->input('id')) + ->select(DB::raw("CONCAT(users.nama_depan,' ',users.nama_belakang) as nama_lengkap"), 'users.alamat', 'users.email', 'users.nohp', 'indonesia_villages.name as kelurahan', 'indonesia_districts.name as kecamatan', 'indonesia_cities.name as kota', 'indonesia_provinces.name as provinsi') + ->first(); return response()->json([ - 'data' => $data + 'data' => $data, ]); } + + public function listContact(Request $request) + { + try { + $subQuery = Contact::join('users', 'contacts.relasi_kontak', '=', 'users.email') + ->where('pemilik_kontak', Auth::user()->email) + ->select('contacts.id', DB::raw("CONCAT(users.nama_depan, ' ', users.nama_belakang) as nama_lengkap")); + + if ($request->has('search') && !empty($request->search['value'])) { + $searchContact = $request->search['value']; + $subQuery->where(function ($a) use ($searchContact) { + $a->whereRaw("LOWER(CONCAT(users.nama_depan,' ',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) { + $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/API/Invoice/InvoiceApiController.php b/app/Http/Controllers/API/Invoice/InvoiceApiController.php new file mode 100644 index 0000000..86f174a --- /dev/null +++ b/app/Http/Controllers/API/Invoice/InvoiceApiController.php @@ -0,0 +1,27 @@ +json([ + 'transaction' => Transaction::findOrFail($id), + ]); + } + + public function exportInvoice($id) + { + // $transaction = Transaction::findOrFail($request->id); + // $pdf = Pdf::loadView('invoice.export-invoice',compact('transaction'))->setPaper('A4','Portrait'); + // return $pdf->download("invoice-$request->id.pdf"); + return response()->json([ + 'transaction' => Transaction::findOrFail($id), + ]); + } +} diff --git a/app/Http/Controllers/API/Login/LoginApiController.php b/app/Http/Controllers/API/Login/LoginApiController.php index f11d0ab..deade7e 100644 --- a/app/Http/Controllers/API/Login/LoginApiController.php +++ b/app/Http/Controllers/API/Login/LoginApiController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\API\Login; use App\Http\Controllers\Controller; +use App\Mail\verificationMail; use Illuminate\Http\Request; use Tymon\JWTAuth\Facades\JWTFactory; use Illuminate\Support\Facades\Hash; @@ -11,8 +12,13 @@ use Carbon\Carbon; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; +use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Str; +use Laravolt\Indonesia\Models\City; +use Laravolt\Indonesia\Models\District; +use Laravolt\Indonesia\Models\Province; +use Laravolt\Indonesia\Models\Village; use Tymon\JWTAuth\Facades\JWTAuth; class LoginApiController extends Controller @@ -22,42 +28,14 @@ class LoginApiController extends Controller * * @return void */ - public function __construct() - { - $this->middleware('auth:api', ['except' => ['login', 'register', 'hai']]); - } /** * Get a JWT via given credentials. * * @return \Illuminate\Http\JsonResponse */ - public function login(Request $request) + public function login() { - // $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))) { @@ -82,7 +60,7 @@ class LoginApiController extends Controller { return response()->json([ 'message' => 'Hello from API', - 'data' => $request->input('data'), + 'data' => $request->all(), ]); } @@ -251,4 +229,60 @@ class LoginApiController extends Controller ]); } } + + public function verificationCode(Request $request){ + $email = $request->input('email'); + $code = $request->input('code'); + + $verificationEmail = [ + 'code' => $code, + 'email' => $email, + ]; + try { + Mail::to($email)->send(new verificationMail($verificationEmail)); + return response()->json([ + 'message' => 'Kode verifikasi berhasil dikirim ke email. Silahkan cek di email anda.', + 'status' => true, + ]); + } catch (\Exception $e) { + return response()->json([ + 'message' => 'Kode verifikasi gagal dikirim ke email. ' . $e, + 'status' => false, + ]); + } + } + + public function searchProvince() + { + $data = Province::where('name', 'LIKE', '%' . strtoupper(request('q')) . '%')->paginate(10); + + return response()->json($data); + } + + public function searchCity(Request $request) + { + $data = City::where('province_code', $request->input('code')) + ->where('name', 'LIKE', '%' . strtoupper(request('q')) . '%') + ->paginate(10); + + return response()->json($data); + } + + public function searchDistrict(Request $request) + { + $data = District::where('city_code', $request->input('code')) + ->where('name', 'LIKE', '%' . strtoupper(request('q')) . '%') + ->paginate(10); + + return response()->json($data); + } + + public function searchVillage(Request $request) + { + $data = Village::where('district_code', $request->input('code')) + ->where('name', 'LIKE', '%' . strtoupper(request('q')) . '%') + ->paginate(10); + + return response()->json($data); + } } diff --git a/app/Http/Controllers/API/Pembeli/PembeliApiController.php b/app/Http/Controllers/API/Pembeli/PembeliApiController.php index 4c447ca..86ef230 100644 --- a/app/Http/Controllers/API/Pembeli/PembeliApiController.php +++ b/app/Http/Controllers/API/Pembeli/PembeliApiController.php @@ -16,10 +16,11 @@ use Illuminate\Support\Facades\Log; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Http; use App\Models\TransactionDescription; +use Yajra\DataTables\Facades\DataTables; class PembeliApiController extends Controller { - public function create() + public function createTransaction() { $now = Carbon::now(); $bulan = $now->format('F'); @@ -33,20 +34,21 @@ class PembeliApiController extends Controller ->latest() ->value('persentase'); } - return view('user.transaction.pembeli.new-transaction', [ - 'persentase_keuntungan' => $persentase_keuntungan, + + return response()->json([ + 'persentase_keuntungan' => $persentase_keuntungan ]); } - public function store(Request $request) + public function storeTransaction(Request $request) { $pembeli = auth()->user()->email; - $penjual = $request->email_penjual; - $nama_barang = $request->nama_barang; - $satuan_barang = $request->satuan_barang; - $deskripsi_transaksi = $request->deskripsi; - $harga_barang = $request->harga_barang; - $jumlah_barang = $request->jumlah_barang; + $penjual = $request->input('email_penjual'); + $nama_barang = $request->input('nama_barang'); + $satuan_barang = $request->input('satuan_barang'); + $deskripsi_transaksi = $request->input('deskripsi'); + $harga_barang = $request->input('harga_barang'); + $jumlah_barang = $request->input('jumlah_barang'); $nama_depan_pembeli = auth()->user()->nama_depan; $nama_belakang_pembeli = auth()->user()->nama_belakang; @@ -66,11 +68,11 @@ class PembeliApiController extends Controller $now = Carbon::now(); - $persentase_keuntungan = $request->persentase_keuntungan; + $persentase_keuntungan = $request->input('persentase_keuntungan'); - $total_harga = $request->total_harga; - $total_keuntungan = $request->total_keuntungan; - $total_bayar = $request->total_bayar; + $total_harga = $request->input('total_harga'); + $total_keuntungan = $request->input('total_keuntungan'); + $total_bayar = $request->input('total_bayar'); $batas_pembayaran = $now->addDays(1)->toTimeString(); $batas_konfirmasi_transaksi = $now->addDays(2)->toDateTimeString(); @@ -143,26 +145,26 @@ class PembeliApiController extends Controller 'enabled_payments' => ['credit_card', 'shopeepay', 'gopay', 'other_qris'], ]; - // $client = new Client([ - // 'verify' => false, - // ]); + $client = new Client([ + 'verify' => false, + ]); - // $auth = base64_encode(env('MIDTRANS_SERVER_KEY')); + $auth = base64_encode(env('MIDTRANS_SERVER_KEY')); - // $response = $client->request('POST', 'https://app.sandbox.midtrans.com/snap/v1/transactions', [ - // 'body' => json_encode($params), - // 'headers' => [ - // 'accept' => 'application/json', - // 'authorization' => 'Basic ' . $auth, - // 'content-type' => 'application/json', - // ], - // ]); + $response = $client->request('POST', 'https://app.sandbox.midtrans.com/snap/v1/transactions', [ + 'body' => json_encode($params), + 'headers' => [ + 'accept' => 'application/json', + 'authorization' => 'Basic ' . $auth, + 'content-type' => 'application/json', + ], + ]); - // $result = json_decode($response->getBody(), true); + $result = json_decode($response->getBody(), true); - // Transaction::where('id', $query->id)->update([ - // 'token' => $result['token'], - // ]); + Transaction::where('id', $query->id)->update([ + 'token' => $result['token'], + ]); $contact = Contact::where('pemilik_kontak', $pembeli) ->where('relasi_kontak', $penjual) @@ -207,13 +209,13 @@ class PembeliApiController extends Controller try { DB::beginTransaction(); - Transaction::where('id', $request->id)->update([ + Transaction::where('id', $request->input('id'))->update([ 'status_transaksi' => 'finished', 'status_pembayaran' => 'settlement', ]); TransactionDescription::create([ - 'transaction_id' => $request->id, + 'transaction_id' => $request->input('id'), 'status' => 'finished', 'background' => 'bg-buyer', 'user' => auth()->user()->email, @@ -239,7 +241,7 @@ class PembeliApiController extends Controller } } - public function payTransaction(Request $request) + public function payPayment(Request $request) { $auth = base64_encode(env('MIDTRANS_SERVER_KEY')); @@ -250,7 +252,7 @@ class PembeliApiController extends Controller 'Content-Type' => 'application/json', 'Authorization' => "Basic $auth", ]) - ->get('https://api.sandbox.midtrans.com/v2/' . $request->id . '/status'); + ->get('https://api.sandbox.midtrans.com/v2/' . $request->input('id') . '/status'); $result = json_decode($response->body(), true); @@ -263,8 +265,8 @@ class PembeliApiController extends Controller return response()->json([ 'status' => false, 'message' => 'Terjadi error di server.', - 'data' => $result, ]); + Log::error($result); } else { if ($result['transaction_status'] == 'settlement') { $transaction = 'success'; @@ -278,7 +280,7 @@ class PembeliApiController extends Controller $transaction = 'failure'; } - Transaction::where('id', $request->id)->update([ + Transaction::where('id', $request->input('id'))->update([ 'metode_pembayaran' => $result['payment_type'], 'tanggal_transaksi' => $result['transaction_time'], 'status_transaksi' => $transaction, @@ -289,7 +291,7 @@ class PembeliApiController extends Controller if ($transaction == 'success') { TransactionDescription::create([ - 'transaction_id' => $request->id, + 'transaction_id' => $request->input('id'), 'status' => 'success', 'background' => 'bg-buyer', 'judul' => 'fas fa-money-bill', @@ -305,7 +307,7 @@ class PembeliApiController extends Controller ]); } elseif ($transaction == 'challenge') { TransactionDescription::create([ - 'transaction_id' => $request->id, + 'transaction_id' => $request->input('id'), 'status' => 'challenge', 'background' => 'bg-primary', 'judul' => 'fas fa-clock', @@ -322,7 +324,7 @@ class PembeliApiController extends Controller ]); } else { TransactionDescription::create([ - 'transaction_id' => $request->id, + 'transaction_id' => $request->input('id'), 'status' => 'failure', 'background' => 'bg-primary', 'judul' => 'fas fa-exclamation', @@ -364,7 +366,7 @@ class PembeliApiController extends Controller 'Content-Type' => 'application/json', 'Authorization' => "Basic $auth", ]) - ->post('https://api.sandbox.midtrans.com/v2/' . $request->id . '/cancel'); + ->post('https://api.sandbox.midtrans.com/v2/' . $request->input('id') . '/cancel'); $result = json_decode($response->body(), true); @@ -372,19 +374,19 @@ class PembeliApiController extends Controller return response()->json([ 'status' => false, 'message' => 'Transaksi gagal.', - 'data' => $result ]); + Log::error($result); } else { try { DB::beginTransaction(); - Transaction::where('id', $request->id)->update([ + Transaction::where('id', $request->input('id'))->update([ 'status_transaksi' => 'failure', 'status_pembayaran' => 'cancel' ]); TransactionDescription::create([ - 'transaction_id' => $request->id, + 'transaction_id' => $request->input('id'), 'status' => 'cancel', 'background' => 'bg-buyer', 'judul' => 'fas fa-exclamation', @@ -412,12 +414,12 @@ class PembeliApiController extends Controller } public function cancelTransaction(Request $request){ - $transaction = Transaction::where('id', $request->id)->first(); + $transaction = Transaction::where('id', $request->input('id'))->first(); $params = [ - 'refund_key' => $request->id . '-ref1', + 'refund_key' => $request->input('id') . '-ref1', 'amount' => $transaction->total_bayar, - 'reason' => $request->complaint, + 'reason' => $request->input('complaint'), ]; $auth = base64_encode(env('MIDTRANS_SERVER_KEY')); @@ -429,7 +431,7 @@ class PembeliApiController extends Controller 'Content-Type' => 'application/json', 'Authorization' => "Basic $auth", ]) - ->post('https://api.sandbox.midtrans.com/v2/' . $request->id . '/refund', $params); + ->post('https://api.sandbox.midtrans.com/v2/' . $request->input('id') . '/refund', $params); $result = json_decode($response->body(), true); $code = $result['status_code']; @@ -439,26 +441,26 @@ class PembeliApiController extends Controller try { DB::beginTransaction(); - Transaction::where('id', $request->id)->update([ + Transaction::where('id', $request->input('id'))->update([ 'status_transaksi' => 'failure', 'status_pembayaran' => 'refund', ]); Refund::create([ - 'transaction_id' => $request->id, + 'transaction_id' => $request->input('id'), 'total' => $transaction->total_bayar, 'due_date' => now(), 'status' => 'refund', - 'complaint' => $request->complaint, + 'complaint' => $request->input('complaint'), ]); TransactionDescription::create([ - 'transaction_id' => $request->id, + 'transaction_id' => $request->input('id'), 'status' => 'refund', 'background' => 'bg-seller', 'user' => auth()->user()->email, 'judul' => 'fas fa-times', - 'deskripsi' => 'Transaksi dibatalkan oleh ' . auth()->user()->nama_depan . '. Alasan : ' . $request->complaint, + 'deskripsi' => 'Transaksi dibatalkan oleh ' . auth()->user()->nama_depan . '. Alasan : ' . $request->input('complaint'), ]); DB::commit(); @@ -487,7 +489,7 @@ class PembeliApiController extends Controller } } - public function pendingTransaction(Request $request) + public function pendingPayment(Request $request) { $auth = base64_encode(env('MIDTRANS_SERVER_KEY')); @@ -498,14 +500,14 @@ class PembeliApiController extends Controller 'Content-Type' => 'application/json', 'Authorization' => "Basic $auth", ]) - ->get('https://api.sandbox.midtrans.com/v2/' . $request->id . '/status'); + ->get('https://api.sandbox.midtrans.com/v2/' . $request->input('id') . '/status'); $result = json_decode($response->body(), true); try { DB::beginTransaction(); - Transaction::where('id', $request->id)->update([ + Transaction::where('id', $request->input('id'))->update([ 'status_pembayaran' => $result['transaction_status'], ]); @@ -513,7 +515,7 @@ class PembeliApiController extends Controller return response()->json([ 'status' => true, - 'message' => 'Pembayaran di-pending, silahkan masuk lagi dan bayar secepat mungkin.', + 'message' => 'Pembayaran di-pending, silahkan lalukan pembayaran lagi.', ]); } catch (Throwable $e) { DB::rollBack(); @@ -529,10 +531,12 @@ class PembeliApiController extends Controller public function complaintTransaction($id) { - return view('user.refund.new-refund', compact('id')); + return response()->json([ + 'id' => $id + ]); } - public function onErrorTransaction(Request $request) + public function errorPayment(Request $request) { $auth = base64_encode(env('MIDTRANS_SERVER_KEY')); @@ -543,20 +547,20 @@ class PembeliApiController extends Controller 'Content-Type' => 'application/json', 'Authorization' => "Basic $auth", ]) - ->get('https://api.sandbox.midtrans.com/v2/' . $request->id . '/status'); + ->get('https://api.sandbox.midtrans.com/v2/' . $request->input('id') . '/status'); $result = json_decode($response->body(), true); try { DB::beginTransaction(); - Transaction::where('id', $request->id)->update([ + Transaction::where('id', $request->input('id'))->update([ 'status_pembayaran' => $result['transaction_status'], ]); if ($result['transaction_status'] == 'expire') { TransactionDescription::create([ - 'transaction_id' => $request->id, + 'transaction_id' => $request->input('id'), 'status' => 'cancel', 'background' => 'bg-buyer', 'judul' => 'fas fa-exclamation', @@ -572,7 +576,7 @@ class PembeliApiController extends Controller ]); } elseif ($result['transaction'] == 'failure') { TransactionDescription::create([ - 'transaction_id' => $request->id, + 'transaction_id' => $request->input('id'), 'status' => 'failure', 'background' => 'bg-buyer', 'judul' => 'fas fa-exclamation', @@ -589,7 +593,7 @@ class PembeliApiController extends Controller ]); } else { TransactionDescription::create([ - 'transaction_id' => $request->id, + 'transaction_id' => $request->input('id'), 'status' => $result['transaction_status'], 'background' => 'bg-primary', 'judul' => 'fas fa-exclamation', @@ -618,7 +622,7 @@ class PembeliApiController extends Controller } } - public function onCloseTransaction(Request $request) + public function closePayment(Request $request) { $auth = base64_encode(env('MIDTRANS_SERVER_KEY')); @@ -722,6 +726,112 @@ class PembeliApiController extends Controller } } - - + public function listPembeli(Request $request) + { + try{ + $subQuery = Transaction::join('users','transactions.penjual','=','users.email') + ->where('transactions.pembeli',auth()->user()->email) + ->select( + 'transactions.id', + DB::raw("CONCAT(users.nama_depan,' ',users.nama_belakang) as nama_penjual"), + 'transactions.nama_barang', + 'transactions.total_harga', + 'transactions.created_at', + 'transactions.status_transaksi', + 'transactions.token' + ); + + if($request->has('search') && !empty($request->search['value'])){ + $searchPembeli = $request->search['value']; + if(!is_numeric($searchPembeli)){ + $subQuery->where(function($a) use ($searchPembeli){ + $a->whereRaw("LOWER(CONCAT(users.nama_depan,' ',users.nama_belakang)) LIKE ?",['%'.strtolower($searchPembeli).'%']) + ->orWhereRaw('LOWER(transactions.nama_barang) LIKE ?',['%'.strtolower($searchPembeli).'%']) + ->orWhereRaw('LOWER(transactions.status_transaksi) LIKE ?',['%'.strtolower($searchPembeli).'%']); + }); + }else{ + $subQuery->where(function($a) use ($searchPembeli){ + $a->where('transactions.total_harga','=',$searchPembeli); + }); + } + } + + $queryPembeli = Transaction::from(DB::raw("({$subQuery->toSql()}) as tmp")) + ->mergeBindings($subQuery->getQuery()) // Menggabungkan binding parameters + ->select('*') + ->get(); + + if ($request->ajax()) { + return DataTables::of($queryPembeli) + ->addIndexColumn() + ->addColumn('action', function ($row) { + $url = route('user-transaction.show', ['id' => $row->id]); + $invoice = route('invoice.get',['id' => $row->id]); + $html_code = ' +