API Flutter

This commit is contained in:
Muhammad Raihan Surya 2023-11-20 15:01:37 +07:00
parent c353a83bd4
commit 59aa63be93
19 changed files with 735 additions and 254 deletions

View File

@ -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'
)
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 =
'
<button class="btn btn-info open-detail-modal" data-toggle="modal"
data-target="#modaldetail" id="detailContact"
data-id="' .
$row->id .
'">Detail</button>
<button class="btn btn-danger open-detail-modal" id="deleteContact"
data-id="' .
$row->id .
'">Hapus</button>
';
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']);
}
}
}

View File

@ -0,0 +1,27 @@
<?php
namespace App\Http\Controllers\API\Invoice;
use App\Http\Controllers\Controller;
use App\Models\Transaction;
use Illuminate\Http\Request;
class InvoiceApiController extends Controller
{
public function getInvoice($id)
{
return response()->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),
]);
}
}

View File

@ -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);
}
}

View File

@ -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 = '
<div class="btn-group">
<button type="button" class="btn btn-primary dropdown-toggle"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
....
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item"
href="'.$url.'">Detail</a>
</li>
<li><a class="dropdown-item"
href="'.$invoice.'">Invoice</a>
</li>
<li><a class="dropdown-item" data-toggle="modal"
data-target="#modalTracking"
data-id="'.$row->id.'"
href="#">Tracking</a>
</li>';
if($row->status_transaksi == 'created'){
$html_code .= '
<li><a class="dropdown-item" id="bayar"
data-id="'.$row->id.'"
data-token="'.$row->token.'"
href="#">Bayar</a>
</li>
<li><a href="#" data-id="'.$row->id.'"
id="cancelPayment" class="dropdown-item">Batal Pembayaran</a>
</li>
';
}
if($row->status_transaksi == 'success'){
$html_code .= '
<li><a href="#" data-id="'.$row->id.'"
id="cancelTransaction" class="dropdown-item">Batal Transaksi</a>
</li>
';
}
if($row->status_transaksi == 'sent'){
$html_code .= '
<li><a class="dropdown-item" data-toggle="modal"
data-target="#modalFinish"
data-id="'.$row->id.'"
href="#">Selesaikan</a>
</li>
';
}
$html_code .= '
</ul>
</div>';
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']);
}
}
}

View File

