distinct() ->orderBy('province_name') ->get(); } public function getCities($provinceId) { return Ongkir::where('province_id', $provinceId) ->select('city_id', 'city_name') ->orderBy('city_name') ->get(); } public function calculateCost($origin, $destination, $weight, $courier) { // Ambil data ongkir berdasarkan kota tujuan $ongkir = Ongkir::where('city_id', $destination)->first(); if (!$ongkir) { throw new \Exception('Data ongkir tidak ditemukan'); } // Hitung ongkir berdasarkan kurir dan layanan $costs = []; switch ($courier) { case 'jne': $costs = [ [ 'service' => 'REG', 'description' => 'Layanan Reguler', 'cost' => [ [ 'value' => $ongkir->jne_reg, 'etd' => '2-3', 'note' => 'Estimasi pengiriman 2-3 hari' ] ] ], [ 'service' => 'OKE', 'description' => 'Layanan Ekonomis', 'cost' => [ [ 'value' => $ongkir->jne_oke, 'etd' => '3-5', 'note' => 'Estimasi pengiriman 3-5 hari' ] ] ], [ 'service' => 'YES', 'description' => 'Layanan Express', 'cost' => [ [ 'value' => $ongkir->jne_yes, 'etd' => '1-2', 'note' => 'Estimasi pengiriman 1-2 hari' ] ] ] ]; break; case 'pos': $costs = [ [ 'service' => 'REG', 'description' => 'Layanan Reguler', 'cost' => [ [ 'value' => $ongkir->pos_reg, 'etd' => '3-4', 'note' => 'Estimasi pengiriman 3-4 hari' ] ] ], [ 'service' => 'EXPRESS', 'description' => 'Layanan Express', 'cost' => [ [ 'value' => $ongkir->pos_express, 'etd' => '1-2', 'note' => 'Estimasi pengiriman 1-2 hari' ] ] ] ]; break; case 'tiki': $costs = [ [ 'service' => 'REG', 'description' => 'Layanan Reguler', 'cost' => [ [ 'value' => $ongkir->tiki_reg, 'etd' => '2-3', 'note' => 'Estimasi pengiriman 2-3 hari' ] ] ], [ 'service' => 'ECO', 'description' => 'Layanan Ekonomis', 'cost' => [ [ 'value' => $ongkir->tiki_eco, 'etd' => '3-5', 'note' => 'Estimasi pengiriman 3-5 hari' ] ] ], [ 'service' => 'EXPRESS', 'description' => 'Layanan Express', 'cost' => [ [ 'value' => $ongkir->tiki_express, 'etd' => '1-2', 'note' => 'Estimasi pengiriman 1-2 hari' ] ] ] ]; break; } return [ 'rajaongkir' => [ 'query' => [ 'origin' => $origin, 'destination' => $destination, 'weight' => $weight, 'courier' => $courier ], 'status' => [ 'code' => 200, 'description' => 'OK' ], 'results' => [ [ 'code' => $courier, 'name' => strtoupper($courier), 'costs' => $costs ] ] ] ]; } }