- using RestSharp;
- using SimpleJson;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Chapter5
- {
- class Ongkir
- {
- public static List<string> GetKotaList()
- {
- List<string> returnList = new List<string>();
- var client = new RestClient("https://api.rajaongkir.com/starter/city");
- var request = new RestRequest(Method.GET);
- request.AddHeader("key", "c31a7ac4eaed9d6d966f5af4cf2aa4b9");
- IRestResponse response = client.Execute(request);
- JsonObject rajaObj = (JsonObject)SimpleJson.SimpleJson.DeserializeObject(response.Content);
- JsonObject contentObj = (JsonObject)rajaObj["rajaongkir"];
- JsonArray cityArray = (JsonArray)contentObj["results"];
- foreach(JsonObject city in cityArray)
- {
- returnList.Add((string) city["city_name"]);
- }
- return returnList;
- }
- public static List<string> GetLayananList (int idAsal, int idTujuan, int berat, string kurir)
- {
- List<string> returnList = new List<string>();
- var client = new RestClient("https://api.rajaongkir.com/starter/cost");
- var request = new RestRequest(Method.POST);
- request.AddHeader("content-type", "application/x-www-form-urlencoded");
- request.AddHeader("key", "c31a7ac4eaed9d6d966f5af4cf2aa4b9");
- request.AddParameter("application/x-www-form-urlencoded",
- $"origin={idAsal.ToString()}&destination={idTujuan.ToString()}" +
- $"&weight={berat.ToString()}&courier={kurir}", ParameterType.RequestBody);
- IRestResponse response = client.Execute(request);
- JsonObject obj = (JsonObject)SimpleJson.SimpleJson.DeserializeObject(response.Content);
- JsonObject rajaObj = (JsonObject)obj["rajaongkir"];
- JsonArray resultsArray = (JsonArray)rajaObj["results"];
- JsonObject courierInfo = (JsonObject)resultsArray[0];
- JsonArray servicesArray = (JsonArray)courierInfo["costs"];
- foreach(JsonObject service in servicesArray)
- {
- string layanan = (string)courierInfo["name"];
- layanan += "-" + (string)service["service"];
- JsonArray detail = (JsonArray)service["cost"];
- JsonObject infoService = (JsonObject)detail[0];
- layanan += " Rp" + (infoService["value"]).ToString();
- layanan += " " + (string)infoService["etd"] + "Hari";
- returnList.Add(layanan);
- }
- return returnList;
- }
- }
- }
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace Chapter5
- {
- public partial class Form1 : Form
- {
- List<string> listKota = new List<string>();
- public Form1()
- {
- InitializeComponent();
- listKota = Ongkir.GetKotaList();
- foreach(string kota in listKota)
- {
- tbAsal.AutoCompleteCustomSource.Add(kota);
- tbTujuan.AutoCompleteCustomSource.Add(kota);
- }
- }
- private void TampilkanDaftar(List<string> daftar)
- {
- lblDaftarLayanan.Text = "";
- foreach(string item in daftar)
- {
- lblDaftarLayanan.Text += "- " + item + Environment.NewLine;
- }
- }
- private int GetIdKota(string kota)
- {
- return listKota.IndexOf(kota)+1;
- }
- private void btnCekHarga_Click(object sender, EventArgs e)
- {
- if(tbAsal.Text != "" || tbTujuan.Text != "" || tbBerat.Text != "")
- {
- string kurir = "";
- if (rbJne.Checked)
- kurir = "jne";
- else if (rbPos.Checked)
- kurir = "pos";
- else if (rbTiki.Checked)
- kurir = "tiki";
- List<string> daftarLayanan = Ongkir.GetLayananList
- (GetIdKota(tbAsal.Text), GetIdKota(tbTujuan.Text), int.Parse(tbBerat.Text), kurir);
- TampilkanDaftar(daftarLayanan);
- }
- }
- }
- }