Membuat Controller dan Setting Route API
Membuat Controller dan Setting Route API
4 Sheet
Membuat AuthController
php artisan make:controller API/AuthControllerTuliskan 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 WsControllerTuliskan 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.