Merge branch 'afiqhamzah-feat-mykad-reader-registration-backend' into 'master'

Afiqhamzah feat mykad reader registration backend

See merge request online-sistem1/api_arrahn!181
This commit is contained in:
hafifie rahman
2023-03-28 16:21:33 +00:00
6 changed files with 195 additions and 20 deletions
+8 -2
View File
@@ -7,6 +7,12 @@ use Illuminate\Http\Request;
class DaerahController extends Controller
{
public function index()
{
$daerah = Daerah::on('mysql7')->with('negeri')->get();
return response()->json($daerah);
}
public function showOneDaerah($koddaerah)
{
$daerah = Daerah::on('mysql7')
@@ -20,7 +26,7 @@ class DaerahController extends Controller
$daerah = Daerah::on('mysql7')
->where('kodnegeri','=',$kodnegeri)
->get();
return response()->json($daerah);
}
}
}
+106 -7
View File
@@ -2,22 +2,121 @@
namespace App\Http\Controllers;
use App\Daerah;
use App\Negeri;
use App\Poskod;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\ValidationException;
class PoskodController extends Controller
{
public function showAllPoskod(){
$poskod = Poskod::on('mysql7')->get();
return response()->json($poskod);
public function showAllPoskod()
{
$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)
->header('query_string', request()->query_string);
}
public function showOnePoskod($poskod)
{
$poskod = Poskod::on('mysql7')
->where('poskod','=',$poskod)
->first();
->with(['negeri:kodnegeri,negeri', 'daerah:koddaerah,namadaerah'])
->where('poskod', '=', $poskod)
->first();
return response()->json($poskod);
}
}
public function store(Request $request)
{
try {
$validated = $this->validate($request, [
'poskod' => 'required|numeric|digits:5|unique:poskod,poskod',
'koddaerah' => 'required|numeric',
'kodnegeri' => 'required|numeric',
]);
} catch (ValidationException $e) {
return response()->json($e, 403);
}
$created_poskod = Poskod::create([
'poskod' => $validated['poskod'],
'koddaerah' => $validated['koddaerah'],
'kodnegeri' => $validated['kodnegeri'],
]);
return response()->json($created_poskod, 200);
}
public function update(Request $request)
{
$poskod = Poskod::find($request->recno);
try {
$validated = $this->validate($request, [
'poskod' => 'required|numeric|digits:5|unique:poskod,poskod,' . $poskod->poskod . ',poskod',
'koddaerah' => 'required|numeric',
'kodnegeri' => 'required|numeric',
]);
} catch (ValidationException $e) {
return response()->json($e, 403);
}
$poskod->update([
'poskod' => $validated['poskod'],
'koddaerah' => $validated['koddaerah'],
'kodnegeri' => $validated['kodnegeri'],
]);
$poskod_changes = $poskod->getChanges();
$getProperChanges = function($poskod_changes){
$changes = [];
if(array_key_exists('poskod', $poskod_changes)){
$poskod = $poskod_changes['poskod'];
array_push($changes, compact('poskod'));
}
if(array_key_exists('koddaerah', $poskod_changes)){
$daerah = Daerah::where('koddaerah', '=', $poskod_changes['koddaerah'])->first()->namadaerah;
array_push($changes, compact('daerah'));
}
if(array_key_exists('kodnegeri', $poskod_changes)){
$negeri = Negeri::where('kodnegeri', '=', $poskod_changes['kodnegeri'])->first()->negeri;
array_push($changes, compact('negeri'));
}
return array_merge(...$changes);
};
$poskod_changes = $getProperChanges($poskod_changes);
return response()->json(compact('poskod', 'poskod_changes'), 200);
}
}