@ -12,6 +12,7 @@ use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Http;
use App\Models\TransactionDescription;
use Illuminate\Support\Facades\Storage;
use Yajra\DataTables\Facades\DataTables;
class PenjualApiController extends Controller
{
@ -20,12 +21,12 @@ class PenjualApiController extends Controller
try {
DB::beginTransaction();
Transaction::where('id', $request->id)->update([
Transaction::where('id', $request->input('id'))->update([
'status_transaksi' => 'process',
]);
TransactionDescription::create([
'transaction_id' => $request->id,
'transaction_id' => $request->input('id'),
'status' => 'process',
'background' => 'bg-seller',
'user' => auth()->user()->email,
@ -51,12 +52,12 @@ class PenjualApiController extends Controller
}
}
public function denyTransaction(Request $request)
public function rejectTransaction(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,
];
@ -70,7 +71,7 @@ class PenjualApiController 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'];
@ -80,13 +81,13 @@ class PenjualApiController 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',
@ -94,7 +95,7 @@ class PenjualApiController extends Controller
]);
TransactionDescription::create([
'transaction_id' => $request->id,
'transaction_id' => $request->input('id'),
'status' => 'refund',
'background' => 'bg-seller',
'user' => auth()->user()->email,
@ -133,12 +134,12 @@ class PenjualApiController extends Controller
try {
DB::beginTransaction();
Transaction::where('id', $request->id)->update([
Transaction::where('id', $request->input('id'))->update([
'status_transaksi' => 'sending',
]);
TransactionDescription::create([
'transaction_id' => $request->id,
'transaction_id' => $request->input('id'),
'status' => 'sending',
'background' => 'bg-seller',
'user' => auth()->user()->email,
@ -169,7 +170,7 @@ class PenjualApiController extends Controller
try {
DB::beginTransaction();
Transaction::where('id', $request->transaction_id)->update([
Transaction::where('id', $request->input('id'))->update([
'status_transaksi' => 'sent',
]);
@ -184,7 +185,7 @@ class PenjualApiController extends Controller
}
TransactionDescription::create([
'transaction_id' => $request->transaction_id,
'transaction_id' => $request->input('id'),
'status' => 'sent',
'background' => 'bg-seller',
'user' => auth()->user()->email,
@ -217,4 +218,125 @@ class PenjualApiController extends Controller
]);
}
public function listPenjual(Request $request)
{
try {
$subQuery = Transaction::join('users', 'transactions.pembeli', '=', 'users.email')
->where('transactions.penjual', auth()->user()->email)
->select('transactions.id', DB::raw("CONCAT(users.nama_depan,' ',users.nama_belakang) as nama_pembeli"), 'transactions.nama_barang', 'transactions.total_harga', 'transactions.created_at', 'transactions.status_transaksi');
if ($request->has('search') && !empty($request->search['value'])) {
$searchPenjual = $request->search['value'];
if (!is_numeric($searchPenjual)) {
$subQuery->where(function ($a) use ($searchPenjual) {
$a->whereRaw("LOWER(CONCAT(users.nama_depan,' ',users.nama_belakang)) LIKE ?", ['%' . strtolower($searchPenjual) . '%'])
->orWhereRaw('LOWER(transactions.nama_barang) LIKE ?', ['%' . strtolower($searchPenjual) . '%'])
->orWhereRaw('LOWER(transactions.status_transaksi) LIKE ?', ['%' . strtolower($searchPenjual) . '%']);
});
} else {
$subQuery->where(function ($a) use ($searchPenjual) {
$a->whereDay('transactions.created_at', '=', $searchPenjual)
->orWhereMonth('transactions.created_at', '=', $searchPenjual)
->orWhereYear('transactions.created_at', '=', $searchPenjual)
->orWhere('transactions.total_harga', '=', $searchPenjual);
});
}
}
$queryPenjual = Transaction::from(DB::raw("({$subQuery->toSql()}) as tmp"))
->mergeBindings($subQuery->getQuery()) // Menggabungkan binding parameters
->select('*')
->get();
if ($request->ajax()) {
return DataTables::of($queryPenjual)
->addIndexColumn()
->addColumn('action', function ($row) {
$url = route('user-transaction.show', ['id' => $row->id]);
$invoice = route('invoice.get', ['id' => $row->id]);
$html_code =
'
<div class="btn-group">
<button type="button" class="btn btn-primary dropdown-toggle"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
....
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item"
href="' .
$url .
'">Detail</a>
</li>
<li><a class="dropdown-item"
href="' .
$invoice .
'">Invoice</a>
</li>
<li><a class="dropdown-item" data-toggle="modal"
data-target="#modalTracking"
data-id="' .
$row->id .
'"
href="#">Tracking</a>
</li>';
if ($row->status_transaksi == 'success') {
$html_code .=
'
<li><a class="dropdown-item" id="processTransaction"
data-id="' .
$row->id .
'"
href="#">Proses Transaksi</a>
</li>
<li><a class="dropdown-item" id="denyTransaction"
data-id="' .
$row->id .
'"
href="#">Tolak Transaksi</a>
</li>
';
}
if ($row->status_transaksi == 'progress') {
$html_code .=
'
<li><a class="dropdown-item" id="sendOrder"
data-id="' .
$row->id .
'"
href="#">Kirim barang</a>
</li>
';
}
if ($row->status_transaksi == 'sent') {
$html_code .=
'
<li><a class="dropdown-item" data-toggle="modal"
data-target="#modalOrderSent"
data-id="' .
$row->id .
'"
href="#">Barang sudah sampai</a>
</li>
';
}
$html_code .= '
</ul>
</div>';
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']);
}
}
}

View File

@ -3,9 +3,111 @@
namespace App\Http\Controllers\API\Profile;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Storage;
use Laravolt\Indonesia\Models\City;
use Laravolt\Indonesia\Models\District;
use Laravolt\Indonesia\Models\Provinsi;
use Laravolt\Indonesia\Models\Village;
use Throwable;
use Tymon\JWTAuth\Facades\JWTAuth;
class ProfileApiController extends Controller
{
//
public function getProfile()
{
$provinces = Provinsi::where('code', auth()->user()->village->district->city->province->code)->get();
$cities = City::where('province_code', auth()->user()->village->district->city->province->code)->get();
$districts = District::where('city_code', auth()->user()->village->district->city->code)->get();
$villages = Village::where('district_code', auth()->user()->village->district->code)->get();
$token = JWTAuth::getToken();
$user = JWTAuth::user($token);
return response()->json([
'user' => $user,
'provinces' => $provinces,
'cities' => $cities,
'districts' => $districts,
'villages' => $villages
]);
}
public function updateProfile(Request $request)
{
$nama_depan = str_replace(' ', '_', $request->input('nama_depan'));
$nama_belakang = str_replace(' ', '_', $request->input('nama_belakang'));
$nohp = $request->input('nohp');
$kode_kelurahan = $request->input('kelurahan');
$alamat = $request->input('alamat');
$nama_bank = $request->input('nama_bank');
$no_rek = $request->input('no_rek');
$foto_profile = '';
if ($request->hasFile('foto')) {
$file = $request->file('foto');
$foto_profile = 'Foto_Profil_' . $nama_depan . '_' . $nama_belakang .'.'. $file->getClientOriginalExtension();
$path = 'foto-profile/' . $foto_profile;
Storage::disk('public')->put($path, file_get_contents($file));
}
try {
DB::beginTransaction();
User::where('id', auth()->user()->id)->update([
'nama_depan' => $nama_depan,
'nama_belakang' => $nama_belakang,
'nohp' => $nohp,
'kode_kelurahan' => $kode_kelurahan,
'alamat' => $alamat,
'nama_bank' => $nama_bank,
'no_rek' => $no_rek,
'foto_profile' => $foto_profile,
]);
DB::commit();
return response()->json(['status' => true, 'message' => 'Data Profile berhasil diupdate']);
} catch (Throwable $e) {
DB::rollBack();
Log::error($e->getMessage());
return response()->json(['status' => false, 'message' => 'Terjadi Kesalahan pada sisi server']);
}
}
public function updateProfilePassword(Request $request){
$currentPassword = $request->input('currentPassword');
$newPassword = $request->input('newPassword');
$renewPassword = $request->input('renewPassword');
if(!Hash::check($currentPassword, auth()->user()->password)){
return response()->json(['status' => false, 'message' => 'Password sekarang tidak sama','password' => $currentPassword]);
}
if($renewPassword != $newPassword){
return response()->json(['status' => false, 'message' => 'Ketikan ulang password baru']);
}
try{
DB::beginTransaction();
User::where('id', auth()->user()->id)->update([
'password' => Hash::make($newPassword)
]);
DB::commit();
return response()->json(['status' => true, 'message' => 'Password Berhasil diubah']);
}catch(Throwable $e){
DB::rollBack();
Log::error($e->getMessage());
return response()->json(['status' => false, 'message' => 'Terjadi Kesalahan pada sisi server']);
}
}
}

View File

@ -15,29 +15,29 @@ use App\Models\TransactionDescription;
class RefundApiController extends Controller
{
public function create($id)
public function createRefund($id)
{
return view('user.refund.new-refund',['id' => $id]);
return response()->json(['transaction_id' => $id]);
}
public function store(Request $request){
public function storeRefund(Request $request){
$now = Carbon::now();
$due_date = $now->addDays(2)->toDateTimeString();
try{
DB::beginTransaction();
$transaction = Transaction::where('id',$request->id)->first();
$transaction = Transaction::where('id',$request->input('id'))->first();
Transaction::where('id', $request->id)->update([
Transaction::where('id', $request->input('id'))->update([
'status_transaksi' => 'refund'
]);
$refund = Refund::create([
'transaction_id' => $request->id,
'transaction_id' => $request->input('id'),
'total' => $transaction->total_harga,
'due_date' => $due_date,
'complaint' => $request->complaint
'complaint' => $request->input('complaint')
]);
if ($request->hasFile('files')) {
@ -64,7 +64,7 @@ class RefundApiController extends Controller
}
TransactionDescription::create([
'transaction_id' => $request->id,
'transaction_id' => $request->input('id'),
'status' => 'pending',
'user' => auth()->user()->email,
'judul' => 'fas fa-clock',
@ -87,10 +87,10 @@ class RefundApiController extends Controller
}
}
public function show($id){
public function getDetailRefund($id){
$refund = Refund::find($id);
$refundDescription = RefundDescription::where('refund_id',$id)->get();
return view('user.refund.detail-refund',[
return response()->json([
'refund' => $refund,
'descriptions' => $refundDescription
]);

View File

@ -9,17 +9,17 @@ use App\Models\Transaction;
class TransactionApiController extends Controller
{
public function transactionTracking(Request $request){
$data = TransactionDescription::where('transaction_id', $request->id)->get();
public function getTrackingTransaction($id){
$data = TransactionDescription::where('transaction_id', $id)->get();
return response()->json([
'data' => $data
]);
}
public function show($id)
public function getDetailTransaction($id)
{
return view('user.transaction.pembeli.detail-transaction', [
return response()->json([
'transaction' => Transaction::findOrFail($id),
'trackings' => TransactionDescription::where('transaction_id', $id)
->latest()

View File

@ -313,7 +313,7 @@ class LoginController extends Controller
public function searchDistrict(Request $request)
{
$data = District::where('city_code', $$request->code)
$data = District::where('city_code', $request->code)
->where('name', 'LIKE', '%' . strtoupper(request('q')) . '%')
->paginate(10);

View File

@ -13,14 +13,14 @@ use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Storage;
use Laravolt\Indonesia\Models\City;
use Laravolt\Indonesia\Models\District;
use Laravolt\Indonesia\Models\Provinsi;
use Laravolt\Indonesia\Models\Province;
use Laravolt\Indonesia\Models\Village;
class ProfileController extends Controller
{
public function index()
{
$provinces = Provinsi::all();
$provinces = Province::all();
$cities = City::where('province_code', auth()->user()->village->district->city->province->code)->get();
$districts = District::where('city_code', auth()->user()->village->district->city->code)->get();
$villages = Village::where('district_code', auth()->user()->village->district->code)->get();

View File

@ -22,13 +22,23 @@ class UserContactController extends Controller
return view('user.contact.index');
}
public function getContact()
public function getContact(Request $request)
{
if($request->input == '' || $request->input == null){
$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)
->paginate(10);
}else{
$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)
->whereRaw(DB::raw("LOWER(CONCAT(users.nama_depan,' ',users.nama_belakang)) LIKE ?",['%'.strtolower($request->input).'%']))
->paginate(10);
}
return response()->json($data);
}

View File

@ -23,7 +23,7 @@ class UserRefundController extends Controller
public function create($id)
{
return view('user.refund.new-refund',['id' => $id]);
return view('user.refund.new-refund',['transaction_id' => $id]);
}
public function store(Request $request){

View File

@ -110,19 +110,19 @@ class User extends Authenticatable implements JWTSubject
//function alamat
public function getVillageName(){
return $this->village->name;
return ucwords(strtolower($this->village->name));
}
public function getDistrictName(){
return $this->village->district->name;
return ucwords(strtolower($this->village->district->name));
}
public function getCityName(){
return $this->village->district->city->name;
return ucwords(strtolower($this->village->district->city->name));
}
public function getProvinceName(){
return $this->village->district->city->province->name;
return ucwords(strtolower($this->village->district->city->province->name));
}
public function contacts()

View File

@ -298,7 +298,7 @@
</div>
</div>
</div>
<div class="row">
{{-- <div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
@ -380,7 +380,7 @@
</div>
</div>
</div>
</div>
</div> --}}
</section>
</div>
@include('admin.transaction.modal-tracking')

View File

@ -47,6 +47,7 @@
<script>
$(document).ready(function() {
let check = false;
var teksArea = document.getElementById('resultArea');
$('#modaldetail').on('show.bs.modal', function(event) {
var triggerLink = $(event.relatedTarget);
@ -150,7 +151,7 @@
url: "{{ route('user-contact.destroy') }}",
data: {
id: dataId
}
},
type: 'DELETE',
contentType: false,
processType: false,
@ -207,11 +208,10 @@
url: "{{ route('user-contact.email') }}",
data: {
email: email
}
},
type: 'GET',
success: function(response) {
if (response.status) {
let status = response.message.status
Swal.fire({
title: response.status ? 'Akun ditemukan' :
'Akun tidak ditemukan',
@ -239,6 +239,8 @@
}).then(function() {
Swal.close();
});
teksArea.value = '';
teksArea.style.height = 'auto';
check = false;
}
},
@ -251,6 +253,8 @@
}).then(function() {
Swal.close();
});
teksArea.value = '';
teksArea.style.height = 'auto';
check = false;
}
});
@ -280,7 +284,7 @@
});
$.ajax({
url: '{{ route('user-contact.store') }}',
url: "{{ route('user-contact.store') }}",
type: 'POST',
data: formData,
processData: false,

View File

@ -14,7 +14,7 @@
<div class="card-header d-flex justify-content-center">
<h2>Form Refund Pesanan</h2>
</div>
<input type="hidden" name="id" value="{{ $id }}">
<input type="hidden" name="id" value="{{ $transaction_id }}">
<div class="card-body">
<div class="section-title mt-0">Alasan Komplain</div>
<div class="col-md-12">

View File

@ -155,7 +155,8 @@
<div class="col-md-8 col-lg-9">
<select style="width: 100%;" name="provinsi" id="selectProvince">
@foreach ($provinces as $province)
<option value="{{ $province->code }}">{{ $province->name }}</option>
<option value="{{ $province->code }}">
{{ ucwords(strtolower($province->name)) }}</option>
@endforeach
</select>
</div>
@ -167,7 +168,8 @@
<div class="col-md-8 col-lg-9">
<select style="width: 100%;" name="kota" id="selectCity">
@foreach ($cities as $city)
<option value="{{ $city->code }}">{{ $city->name }}</option>
<option value="{{ $city->code }}">
{{ ucwords(strtolower($city->name)) }}</option>
@endforeach
</select>
</div>
@ -178,7 +180,8 @@
<div class="col-md-8 col-lg-9">
<select style="width: 100%;" name="kecamatan" id="selectDistrict">
@foreach ($districts as $district)
<option value="{{ $district->code }}">{{ $district->name }}</option>
<option value="{{ $district->code }}">
{{ ucwords(strtolower($district->name)) }}</option>
@endforeach
</select>
</div>
@ -189,7 +192,8 @@
<div class="col-md-8 col-lg-9">
<select style="width: 100%;" name="kelurahan" id="selectVillage" required>
@foreach ($villages as $village)
<option value="{{ $village->code }}">{{ $village->name }}</option>
<option value="{{ $village->code }}">
{{ ucwords(strtolower($village->name)) }}</option>
@endforeach
</select>
</div>
@ -205,7 +209,7 @@
<div class="row mb-3">
<label for="namaBank" class="col-md-4 col-lg-3 col-form-label">Bank/e-Wallet
Tujuan</label>
Tujuan (Digunakan untuk pengiriman uang jika menjadi penjual)</label>
<div class="col-md-4 col-lg-4">
<select style="width: 100%;" name="nama_bank" id="namaBank" required>
<option selected disabled>Silahkan Pilih Bank/e-Wallet</option>
@ -390,16 +394,6 @@
$(document).ready(function() {
var selectedVillage = "{{ Auth::user()->kode_kelurahan }}";
var selectedDistrict = "{{ Auth::user()->village->district->code }}";
var selectedCity = "{{ Auth::user()->village->district->city->code }}";
var selectedProvince = "{{ Auth::user()->village->district->city->province->code }}";
$("#selectProvince").val(selectedProvince).trigger('change');
$("#selectCity").val(selectedCity).trigger('change');
$("#selectDistrict").val(selectedDistrict).trigger('change');
$("#selectVillage").val(selectedVillage).trigger('change');
function ucwords(str) {
return str.toLowerCase().replace(/\b\w/g, function(l) {
return l.toUpperCase();
@ -419,10 +413,10 @@
let code = $("#selectProvince").val();
// Mengosongkan pilihan di selectCity dan selectDistrict dan selectVillage
$("#selectCity", "#selectDistrict", "#selectVillage").empty();
$("#selectCity, #selectDistrict, #selectVillage").empty();
// Menghapus properti 'disabled' pada selectCity dan selectDistrict dan selectVillage
$("#selectCity", "#selectDistrict", "#selectVillage").prop(
$("#selectCity, #selectDistrict, #selectVillage").prop(
"disable",
false
);
@ -431,7 +425,7 @@
$("#selectCity").select2({
placeholder: "Pilih Kabupaten/Kota",
ajax: {
url: "/cari-kota/",
url: "{{ route('cari-kota') }}",
data: {
code: code,
},
@ -456,16 +450,16 @@
let code = $("#selectCity").val();
// Mengosongkan pilihan di selectDistrict dan selectVillage
$("#selectDristrict", "#selectVillage").empty();
$("#selectDristrict, #selectVillage").empty();
// Menghapus properti 'disable' pada selectDistrict dan selectVillage
$("#selectDistrict", "#selectVillage").prop("disabled", false);
$("#selectDistrict, #selectVillage").prop("disabled", false);
// Memuat ulang data berdasarkan wilayah yang baru dipilih di selectCity
$("#selectDistrict").select2({
placeholder: "Pilih Kecamatan",
ajax: {
url: "/cari-kecamatan/", // Isi dengan URL yang sesuai
url: "{{ route('cari-kecamatan') }}", // Isi dengan URL yang sesuai
data: {
code: code,
},
@ -499,7 +493,7 @@
$("#selectVillage").select2({
placeholder: "Pilih Kelurahan",
ajax: {
url: "/cari-kelurahan/", // Isi dengan URL yang sesuai
url: "{{ route('cari-kelurahan') }}", // Isi dengan URL yang sesuai
data: {
code: code,
},

View File

@ -2,6 +2,13 @@
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\API\Login\LoginApiController;
use App\Http\Controllers\API\Refund\RefundApiController;
use App\Http\Controllers\API\Contact\ContactApiController;
use App\Http\Controllers\API\Pembeli\PembeliApiController;
use App\Http\Controllers\API\Penjual\PenjualApiController;
use App\Http\Controllers\API\Profile\ProfileApiController;
use App\Http\Controllers\API\Transaction\TransactionApiController;
use App\Http\Controllers\API\Invoice\InvoiceApiController;
use Illuminate\Support\Facades\Auth;
/*
@ -19,48 +26,97 @@ use Illuminate\Support\Facades\Auth;
// return $request->user();
// });
Route::group(
[
'middleware' => 'api',
'prefix' => 'auth',
],
function () {
Route::post('login', [LoginApiController::class,'login']);
Route::get('logout', [LoginApiController::class,'logout']);
Route::get('refresh', [LoginApiController::class,'refresh']);
Route::get('me', [LoginApiController::class,'me']);
Route::post('register',[LoginApiController::class,'register']);
Route::post('hai',[LoginApiController::class,'test']);
Route::get('status',[LoginApiController::class,'check']);
},
);
// Login
// Route::group(
// [
// 'middleware' => 'api',
// 'prefix' => 'auth',
// ],
// function () {
//
// Route::get('me', [LoginApiController::class,'me']);
Route::middleware(['auth'])->group(function(){
Route::prefix('profile')->group(function(){
Route::controller(ProfileController::class)->group(function(){
// Route::get('status',[LoginApiController::class,'check']);
// },
// );
Route::prefix('auth')->group(function () {
Route::controller(LoginApiController::class)->group(function () {
Route::post('login', 'login')->name('auth.login'); // bisa
Route::post('test', 'test')->name('auth.test'); // bisa
Route::post('register', 'register')->name('auth.register'); // bisa
Route::get('cari-provinsi', 'searchProvince')->name('auth.cari-provinsi'); // bisa
Route::get('cari-kota', 'searchCity')->name('auth.cari-kota'); // bisa
Route::get('cari-kecamatan', 'searchDistrict')->name('auth.cari-kecamatan'); // bisa
Route::get('cari-kelurahan', 'searchVillage')->name('auth.cari-kelurahan'); // bisa
Route::post('verification-code', 'verificationCode')->name('auth.verification-code'); // bisa
});
});
Route::middleware(['auth:api'])->group(function () {
Route::prefix('auth')->group(function () {
Route::controller(LoginApiController::class)->group(function () {
Route::get('logout', 'logout')->name('auth.logout'); // bisa
Route::get('me', 'me')->name('auth.me'); // bisa
Route::get('refresh', 'refresh')->name('auth.refresh'); // bisa
}); // sudah
});
Route::middleware(['user'])->group(function(){
Route::prefix('user')->group(function(){
Route::controller(UserDashboardController::class)->group(function(){
Route::middleware(['user'])->group(function () {
Route::prefix('user')->group(function () {
Route::controller(ContactApiController::class)->group(function () {
Route::get('list-contact', 'listContact')->name('contact.list-contact');
Route::get('check-contact', 'checkContact')->name('contact.check-contact'); // Bisa
Route::get('get-list-contact', 'getListContact')->name('contact.get-list-contact'); // bisa // untuk list kontak pembeli membuat transaksi baru
Route::get('detail-contact', 'detailContact')->name('contact.detail-contact'); // Bisa
Route::delete('delete-contact', 'deleteContact')->name('contact.delete-contact'); // Bisa
Route::post('store-contact', 'storeContact')->name('contact.store-contact'); // Bisa
}); // sudah
});
Route::controller(TransactionApiController::class)->group(function () {
Route::get('get-transaction-tracking/{id}', 'getTrackingTransaction')->name('transaction.get-transaction-tracking');
Route::get('get-detail-transaction/{id}', 'getDetailTransaction')->name('transaction.get-detail-transaction');
}); // sudah
Route::controller(UserContactController::class)->group(function(){
Route::controller(RefundApiController::class)->group(function () {
Route::get('list-refund', 'listRefund')->name('refund.list-refund');
Route::get('create-refund/{id}','createRefund')->name('refund.create-refund');
Route::get('detail-refund/{id}','getDetailRefund')->name('refund.get-detail-refund');
Route::post('store-refund', 'storeRefund')->name('refund.store-refund');
}); // sudah
});
Route::controller(PembeliApiController::class)->group(function () {
Route::get('list-pembeli', 'listPembeli')->name('pembeli.list-pembeli');
Route::get('create-transaction', 'createTransaction')->name('pembeli.create-transaction');
Route::post('store-transaction', 'storeTransaction')->name('pembeli.store-transaction');
Route::post('pay-payment', 'payPayment')->name('pembeli.pay-payment');
Route::post('cancel-payment', 'cancelPayment')->name('pembeli.cancel-payment');
Route::post('pending-payment', 'pendingPayment')->name('pembeli.pending-payment');
Route::post('error-payment', 'errorPayment')->name('pembeli.error-paymennt');
Route::post('close-payment', 'closePayment')->name('pembeli.close-payment');
Route::post('finish-transaction', 'finishTransaction')->name('pembeli.finish-transaction');
Route::post('cancel-transaction', 'cancelTransaction')->name('pembeli.cancel-transaction');
}); // sudah
Route::controller(UserTransactionController::class)->group(function(){
Route::controller(PenjualApiController::class)->group(function () {
Route::get('list-penjual', 'listPenjual')->name('penjual.list-penjual');
Route::post('accept-transaction', 'acceptTransaction')->name('penjual.accept-transaction');
Route::post('reject-transaction', 'rejectTransaction')->name('penjual.reject-transaction');
Route::post('sending-order', 'sendingOrder')->name('penjual.sending-order');
Route::post('sent-order', 'sentOrder')->name('penjual.sent-order');
}); // sudah
});
Route::controller(ProfileApiController::class)->group(function () {
Route::get('get-profile', 'getProfile')->name('profile.get-profile');
Route::post('update-profile', 'updateProfile')->name('profile.update-profile');
Route::post('update-profile-password', 'updateProfilePassword')->name('profile.update-profile-password');
}); // sudah
Route::controller(UserRefundController::class)->group(function(){
});
Route::controller(InvoiceApiController::class)->group(function () {
Route::get('get-invoice/{id}', 'getInvoice')->name('invoice.get-invoice');
Route::get('export-invoice/{id}', 'exportInvoice')->name('invoice.export-invoice');
}); // sudah
});
});
});

View File

@ -1,7 +1,4 @@
<?php
use App\Models\Refunds;
use App\Models\Transactions;
use Illuminate\Support\Facades\Route;
//Admin
@ -45,26 +42,6 @@ Route::get('/', function () {
);
});
Route::get('/detail_transaction', function () {
return view('admin/transaction/detail-transaction',[
'name'=>'Jilhn Haura',
'detail_transaction' => Transactions::allDetailTransactions()
]);
})->name('transaction.detail');
Route::get('/detail_refund',function() {
return view('admin/refund/detail-refund',[
'name'=>'Jilhan Haura',
"detail_refund"=> Refunds::DetailRefund()
]);
})->name('refund.detail');
Route::get('/next_detail_refund',function() {
return view('admin/refund/next-detail-refund',[
'name'=>"Jilhan Haura"
]);
});
//Index
@ -165,7 +142,7 @@ Route::middleware(['auth'])->group(function(){
Route::get('user-contact/list-contact','listContact')->name('user-contact.list-contact');
Route::post('user-contact','store')->name('user-contact.store');
Route::delete('user-contact/delete','destroy')->name('user-contact.destroy');
Route::get('user-contact/get-user-contact','getContact')->name('user-contact.get');
Route::get('user-contact/get-user-contact','getContact')->name('user-contact.get'); // select2
Route::get('user-contact/cek-contact','cekEmail')->name('user-contact.email');
Route::get('user-contact/detailContact','detailContact')->name('user-contact.detail-contact');
});
@ -189,7 +166,6 @@ Route::middleware(['auth'])->group(function(){
Route::put('user-pembeli/transaksi-error','onErrorTransaction')->name('user-pembeli.error');
Route::put('user-pembeli/transaksi-close','onCloseTransaction')->name('user-pembeli.close');
Route::put('user-pembeli/transaksi-selesai','finishTransaction')->name('user-pembeli.finish');
Route::put('user-pembeli/transaksi-komplain/{id}','complaintTransaction')->name('user-pembeli.complain');
});
// Penjual