예제 #1
0
        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);
        }