diff --git a/app/Http/Controllers/PoskodController.php b/app/Http/Controllers/PoskodController.php index 1899bd5..4d75703 100644 --- a/app/Http/Controllers/PoskodController.php +++ b/app/Http/Controllers/PoskodController.php @@ -4,22 +4,40 @@ namespace App\Http\Controllers; use App\Poskod; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; class PoskodController extends Controller { public function showAllPoskod() { - $poskod = Poskod::on('mysql7')->get(); + $poskod = Poskod::on('mysql7') + ->with(['negeri:kodnegeri,negeri', 'daerah:koddaerah,namadaerah']) + ->when(request()->query_string, function ($q) { + return $q->where('poskod', 'like', '%' . request()->query_string . '%') + ->orWhereHas('negeri', function ($b) { + $b->where(DB::raw('lower(negeri)'), 'like', '%' . strtolower(request()->query_string) . '%'); + }) + ->orWhereHas('daerah', function ($b) { + $b->where(DB::raw('lower(namadaerah)'), 'like', '%' . strtolower(request()->query_string) . '%'); + }); + }) + ->paginate(12); - return response()->json($poskod); + + return response() + ->json($poskod) + ->header('query_string', request()->query_string); } public function showOnePoskod($poskod) { $poskod = Poskod::on('mysql7') + ->with(['negeri:kodnegeri,negeri', 'daerah:koddaerah,namadaerah']) ->where('poskod', '=', $poskod) ->first(); + return response()->json($poskod); } @@ -27,10 +45,10 @@ class PoskodController extends Controller { if (Poskod::where('poskod', $request->poskod)->exists()) { - return response()->json('Poskod creation forbidden, already exist', 403); + return response()->json("Daftar poskod tidak dibenarkan, poskod {$request->poskod} sudah wujud", 403); } - $created_poskod = Poskod::create([ + $created_poskod = Poskod::create([ 'poskod' => $request->poskod, 'koddaerah' => $request->koddaerah, 'kodnegeri' => $request->kodnegeri, @@ -38,4 +56,22 @@ class PoskodController extends Controller return response()->json($created_poskod, 200); } + + public function update(Request $request) + { + + if (Poskod::where('poskod', $request->poskod)->exists()) { + return response()->json("Kemaskini poskod tidak dibenarkan, poskod {$request->poskod} sudah wujud", 403); + } + + $updated_poskod = Poskod::find($request->recno); + + $updated_poskod->update([ + 'poskod' => $request->poskod, + 'koddaerah' => $request->koddaerah, + 'kodnegeri' => $request->kodnegeri, + ]); + + return response()->json($updated_poskod, 200); + } } diff --git a/app/Poskod.php b/app/Poskod.php index 822cbcb..af2b2fc 100644 --- a/app/Poskod.php +++ b/app/Poskod.php @@ -3,10 +3,12 @@ namespace App; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; class Poskod extends Model { protected $table = 'poskod'; + protected $primaryKey = 'recno'; public $timestamps = false; /** @@ -26,4 +28,13 @@ class Poskod extends Model * @var array */ // protected $hidden = []; + + public function negeri(): BelongsTo { + return $this->belongsTo(Negeri::class, 'kodnegeri', 'kodnegeri'); + } + + + public function daerah(): BelongsTo { + return $this->belongsTo(Daerah::class, 'koddaerah', 'koddaerah'); + } } diff --git a/routes/web.php b/routes/web.php index 8584c80..826a8a0 100644 --- a/routes/web.php +++ b/routes/web.php @@ -175,6 +175,7 @@ $router->group(['prefix'=>'api'], function () use ($router){ //Poskod API $router->post('poskod',['uses'=>'PoskodController@store']); + $router->put('poskod/{poskod}/update',['uses'=>'PoskodController@update']); $router->get('poskod',['uses'=>'PoskodController@showAllPoskod']); $router->get('poskod/{poskod}',['uses'=>'PoskodController@showOnePoskod']);