user(); $endpoint = $api_url . '/api/poskod'; $api_response = Http::get($endpoint, [ 'page' => request()->page, 'query_string' => request()->query_string, ]); $postcodes = $api_response->json(); $query_string = $api_response->header('query_string'); $paginator = $this->paginate($postcodes['current_page'], $postcodes['last_page']); $current_page_classes = 'relative z-10 inline-flex items-center bg-indigo-600 px-4 py-2 text-sm font-semibold text-white focus:z-20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600'; $unselected_page_classes = 'relative inline-flex items-center px-4 py-2 text-sm font-semibold text-gray-700 ring-1 ring-inset ring-gray-300 focus:outline-offset-0'; $data = ['api_url', 'postcodes', 'auth_user', 'current_page_classes', 'unselected_page_classes', 'query_string', 'paginator']; return view('poskod.index', compact($data)); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { $api_url = config('api.url'); $auth_user = auth()->user(); $endpoint = $api_url . '/api/poskod'; $api_response = Http::get($endpoint, [ 'page' => request()->page, 'query_string' => request()->query_string, ]); $postcodes = $api_response->json(); $query_string = $api_response->header('query_string'); $paginator = $this->paginate($postcodes['current_page'], $postcodes['last_page']); $all_daerah_url = $api_url . '/api/daerah'; $all_negeri_url = $api_url . '/api/negeri'; $all_daerah = Http::get($all_daerah_url)->json(); $all_negeri = Http::get($all_negeri_url)->json(); $current_page_classes = 'relative z-10 inline-flex items-center bg-indigo-600 px-4 py-2 text-sm font-semibold text-white focus:z-20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600'; $unselected_page_classes = 'relative inline-flex items-center px-4 py-2 text-sm font-semibold text-gray-700 ring-1 ring-inset ring-gray-300 focus:outline-offset-0'; $data = ['api_url', 'postcodes', 'auth_user', 'current_page_classes', 'unselected_page_classes', 'query_string', 'paginator', 'all_daerah', 'all_negeri']; return view('poskod.create', compact($data)); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $api_url = config('api.url'); $endpoint = $api_url . '/api/poskod'; $response = Http::post($endpoint, [ 'poskod' => $request->poskod, 'koddaerah' => $request->koddaerah, 'kodnegeri' => $request->kodnegeri ]); $data = json_decode($response->body()); if(! $response->ok()){ $error_detail = (array) $data->response->original; $message = $error_detail; $request->session()->flash('response_status', $response->ok()); $request->session()->flash('response_message', $message); return redirect()->route('poskod.create'); } else { $message = "Daftar poskod {$request->poskod} selesai"; $request->session()->flash('response_status', $response->ok()); $request->session()->flash('response_message', $message); return redirect()->route('poskod.edit', $data->poskod); } } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($postcode) { $api_url = config('api.url'); $endpoint = $api_url . '/api/poskod'; $auth_user = auth()->user(); $selected_postcode_url = $api_url . '/api/poskod/' . $postcode; $all_daerah_url = $api_url . '/api/daerah'; $all_negeri_url = $api_url . '/api/negeri'; $postcode = Http::get($selected_postcode_url)->json(); $all_daerah = Http::get($all_daerah_url)->json(); $all_negeri = Http::get($all_negeri_url)->json(); $data = ['postcode', 'all_daerah', 'all_negeri']; return view('poskod.edit', compact($data)); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $postcode) { $api_url = config('api.url'); $endpoint = $api_url . '/api/poskod/' . $postcode . '/update'; $response = Http::put($endpoint, [ 'recno' => $request->recno, 'poskod' => $request->poskod, 'koddaerah' => $request->koddaerah, 'kodnegeri' => $request->kodnegeri ]); $data = json_decode($response->body()); $request->session()->flash('response_status', $response->ok()); if(! $response->ok()){ $error_detail = (array) $data->response->original; $message = $error_detail; $request->session()->flash('response_message', $message); return redirect()->route('poskod.edit', $postcode); } else { $message = 'Kemaskini berjaya'; if(! empty($data->poskod_changes)){ $message = $data->poskod_changes; } $request->session()->flash('response_message', $message); return redirect()->route('poskod.edit', $data->poskod->poskod); } } public function paginate($c, $m) { $current = $c; $last = $m; $delta = 2; $left = $current - $delta; $right = $current + $delta + 1; $range = []; $range_with_dots = []; $l = null; for ($i = 1; $i <= $last; $i++) { if ($i == 1 || $i == $last || ($i >= $left && $i < $right)) { array_push($range, $i); } } foreach ($range as $i) { if ($l) { if ($i - $l === 2) { array_push($range_with_dots, $l + 1); } elseif ($i - $l !== 1) { array_push($range_with_dots, '...'); } } array_push($range_with_dots, $i); $l = $i; } return $range_with_dots; } }