public String getQueryRequiredFields() { bool containsInfo = false; QueryString qs = new QueryString(); if (this.trackingAccountNumber != null) { containsInfo = true; qs.add("tracking_account_number", this.trackingAccountNumber); } if (this.trackingPostalCode != null) { qs.add("tracking_postal_code", this.trackingPostalCode); containsInfo = true; } if (this.trackingShipDate != null) { qs.add("tracking_ship_date", this.trackingShipDate); containsInfo = true; } if (containsInfo) { return(qs.ToString()); } return(""); }
/// <summary> /// Get a specific tracking from your account. If the trackingGet.id property /// is defined it will get that tracking from the system, if not it will take /// the tracking tracking.number and the tracking.slug for identify the tracking /// </summary> /// <param name="trackingGet">A Tracking to get</param> /// <param name="fields">A list of fields wanted to be in the response</param> /// <param name="lang">A String with the language desired. Support Chinese to /// English translation for china-ems and china-post only</param> /// <returns></returns> public Tracking getTrackingByNumber(Tracking trackingGet, List <FieldTracking> fields, String lang) { String parametersAll; //encode the fields required String params_query; QueryString qs = new QueryString(); if (fields != null) { qs.add("fields", parseListFieldTracking(fields)); } if (lang != null && !lang.Equals("")) { qs.add("lang", lang); } params_query = replaceFirst(qs.ToString(), "&", "?"); if (trackingGet.id != null && !trackingGet.id.Equals("")) { parametersAll = trackingGet.id + params_query; } else { //get the require fields if any (postal_code, tracking_account etc..) String paramRequiredFields = trackingGet.getQueryRequiredFields(); parametersAll = trackingGet.slug + "/" + trackingGet.trackingNumber + params_query + paramRequiredFields; } JObject response = this.request("GET", "/trackings/" + parametersAll, null); JObject trackingJSON = (JObject)response["data"]["tracking"]; Tracking tracking = null; if (trackingJSON.Count != 0) { tracking = new Tracking(trackingJSON); } return(tracking); }
/// <summary> /// Return the tracking information of the last checkpoint of a single tracking /// </summary> /// <param name="tracking"> A Tracking to get the last checkpoint of, it should have tracking number and slug at least.</param> /// <param name="fields"> A list of fields of checkpoint wanted to be in the response</param> /// <param name="lang"> A String with the language desired. Support Chinese to English translation /// for china-ems and china-post only</param> /// <returns>The last Checkpoint object</returns> public Checkpoint getLastCheckpoint(Tracking tracking, List <FieldCheckpoint> fields, String lang) { String parameters = null; QueryString qs = new QueryString(); if (fields != null) { qs.add("fields", string.Join(",", fields)); } if (lang != null && !lang.Equals("")) { qs.add("lang", lang); } parameters = this.replaceFirst(qs.ToString(), "&", "?"); String parametersExtra = ""; if (tracking.id != null && !tracking.id.Equals("")) { parametersExtra = tracking.id + parameters; } else { String paramRequiredFields = tracking.getQueryRequiredFields(); parametersExtra = tracking.slug + "/" + tracking.trackingNumber + parameters + paramRequiredFields; } JObject response = this.request("GET", "/last_checkpoint/" + parametersExtra, null); JObject checkpointJSON = (JObject)response["data"]["checkpoint"]; Checkpoint checkpoint = null; if (checkpointJSON.Count != 0) { checkpoint = new Checkpoint(checkpointJSON); } return(checkpoint); }