Membuat Controller dan Setting Route API

Membuat AuthController

php artisan make:controller API/AuthController

Tuliskan kode seperti ini di app/Http/Controllers/API/AuthController.php

namespace App\Http\Controllers\API;
 
use App\Http\Controllers\Controller;
use App\Models\User;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\ValidationException;
 
class AuthController extends Controller
{
public function login(Request $request)
{
try {
$request->validate([
'username' => ['required', 'string', 'max:50'],
'password' => ['required'],
]);
 
$user = User::where('username', $request->username)->first();
 
if (!$user || !Hash::check($request->password, $user->password)) {
return response()->json([
"result" => [
'status' => "98",
'message' => "Token tidak terdaftar",
]
]);
}
 
$expiration = Carbon::now()->addHours(24);
$token = $user->createToken('WsSpekPdl', ["*"], $expiration);
 
return response()->json([
"result" => [
'status' => "00",
'message' => "Request Berhasil",
'token' => $token->plainTextToken
]
]);
} catch (ValidationException $e) {
return response()->json([
'result' => [
'status' => "30",
'message' => $e->errors()
]
], 422);
} catch (\Exception $e) {
return response()->json([
'result' => [
'status' => "05",
'message' => 'Terjadi gangguan/ Error Lainnya, silahkan coba lagi'
]
], 500);
}
}
 
public function register(Request $request)
{
try {
// Validasi input
$validatedData = $request->validate([
'username' => ['required', 'string', 'max:50', 'unique:users,username'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
 
// Membuat user baru
$user = User::create([
'username' => $validatedData['username'],
'password' => Hash::make($validatedData['password']),
]);
 
// Mengembalikan response jika berhasil
return response()->json([
"result" => [
'status' => "00",
'message' => "Registration successful",
'data' => $user
]
], 201); // 201 Created
 
} catch (ValidationException $e) {
// Mengembalikan response JSON jika validasi gagal
return response()->json([
'result' => [
'status' => "30",
'message' => $e->errors()
]
], 422);
} catch (\Exception $e) {
// Mengembalikan response JSON jika terjadi error lainnya
return response()->json([
'result' => [
'status' => "05",
'message' => 'Terjadi gangguan/ Error Lainnya, silahkan coba lagi'
]
], 500);
}
}
php artisan make:controller WsController

Tuliskan kode seperti ini di app/Http/Controllers/API/WsController.php

namespace App\Http\Controllers\API;
 
use App\Helpers\Helpers;
use App\Http\Controllers\Controller;
use App\Models\Sptpd;
use App\Models\SptpdBayar;
use App\Models\User;
use Illuminate\Http\Request;
use Carbon\Carbon;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Log;
use Illuminate\Auth\AuthenticationException;
use Illuminate\Validation\ValidationException;
 
class WsController extends Controller
{
public function tagihan(Request $request)
{
 
try {
$this->validate($request, [
'kode_billing' => 'required|max:20'
]);
 
$sptpd = Sptpd::with(['objekPajak', 'sptpd_bayar'])
->where('idbilling', $request->kode_billing)
->first();
 
 
if (empty($sptpd)) {
return response()->json([
"result" => [
'status' => "14",
'message' => "Tagihan tidak ditemukan"
]
]);
}
 
// sptpd yang belum melakukan pembayaran
if (empty($sptpd->sptpd_bayar)) {
return response()->json([
"result" => [
'status' => "00",
'message' => "Request Data Berhasil",
'data' => [
"kode_billing" => $sptpd->idbilling,
"npwpd" => $sptpd?->objekPajak?->wajibPajak?->npwpd,
"namawp" => $sptpd?->objekPajak?->wajibPajak?->nama,
"alamatwp" => $sptpd?->objekPajak?->wajibPajak?->alamat,
"kota" => $sptpd?->objekPajak?->wajibPajak?->alamat,
"tahun" => $sptpd?->tahun,
"nama_object" => $sptpd?->objekPajak?->nama,
"jenis" => $sptpd?->objekPajak?->jenisRekening?->kode,
"masa" => "0{$sptpd->bulan}",
"nominal" => (string) ((int) $sptpd?->pajak),
"denda" => (string) ((int) $sptpd?->denda),
]
]
]);
} else {
return response()->json([
"result" => [
'status' => "88",
'message' => "Tagihan Sudah dibayarakan tanggal: {$sptpd?->sptpd_bayar?->tgl_bayar}"
]
]);
}
} catch (ValidationException $e) {
return response()->json([
'result' => [
'status' => "30",
'message' => $e->errors()
]
], 422);
} catch (\Exception $e) {
Log::error($e->getMessage());
return response()->json([
'result' => [
'status' => "05",
'message' => $e->getMessage()
]
], 500);
}
}
 
public function pembayaran(Request $request)
{
 
try {
$this->validate($request, [
'noref' => 'required|max:6',
'tanggal_terima' => 'required|max:8',
'tanggal_kirim' => 'required|max:8',
'kode_billing' => 'required|max:20'
]);
 
$cekbilling = SptpdBayar::with('sptpd')->whereRelation('sptpd', 'idbilling', $request->kode_billing)
->first();
 
$ceknoref = SptpdBayar::with('sptpd')->whereRelation('sptpd', 'idbilling', $request->kode_billing)
->where('noref', $request->noref)
->first();
 
if (empty($cekbilling)) {
return response()->json([
'status' => '11',
'message' => 'Tagihan tidak ditemukan'
]);
}
 
if (empty($ceknoref)) {
 
$model = SptpdBayar::with('sptpd')->whereRelation('sptpd', 'idbilling', $request->kode_billing)
->first();
 
$model->update([
'noref' => $request->noref,
'tgl_terima' => Helpers::converStringToDate($request->tanggal_terima),
'tgl_kirim' => Helpers::converStringToDate($request->tanggal_kirim)
]);
 
return response()->json([
"result" => [
'status' => "00",
'message' => "Request Data Berhasil",
"noref" => $model->noref,
'data' => [
"kode_billing" => $model?->sptpd->idbilling,
"npwpd" => $model?->sptpd?->objekPajak?->wajibPajak?->npwpd,
"namawp" => $model?->sptpd?->objekPajak?->wajibPajak?->nama,
"alamatwp" => $model?->sptpd?->objekPajak?->wajibPajak?->alamat,
"kota" => $model?->sptpd?->objekPajak?->wajibPajak?->alamat,
"tahun" => $model?->sptpd?->tahun,
"nama_object" => $model?->sptpd?->objekPajak?->nama,
"jenis" => $model?->sptpd?->objekPajak?->jenisRekening?->kode,
"masa" => "0{$model?->sptpd?->bulan}",
"nominal" => (string) ((int) $model?->sptpd?->pajak),
"denda" => (string) ((int) $model?->sptpd?->denda),
]
]
]);
} else {
return response()->json([
"result" => [
'status' => "88",
'message' => "Tagihan Sudah diposting tgl: {$ceknoref?->tgl_kirim}"
]
]);
}
} catch (ValidationException $e) {
return response()->json([
'result' => [
'status' => "30",
'message' => $e->errors()
]
], 422);
} catch (\Exception $e) {
Log::error($e->getMessage());
return response()->json([
'result' => [
'status' => "05",
'message' => $e->getMessage()
]
], 500);
}
}

Membuat route pada Api.php

 
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
 
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "api" middleware group. Make something great!
|
*/
 
Route::get('/', function () {
return response()->json([
'status' => '200',
'message' => 'Welcome to the API SPEK PDL Sitanjak Meranti',
]);
});
 
Route::prefix('auth')->group(function () {
Route::post('/register', [\App\Http\Controllers\API\AuthController::class, 'register']);
Route::post('/login', [\App\Http\Controllers\API\AuthController::class, 'login']);
});
 
Route::middleware(['auth:sanctum'])->prefix('v1/sitanjak-meranti/ws-pdl')->group(function () {
 
Route::middleware('admin')->group(function () {
Route::get('/users', [\App\Http\Controllers\API\UserController::class, 'index']);
});
 
Route::post('/tagihan', [\App\Http\Controllers\API\WsController::class, 'tagihan']);
Route::post('/pembayaran', [\App\Http\Controllers\API\WsController::class, 'pembayaran']);
});

Komentar

Ada 0 komentar pada episode ini.