Exemple #1
0
        private void ParseFedExRawDataIntoList(TrackerData Entry, TrackReply NewData)
        {
            foreach (CompletedTrackDetail completedTrackDetail in NewData.CompletedTrackDetails)
            {
                foreach (TrackDetail trackDetail in completedTrackDetail.TrackDetails)
                {
                    //Check for error, likely from invalid tracking number
                    if (trackDetail.Notification.Severity == NotificationSeverityType.ERROR)
                    {
                        Entry.Location = "INVALID TRACKING NUMBER";
                        Entry.Status   = PackageStatus.NotFound;
                    }
                    else
                    {
                        //check for error-less state of no record found by web service
                        if (trackDetail.StatusDetail != null)
                        {
                            //Input city state location as single string
                            Entry.Location = trackDetail.StatusDetail.Location.City + ", " +
                                             trackDetail.StatusDetail.Location.StateOrProvinceCode;
                        }
                        else
                        {
                            Entry.Location = "NO CURRENT LOCATION FOUND";
                        }

                        Entry.Service = ParcelService.FedEx;
                        //check for error-less state of no record found by web service
                        if (trackDetail.StatusDetail != null)
                        {
                            //a small sample of the package status codes, mapped to PackageStatus ENUM
                            switch (trackDetail.StatusDetail.Code)
                            {
                            case "DL": Entry.Status = PackageStatus.Delivered; break;

                            case "OD": Entry.Status = PackageStatus.OutForDelivery; break;

                            case "ED": Entry.Status = PackageStatus.OutForDelivery; break;

                            case "RS": Entry.Status = PackageStatus.Returned; break;

                            case "IT": Entry.Status = PackageStatus.Shipped; break;

                            case "PU": Entry.Status = PackageStatus.Shipped; break;

                            case "DP": Entry.Status = PackageStatus.Shipped; break;

                            case "AP": Entry.Status = PackageStatus.NotShipped; break;

                            case "OF": Entry.Status = PackageStatus.NotShipped; break;

                            default: Entry.Status = PackageStatus.Other; break;
                            }
                        }
                        else
                        {
                            Entry.Status = PackageStatus.NotFound;
                        }
                    }
                }
            }
        }