Facebook
From rozaq, 4 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 222
  1. using RestSharp;
  2. using SimpleJson;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8.  
  9. namespace Chapter5
  10. {
  11.     class Ongkir
  12.     {
  13.         public static List<string> GetKotaList()
  14.         {
  15.             List<string> returnList = new List<string>();
  16.             var client = new RestClient("https://api.rajaongkir.com/starter/city");
  17.             var request = new RestRequest(Method.GET);
  18.             request.AddHeader("key", "c31a7ac4eaed9d6d966f5af4cf2aa4b9");
  19.             IRestResponse response = client.Execute(request);
  20.             JsonObject rajaObj = (JsonObject)SimpleJson.SimpleJson.DeserializeObject(response.Content);
  21.             JsonObject contentObj = (JsonObject)rajaObj["rajaongkir"];
  22.             JsonArray cityArray = (JsonArray)contentObj["results"];
  23.             foreach(JsonObject city in cityArray)
  24.             {
  25.                 returnList.Add((string) city["city_name"]);
  26.             }
  27.             return returnList;
  28.         }
  29.  
  30.         public static List<string> GetLayananList (int idAsal, int idTujuan, int berat, string kurir)
  31.         {
  32.             List<string> returnList = new List<string>();
  33.             var client = new RestClient("https://api.rajaongkir.com/starter/cost");
  34.             var request = new RestRequest(Method.POST);
  35.             request.AddHeader("content-type", "application/x-www-form-urlencoded");
  36.             request.AddHeader("key", "c31a7ac4eaed9d6d966f5af4cf2aa4b9");
  37.             request.AddParameter("application/x-www-form-urlencoded",
  38.                 $"origin={idAsal.ToString()}&destination={idTujuan.ToString()}" +
  39.                 $"&weight={berat.ToString()}&courier={kurir}", ParameterType.RequestBody);
  40.             IRestResponse response = client.Execute(request);
  41.             JsonObject obj = (JsonObject)SimpleJson.SimpleJson.DeserializeObject(response.Content);
  42.             JsonObject rajaObj = (JsonObject)obj["rajaongkir"];
  43.             JsonArray resultsArray = (JsonArray)rajaObj["results"];
  44.             JsonObject courierInfo = (JsonObject)resultsArray[0];
  45.             JsonArray servicesArray = (JsonArray)courierInfo["costs"];
  46.             foreach(JsonObject service in servicesArray)
  47.             {
  48.                 string layanan = (string)courierInfo["name"];
  49.                 layanan += "-" + (string)service["service"];
  50.                 JsonArray detail = (JsonArray)service["cost"];
  51.                 JsonObject infoService = (JsonObject)detail[0];
  52.                 layanan += " Rp" + (infoService["value"]).ToString();
  53.                 layanan += " " + (string)infoService["etd"] + "Hari";
  54.                 returnList.Add(layanan);
  55.             }
  56.             return returnList;
  57.         }
  58.     }
  59. }
  60.  
  61. using System;
  62. using System.Collections.Generic;
  63. using System.ComponentModel;
  64. using System.Data;
  65. using System.Drawing;
  66. using System.Linq;
  67. using System.Text;
  68. using System.Threading.Tasks;
  69. using System.Windows.Forms;
  70.  
  71. namespace Chapter5
  72. {
  73.     public partial class Form1 : Form
  74.     {
  75.         List<string> listKota = new List<string>();  
  76.         public Form1()
  77.         {
  78.             InitializeComponent();
  79.             listKota = Ongkir.GetKotaList();
  80.             foreach(string kota in listKota)
  81.             {
  82.                 tbAsal.AutoCompleteCustomSource.Add(kota);
  83.                 tbTujuan.AutoCompleteCustomSource.Add(kota);
  84.             }
  85.         }
  86.  
  87.         private void TampilkanDaftar(List<string> daftar)
  88.         {
  89.             lblDaftarLayanan.Text = "";
  90.             foreach(string item in daftar)
  91.             {
  92.                 lblDaftarLayanan.Text += "- " + item + Environment.NewLine;
  93.             }
  94.         }
  95.  
  96.         private int GetIdKota(string kota)
  97.         {
  98.             return listKota.IndexOf(kota)+1;
  99.         }
  100.  
  101.         private void btnCekHarga_Click(object sender, EventArgs e)
  102.         {
  103.             if(tbAsal.Text != "" || tbTujuan.Text != "" || tbBerat.Text != "")
  104.             {
  105.                 string kurir = "";
  106.                 if (rbJne.Checked)
  107.                     kurir = "jne";
  108.                 else if (rbPos.Checked)
  109.                     kurir = "pos";
  110.                 else if (rbTiki.Checked)
  111.                     kurir = "tiki";
  112.                 List<string> daftarLayanan = Ongkir.GetLayananList
  113.                     (GetIdKota(tbAsal.Text), GetIdKota(tbTujuan.Text), int.Parse(tbBerat.Text), kurir);
  114.                 TampilkanDaftar(daftarLayanan);
  115.             }
  116.         }
  117.     }
  118. }
  119.