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; } } } } }