public static ExpressTrackingViewModel ConvertFromFedEx(FedExTrackingViewModel fedExModel, GetExpressTrackResponse_V01 expressInfoResponse)
        {
            ExpressTrackingViewModel expressTrack      = new ExpressTrackingViewModel();
            List <steps>             expressTrackSteps = new List <steps>();
            TrackingStatus           status            = TrackingStatus.PreparingShipment;

            expressTrack.mailno = fedExModel.tracking.detail.tn;
            expressTrack.remark = expressInfoResponse.ExpressCompanyName;
            expressTrack.result = "false";

            if (fedExModel.tracking.detail.activities.Count >= 1)
            {
                expressTrack.result = "true";
                status = TrackingStatus.InTransit;
            }

            if (fedExModel.tracking.detail.status == "已取件")
            {
                //Shipped
                status            = TrackingStatus.Shipped;
                expressTrack.time = fedExModel.tracking.detail.shipdate;
            }
            else if (fedExModel.tracking.detail.status == "已送达")
            {
                status            = TrackingStatus.Delivered;
                expressTrack.time = fedExModel.tracking.detail.deliverydate;
            }
            else
            {
                status            = TrackingStatus.InTransit;
                expressTrack.time = fedExModel.tracking.detail.deliverydate;
            }


            if (fedExModel.tracking.detail.activities != null && fedExModel.tracking.detail.activities.Count >= 1)
            {
                foreach (var trace in fedExModel.tracking.detail.activities)
                {
                    var eachstep = new steps
                    {
                        time          = trace.datetime,
                        address       = trace.scan,
                        station       = trace.location,
                        station_phone = string.Empty,
                        status        = string.Empty,
                        remark        = trace.details,
                        next          = string.Empty,
                        next_name     = string.Empty
                    };
                    expressTrackSteps.Add(eachstep);
                }
            }

            expressTrack.status = getNumberValue(status).ToString();
            expressTrack.steps  = expressTrackSteps;

            return(expressTrack);
        }
        public static ExpressTrackingViewModel ConvertFromSfModel(SFTrackingViewModel sfModel, GetExpressTrackResponse_V01 expressInfoResponse)
        {
            ExpressTrackingViewModel expressTrack      = new ExpressTrackingViewModel();
            List <steps>             expressTrackSteps = new List <steps>();
            TrackingStatus           status            = TrackingStatus.PreparingShipment;
            List <Route>             traceses;

            if (expressInfoResponse != null)
            {
                expressTrack.remark = expressInfoResponse.ExpressCompanyName;
            }

            expressTrack.result = "false";

            if (sfModel.Response != null && sfModel.Response.Body != null && sfModel.Response.Body.RouteResponse != null && sfModel.Response.Body.RouteResponse.Route != null && sfModel.Response.Body.RouteResponse.Route.Count >= 1)
            {
                expressTrack.mailno = sfModel.Response.Body.RouteResponse.mailno;
                expressTrack.result = "true";
                expressTrack.time   = sfModel.Response.Body.RouteResponse.Route[0].accept_time;
                status = TrackingStatus.InTransit;
            }
            if (sfModel.Response != null && sfModel.Response.Body != null &&
                sfModel.Response.Body.RouteResponse != null && sfModel.Response.Body.RouteResponse.Route != null)
            {
                traceses = sfModel.Response.Body.RouteResponse.Route;
            }
            else
            {
                traceses = null;
            }

            if (traceses != null)
            {
                foreach (var trace in traceses)
                {
                    steps eachStep = new steps();
                    if (trace.opcode == "50")
                    {
                        status = TrackingStatus.Shipped;
                    }
                    else if (trace.opcode == "8000")
                    {
                        status = TrackingStatus.Delivered;
                    }
                    else
                    {
                        status = TrackingStatus.InTransit;
                    }
                    eachStep.time          = trace.accept_time;
                    eachStep.address       = trace.accept_address;
                    eachStep.status        = trace.opcode;
                    eachStep.remark        = trace.remark;
                    eachStep.station       = "";
                    eachStep.station_phone = "";
                    eachStep.next          = "";
                    eachStep.next_name     = "";
                    expressTrackSteps.Add(eachStep);
                }
            }

            expressTrack.status = getNumberValue(status).ToString();
            expressTrack.steps  = expressTrackSteps;

            return(expressTrack);
        }
        public static ExpressTrackingViewModel ConvertFromBestway(BestwayTrackingViewModel bestwayModel, GetExpressTrackResponse_V01 expressInfoResponse)
        {
            ExpressTrackingViewModel expressTrack      = new ExpressTrackingViewModel();
            List <steps>             expressTrackSteps = new List <steps>();
            TrackingStatus           status            = TrackingStatus.PreparingShipment;

            if (bestwayModel != null && bestwayModel.traceLogs != null && bestwayModel.traceLogs.Count > 0)
            {
                expressTrack.mailno = bestwayModel.traceLogs[0].mailNo;
            }
            if (expressInfoResponse != null && !string.IsNullOrEmpty(expressInfoResponse.ExpressCompanyName))
            {
                expressTrack.remark = expressInfoResponse.ExpressCompanyName;
            }

            expressTrack.result = "false";


            if (bestwayModel != null && bestwayModel.traceLogs != null && bestwayModel.traceLogs.Count > 0 && bestwayModel.traceLogs[0].traces != null && bestwayModel.traceLogs[0].traces.Count >= 1)
            {
                expressTrack.result = "true";
                expressTrack.time   = bestwayModel.traceLogs[0].traces[0].acceptTime;
                status = TrackingStatus.Delivered;
            }


            if (bestwayModel != null && bestwayModel.traceLogs != null && bestwayModel.traceLogs.Count > 0)
            {
                var traceses = bestwayModel.traceLogs[0].traces;
                if (traceses != null)
                {
                    foreach (var trace in traceses)
                    {
                        steps eachStep = new steps();
                        if (trace.scanType == "收件")
                        {
                            status = TrackingStatus.Shipped;
                        }
                        else if (trace.scanType == "签收")
                        {
                            status = TrackingStatus.Delivered;
                        }
                        else
                        {
                            status = TrackingStatus.InTransit;
                        }
                        eachStep.time          = trace.acceptTime;
                        eachStep.address       = trace.acceptAddress;
                        eachStep.status        = trace.scanType;
                        eachStep.remark        = trace.remark;
                        eachStep.station       = "";
                        eachStep.station_phone = "";
                        eachStep.next          = "";
                        eachStep.next_name     = "";
                        expressTrackSteps.Add(eachStep);
                    }
                }
            }

            expressTrack.status = getNumberValue(status).ToString();
            expressTrack.steps  = expressTrackSteps;
            return(expressTrack);
        }