Beispiel #1
0
        public async Task <TrackResponse> Create([FromBody] TrackRequest newTrackRequest)
        {
            TrackDTO trackDTO        = autoMapper.Map <TrackDTO>(newTrackRequest);
            TrackDTO createdTrackDTO = await trackService.CreateAsync(trackDTO);

            return(autoMapper.Map <TrackResponse>(createdTrackDTO));
        }
        public virtual IList <ShipmentStatusEvent> GetShipmentEvents(string trackingNumber)
        {
            var events = new List <ShipmentStatusEvent>();

            if (string.IsNullOrWhiteSpace(trackingNumber))
            {
                _logger.Information("Tracking number cannot be null or empty");
                return(events);
            }

            try {
                var request = new TrackRequest {
                    TrackId = new TrackId {
                        Id = trackingNumber
                    },
                    UserId = _uspsSettings.Username
                };
                TrackResponse response = _trackService.Get(request);
                TrackInfo     info     = response.TrackInfo.FirstOrDefault();

                if (info != null)
                {
                    events.AddRange(info.TrackDetail.Select(e => new ShipmentStatusEvent {
                        EventName = e.Value
                    }));
                }
            } catch (Exception e) {
                _logger.Error(string.Format("Error while getting USPS shipment tracking info - {0}", trackingNumber), e);
            }

            return(events);
        }
        public void informacionTracking()
        {
            TrackRequest request = CreateTrackRequest();
            //
            TrackService service = new TrackService();

            if (usePropertyFile())
            {
                service.Url = getProperty("endpoint");
            }
            //
            try
            {
                // Call the Track web service passing in a TrackRequest and returning a TrackReply
                TrackReply reply = service.track(request);
                if (reply.HighestSeverity == NotificationSeverityType.SUCCESS || reply.HighestSeverity == NotificationSeverityType.NOTE || reply.HighestSeverity == NotificationSeverityType.WARNING)
                {
                    ShowTrackReply(reply);
                }
                ShowNotifications(reply);
            }
            catch (SoapException e)
            {
                Console.WriteLine(e.Detail.InnerText);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            Console.WriteLine("Press any key to quit!");
            Console.ReadKey();
        }
Beispiel #4
0
        /*void Main()
         * {
         *  TrackRequest request = CreateTrackRequest();
         *  //
         *  TrackService service = new TrackService();
         *  if (usePropertyFile())
         *  {
         *      service.Url = getProperty("endpoint");
         *  }
         *  //
         *  try
         *  {
         *      // Call the Track web service passing in a TrackRequest and returning a TrackReply
         *      TrackReply reply = service.track(request);
         *      if (reply.HighestSeverity == NotificationSeverityType.SUCCESS || reply.HighestSeverity == NotificationSeverityType.NOTE || reply.HighestSeverity == NotificationSeverityType.WARNING)
         *      {
         *          ShowTrackReply(reply);
         *      }
         *      ShowNotifications(reply);
         *  }
         *  catch (SoapException e)
         *  {
         *      Console.WriteLine(e.Detail.InnerText);
         *  }
         *  catch (Exception e)
         *  {
         *      Console.WriteLine(e.Message);
         *  }
         *  Console.WriteLine("Press any key to quit!");
         *  Console.ReadKey();
         * }*/

        private TrackRequest CreateTrackRequest()
        {
            // Build the TrackRequest
            TrackRequest request = new TrackRequest();

            //
            request.WebAuthenticationDetail = new WebAuthenticationDetail();
            request.WebAuthenticationDetail.UserCredential            = new WebAuthenticationCredential();
            request.WebAuthenticationDetail.UserCredential.Key        = "IoXBEjJlfQOOLlrx";          // Replace "XXX" with the Key
            request.WebAuthenticationDetail.UserCredential.Password   = "******"; // Replace "XXX" with the Password
            request.WebAuthenticationDetail.ParentCredential          = new WebAuthenticationCredential();
            request.WebAuthenticationDetail.ParentCredential.Key      = "IoXBEjJlfQOOLlrx";          // Replace "XXX" with the Key
            request.WebAuthenticationDetail.ParentCredential.Password = "******"; // Replace "XXX"
            if (usePropertyFile())                                                                   //Set values from a file for testing purposes
            {
                request.WebAuthenticationDetail.UserCredential.Key        = getProperty("key");
                request.WebAuthenticationDetail.UserCredential.Password   = getProperty("password");
                request.WebAuthenticationDetail.ParentCredential.Key      = getProperty("parentkey");
                request.WebAuthenticationDetail.ParentCredential.Password = getProperty("parentpassword");
            }
            //
            request.ClientDetail = new ClientDetail();
            request.ClientDetail.AccountNumber = "510088000"; // Replace "XXX" with the client's account number
            request.ClientDetail.MeterNumber   = "118817920"; // Replace "XXX" with the client's meter number
            if (usePropertyFile())                            //Set values from a file for testing purposes
            {
                request.ClientDetail.AccountNumber = getProperty("accountnumber");
                request.ClientDetail.MeterNumber   = getProperty("meternumber");
            }
            //
            request.TransactionDetail = new TransactionDetail();
            request.TransactionDetail.CustomerTransactionId = "***Track Request using VC#***";  //This is a reference field for the customer.  Any value can be used and will be provided in the response.
            //
            request.Version = new VersionId();
            //
            // Tracking information
            request.SelectionDetails = new TrackSelectionDetail[1] {
                new TrackSelectionDetail()
            };
            request.SelectionDetails[0].PackageIdentifier       = new TrackPackageIdentifier();
            request.SelectionDetails[0].PackageIdentifier.Value = _trackNumber; // Replace "XXX" with tracking number or door tag
            if (usePropertyFile())                                              //Set values from a file for testing purposes
            {
                request.SelectionDetails[0].PackageIdentifier.Value = getProperty("trackingnumber");
            }
            request.SelectionDetails[0].PackageIdentifier.Type = TrackIdentifierType.TRACKING_NUMBER_OR_DOORTAG;
            //
            // Date range is optional.
            // If omitted, set to false
            request.SelectionDetails[0].ShipDateRangeBegin          = DateTime.Parse("06/18/2012"); //MM/DD/YYYY
            request.SelectionDetails[0].ShipDateRangeEnd            = request.SelectionDetails[0].ShipDateRangeBegin.AddDays(0);
            request.SelectionDetails[0].ShipDateRangeBeginSpecified = false;
            request.SelectionDetails[0].ShipDateRangeEndSpecified   = false;
            //
            // Include detailed scans is optional.
            // If omitted, set to false
            request.ProcessingOptions    = new TrackRequestProcessingOptionType[1];
            request.ProcessingOptions[0] = TrackRequestProcessingOptionType.INCLUDE_DETAILED_SCANS;
            return(request);
        }
        public JsonResult ApproveRequestInsert(string RequestGUID)
        {
            TimeShield_dbEntities db = new TimeShield_dbEntities();
            var approve = db.Requests.Where(r => r.RequestGUID == RequestGUID).ToList();

            foreach (var ap in approve)
            {
                ap.Approveflag = 1;
            }

            db.SaveChanges();
            var approved = db.Requests.Where(r => r.Approveflag == 1 && r.RequestGUID == RequestGUID).Select(a => new { a.RequestGUID, a.UserId }).FirstOrDefault();

            TrackRequest trackRequest = new TrackRequest
            {
                RequestGUID = approved.RequestGUID,
                ApproveTime = DateTime.Now,
                UserId      = approved.UserId
            };

            db.TrackRequests.Add(trackRequest);

            db.SaveChanges();

            return(Json(new { result = "Redirect", url = Url.Action("NewRequest", "User") }, JsonRequestBehavior.AllowGet));
        }
Beispiel #6
0
 private void BwReminder_DoWork(object sender, DoWorkEventArgs e)
 {
     using (Context db = new Context())
     {
         List <Reminder> list = db.Reminders.ToList();
         if (list.Count != 0)
         {
             foreach (Reminder item in list)
             {
                 TrackRequest track = NovaPoshtaApi.SendRequest(item.TTN, null);
                 if (track.data[0].StatusCode != item.StatusId.ToString())
                 {
                     User user = db.Users.First(x => x.Id == item.UserId);
                     item.StatusId = Convert.ToInt32(track.data[0].StatusCode);
                     BOT.SendTextMessageAsync(user.Telegram, $"Добрый день!{Environment.NewLine}По ТТН{item.TTN} произошли изменения статуса - теперь документ в статусе {track.data[0].Status}");
                     db.SaveChanges();
                 }
             }
         }
         else
         {
             return;
         }
     }
 }
Beispiel #7
0
        public async Task <ActionResult <TrackResponse> > Post(TrackRequest input)
        {
            var track = await _tracksRepository.AddAsync(input.MapTrack());

            var result = track.MapTrackResponse();

            return(CreatedAtAction(nameof(GetById), new { result.ID }, result));
        }
Beispiel #8
0
        public TrackResponse Get(TrackRequest request)
        {
            string response    = DoRequest(request);
            var    responseXml = XElement.Parse(response);

            return(responseXml.Name == "Error" ? new TrackResponse {
                Error = response.ToObject <RequestError>()
            } : response.ToObject <TrackResponse>());
        }
Beispiel #9
0
        public static bool Track(string[] pluginIds)
        {
            var trackRequest = new TrackRequest
            {
                PlayerHash       = PlayerHash,
                EnabledPluginIds = pluginIds
            };

            return(SimpleHttpClient.Post(TrackUri, trackRequest));
        }
Beispiel #10
0
 private void StartTrack(TrackRequest newTrack)
 {
     if (newTrack == null)
     {
         return;
     }
     CurrentTrack = newTrack;
     StartTimer(newTrack.Song.Playtime * 1000); // Convert s to ms
     SwitchedSongEvent(this, new SwitchedSongEventArgs(newTrack, DateTime.Now));
 }
Beispiel #11
0
        public void Get_InvalidRequest_ReturnsError()
        {
            var trackRequest = new TrackRequest {
                TrackId = new TrackId(),
                UserId  = _userId
            };

            TrackResponse trackResponse = _trackService.Get(trackRequest);

            Assert.That(trackResponse.Error, Is.Not.Null);
        }
Beispiel #12
0
        public void CreateTrackRequest(string trackingNumber)
        {
            // Initialize
            this.request = new TrackRequest();

            // Authentication information
            request.WebAuthenticationDetail = new WebAuthenticationDetail();
            request.WebAuthenticationDetail.UserCredential          = new WebAuthenticationCredential();
            request.WebAuthenticationDetail.UserCredential.Key      = KEY;      // Replace "XXX" with the Key
            request.WebAuthenticationDetail.UserCredential.Password = PASSWORD; // Replace "XXX" with the Password

            // Account & meter numbers
            request.ClientDetail = new ClientDetail();
            request.ClientDetail.AccountNumber = ACCOUNT_NUMBER; // Replace "XXX" with the client's account number
            request.ClientDetail.MeterNumber   = METER_NUMBER;   // Replace "XXX" with the client's meter number

            //
            request.TransactionDetail = new TransactionDetail();
            request.TransactionDetail.CustomerTransactionId = "***Track Request using VC#***";  //This is a reference field for the customer.  Any value can be used and will be provided in the response.

            //
            request.Version = new VersionId();
            //

            // Tracking information
            request.SelectionDetails = new TrackSelectionDetail[1] {
                new TrackSelectionDetail()
            };
            request.SelectionDetails[0].PackageIdentifier       = new TrackPackageIdentifier();
            request.SelectionDetails[0].PackageIdentifier.Value = trackingNumber; // Replace "XXX" with tracking number or door tag
            request.SelectionDetails[0].PackageIdentifier.Type  = TrackIdentifierType.TRACKING_NUMBER_OR_DOORTAG;

            // Date range is optional.
            // If omitted, set to false
            request.SelectionDetails[0].ShipDateRangeBegin          = DateTime.Parse("06/18/2012"); //MM/DD/YYYY
            request.SelectionDetails[0].ShipDateRangeEnd            = request.SelectionDetails[0].ShipDateRangeBegin.AddDays(0);
            request.SelectionDetails[0].ShipDateRangeBeginSpecified = false;
            request.SelectionDetails[0].ShipDateRangeEndSpecified   = false;

            // Include detailed scans is optional.
            // If omitted, set to false
            request.ProcessingOptions    = new TrackRequestProcessingOptionType[1];
            request.ProcessingOptions[0] = TrackRequestProcessingOptionType.INCLUDE_DETAILED_SCANS;

            // Run the track request and get reply
            try
            {
                this.reply = this.service.track(request);
            }
            catch (Exception)
            {
                throw;
            }
        }
Beispiel #13
0
        public static List <DeliveryNotice> GetLogisticsTraceDetail(Context ctx, List <DeliveryNotice> notices)
        {
            if (notices != null && notices.Count > 0)
            {
                foreach (var notice in notices)
                {
                    if (notice != null)
                    {
                        if (notice.TraceEntry != null && notice.TraceEntry.Count > 0)
                        {
                            foreach (var trace in notice.TraceEntry)
                            {
                                if (trace != null)
                                {
                                    TrackRequest request = CreateTrackRequest(trace.FCarryBillNo);
                                    LogXML("trackingNumber:[" + trace.FCarryBillNo + "]  Request", request, typeof(TrackRequest));
                                    //
                                    TrackService service = new TrackService();
                                    if (usePropertyFile())
                                    {
                                        service.Url = getProperty("endpoint");
                                    }
                                    //
                                    try
                                    {
                                        // Call the Track web service passing in a TrackRequest and returning a TrackReply
                                        TrackReply reply = service.track(request);

                                        LogXML("trackingNumber:[" + trace.FCarryBillNo + "]  Reply", reply, typeof(TrackReply));

                                        if (reply.HighestSeverity == NotificationSeverityType.SUCCESS || reply.HighestSeverity == NotificationSeverityType.NOTE || reply.HighestSeverity == NotificationSeverityType.WARNING)
                                        {
                                            ShowTrackReply(reply);
                                            notice.LocusEntry = GetLocusDetail(reply);
                                        }
                                        ShowNotifications(reply);
                                    }
                                    catch (SoapException ex)
                                    {
                                        SynchroDataHelper.WriteSynchroLog(ctx, SynchroDataType.DeliveryNoticeBill, ex.Message + System.Environment.NewLine + ex.StackTrace);
                                    }
                                    catch (Exception ex)
                                    {
                                        SynchroDataHelper.WriteSynchroLog(ctx, SynchroDataType.DeliveryNoticeBill, ex.Message + System.Environment.NewLine + ex.StackTrace);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(notices);
        }
Beispiel #14
0
        private static TrackRequest CreateTrackRequest()
        {
            // Build the TrackRequest
            TrackRequest request = new TrackRequest();

            //
            request.WebAuthenticationDetail = new WebAuthenticationDetail();
            request.WebAuthenticationDetail.UserCredential            = new WebAuthenticationCredential();
            request.WebAuthenticationDetail.UserCredential.Key        = "8HHdHUYeSfTJRSFS";          // Replace "XXX" with the Key
            request.WebAuthenticationDetail.UserCredential.Password   = "******"; // Replace "XXX" with the Password
            request.WebAuthenticationDetail.ParentCredential          = new WebAuthenticationCredential();
            request.WebAuthenticationDetail.ParentCredential.Key      = "8HHdHUYeSfTJRSFS";          // Replace "XXX" with the Key
            request.WebAuthenticationDetail.ParentCredential.Password = "******"; // Replace "XXX"
            if (usePropertyFile())                                                                   //Set values from a file for testing purposes
            {
                request.WebAuthenticationDetail.UserCredential.Key        = getProperty("key");
                request.WebAuthenticationDetail.UserCredential.Password   = getProperty("password");
                request.WebAuthenticationDetail.ParentCredential.Key      = getProperty("parentkey");
                request.WebAuthenticationDetail.ParentCredential.Password = getProperty("parentpassword");
            }
            //
            request.ClientDetail = new ClientDetail();
            request.ClientDetail.AccountNumber = "398001460"; // Replace "XXX" with the client's account number
            request.ClientDetail.MeterNumber   = "111563032"; // Replace "XXX" with the client's meter number
            //
            request.TransactionDetail = new TransactionDetail();
            request.TransactionDetail.CustomerTransactionId = "81200001362-373570-281";  //This is a reference field for the customer.  Any value can be used and will be provided in the response.
            //
            request.Version = new VersionId();
            //
            // Tracking information
            request.SelectionDetails = new TrackSelectionDetail[1] {
                new TrackSelectionDetail()
            };
            request.SelectionDetails[0].PackageIdentifier       = new TrackPackageIdentifier();
            request.SelectionDetails[0].PackageIdentifier.Value = "742268951584"; // Replace "XXX" with tracking number or door tag
            request.SelectionDetails[0].PackageIdentifier.Type  = TrackIdentifierType.TRACKING_NUMBER_OR_DOORTAG;
            //
            request.SelectionDetails[0].ShipmentAccountNumber = "398001460";
            // Date range is optional.
            // If omitted, set to false
            //request.SelectionDetails[0].ShipDateRangeBegin = DateTime.Parse("9/05/2017"); //MM/DD/YYYY
            //request.SelectionDetails[0].ShipDateRangeEnd = request.SelectionDetails[0].ShipDateRangeBegin.AddDays(30);
            request.SelectionDetails[0].ShipDateRangeBeginSpecified = false;
            request.SelectionDetails[0].ShipDateRangeEndSpecified   = false;
            //
            // Include detailed scans is optional.
            // If omitted, set to false
            request.ProcessingOptions    = new TrackRequestProcessingOptionType[1];
            request.ProcessingOptions[0] = TrackRequestProcessingOptionType.INCLUDE_DETAILED_SCANS;
            return(request);
        }
Beispiel #15
0
        public void Get_ValidTrackingNumber1_ReturnsTrackingInfo()
        {
            var trackRequest = new TrackRequest {
                TrackId = new TrackId {
                    Id = "EJ958088694US"
                },
                UserId = _userId
            };

            TrackResponse trackResponse = _trackService.Get(trackRequest);

            Assert.That(trackResponse.TrackInfo[0].TrackDetail.Count, Is.GreaterThan(0));
        }
Beispiel #16
0
        public void Get_InvalidTrackingNumber_ReturnsTrackingInfoError()
        {
            var trackRequest = new TrackRequest {
                TrackId = new TrackId {
                    Id = "12345"
                },
                UserId = _userId
            };

            TrackResponse trackResponse = _trackService.Get(trackRequest);

            Assert.That(trackResponse.TrackInfo[0].Error, Is.Not.Null);
        }
Beispiel #17
0
        public void Get_InvalidTrackingNumber_ReturnsNoRecordSummary()
        {
            var trackRequest = new TrackRequest {
                TrackId = new TrackId {
                    Id = "EJ888888888US"
                },
                UserId = _userId
            };

            TrackResponse trackResponse = _trackService.Get(trackRequest);

            Assert.That(trackResponse.TrackInfo[0].TrackSummary, Contains.Substring("There is no record"));
        }
Beispiel #18
0
 private static void PublishAIS(Track track)
 {
     try
     {
         TrackRequest.Parameters.Clear();
         TrackRequest.AddJsonBody(track);
         IRestResponse response = RestClient.Execute(TrackRequest);
         Log.Information(response.StatusCode.ToString());
     }
     catch (Exception ex)
     {
         Log.Error(ex, "{@Message}" + Environment.NewLine + "{StackTrace}.", ex.Message, ex.StackTrace);
     }
 }
Beispiel #19
0
        static void OnUserJoinedVoiceChannel(ChannelUserEventArgs e, SoundBoard soundBoard, SoundManager soundManager, Random random)
        {
            if (e.User.IsBot)
            {
                MyLogger.WriteLine("Bot joined a voice channel. Ignoring...");
                return;
            }
            if (e.Channel.IsAFK())
            {
                MyLogger.WriteLine("User joined an AFK voice channel. Ignoring...");
                return;
            }
            if (soundManager.IsPlaying)
            {
                MyLogger.WriteLine("_soundManager.HasThingsInQueue() is true. Ignoring...");
                return;
            }
            MyLogger.WriteLine(e.User.Name + " joined voice channel: " + e.Channel);
            var list = new[] {
                Tuple.Create("reinhardt", "hello"),
                Tuple.Create("genji", "hello"),
                Tuple.Create("mercy", "hello"),
                Tuple.Create("torbjorn", "hello"),
                Tuple.Create("winston", "hi there"),
                Tuple.Create("suhdude", "#random")
            };
            var i = random.Next(list.Length);
            var x = list[i];

            MyLogger.WriteLine("User joined a voice channel. Sending: " + x.Item1 + " " + x.Item2);
            FileInfo soundFile;

            if (soundBoard.TryGetSoundPath(x.Item1, x.Item2, out soundFile) == false)
            {
                MyLogger.WriteException(new FileNotFoundException("Couldn't Find TrackRequest but should have"));
                return;
            }

            var track = new Track {
                Path  = soundFile.FullName,
                Title = $"{x.Item1}: {x.Item2}"
            };

            var sound = new TrackRequest(track, e.Channel.Server.DefaultChannel, e.Channel)
            {
                TextUpdates = false
            };

            soundManager.EnqueueSound(sound);
        }
        public void CreateTrackRequest(string trackingNumber)
        {
            // Tracking information
            this.request          = new TrackRequest();
            request.InquiryNumber = trackingNumber;

            try
            {
                this.reply = this.service.ProcessTrack(request);
            }
            catch (Exception)
            {
                throw;
            }
        }
        public async Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
        {
            iprot.IncrementRecursionDepth();
            try
            {
                TField field;
                await iprot.ReadStructBeginAsync(cancellationToken);

                while (true)
                {
                    field = await iprot.ReadFieldBeginAsync(cancellationToken);

                    if (field.Type == TType.Stop)
                    {
                        break;
                    }

                    switch (field.ID)
                    {
                    case 1:
                        if (field.Type == TType.Struct)
                        {
                            TrackRequest = new TrackRequest();
                            await TrackRequest.ReadAsync(iprot, cancellationToken);
                        }
                        else
                        {
                            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
                        }
                        break;

                    default:
                        await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);

                        break;
                    }

                    await iprot.ReadFieldEndAsync(cancellationToken);
                }

                await iprot.ReadStructEndAsync(cancellationToken);
            }
            finally
            {
                iprot.DecrementRecursionDepth();
            }
        }
        /// <summary>
        /// Gets all events for a tracking number.
        /// </summary>
        /// <param name="trackingNumber">The tracking number to track</param>
        /// <returns>List of Shipment Events.</returns>
        public virtual IList <ShipmentStatusEvent> GetShipmentEvents(string trackingNumber)
        {
            if (string.IsNullOrEmpty(trackingNumber))
            {
                return(new List <ShipmentStatusEvent>());
            }

            var result = new List <ShipmentStatusEvent>();

            try
            {
                //use try-catch to ensure exception won't be thrown if web service is not available

                var track = new TrackService();
                var tr    = new TrackRequest();
                var upss  = new UPSSecurity();
                var upssSvcAccessToken = new UPSSecurityServiceAccessToken();
                upssSvcAccessToken.AccessLicenseNumber = _upsSettings.AccessKey;
                upss.ServiceAccessToken = upssSvcAccessToken;
                var upssUsrNameToken = new UPSSecurityUsernameToken();
                upssUsrNameToken.Username = _upsSettings.Username;
                upssUsrNameToken.Password = _upsSettings.Password;
                upss.UsernameToken        = upssUsrNameToken;
                track.UPSSecurityValue    = upss;
                var      request       = new RequestType();
                string[] requestOption = { "15" };
                request.RequestOption = requestOption;
                tr.Request            = request;
                tr.InquiryNumber      = trackingNumber;
                System.Net.ServicePointManager.ServerCertificateValidationCallback += delegate { return(true); };
                var trackResponse = track.ProcessTrack(tr);
                result.AddRange(trackResponse.Shipment.SelectMany(c => c.Package[0].Activity.Select(ToStatusEvent)).ToList());
            }
            catch (SoapException ex)
            {
                var sb = new StringBuilder();
                sb.AppendFormat("SoapException Message= {0}.", ex.Message);
                sb.AppendFormat("SoapException Category:Code:Message= {0}.", ex.Detail.LastChild.InnerText);
                //sb.AppendFormat("SoapException XML String for all= {0}.", ex.Detail.LastChild.OuterXml);
                _logger.Error(string.Format("Error while getting UPS shipment tracking info - {0}", trackingNumber), new Exception(sb.ToString()));
            }
            catch (Exception exc)
            {
                _logger.Error(string.Format("Error while getting UPS shipment tracking info - {0}", trackingNumber), exc);
            }
            return(result);
        }
Beispiel #23
0
        private TrackRequest _trackingInit()
        {
            TrackRequest request = new TrackRequest();

            request.WebAuthenticationDetail = new QDLogistics.FedExTrackService.WebAuthenticationDetail();
            request.WebAuthenticationDetail.UserCredential          = new QDLogistics.FedExTrackService.WebAuthenticationCredential();
            request.WebAuthenticationDetail.UserCredential.Key      = api_key;
            request.WebAuthenticationDetail.UserCredential.Password = api_password;

            request.ClientDetail = new QDLogistics.FedExTrackService.ClientDetail();
            request.ClientDetail.AccountNumber = api_accountNumber;
            request.ClientDetail.MeterNumber   = api_meterNumber;

            request.ProcessingOptions    = new TrackRequestProcessingOptionType[1];
            request.ProcessingOptions[0] = TrackRequestProcessingOptionType.INCLUDE_DETAILED_SCANS;

            return(request);
        }
        /// <summary>
        /// Gets all events for a tracking number.
        /// </summary>
        /// <param name="trackingNumber">The tracking number to track</param>
        /// <returns>List of Shipment Events.</returns>
        public virtual IList <ShipmentStatusEvent> GetShipmentEvents(string trackingNumber)
        {
            if (string.IsNullOrEmpty(trackingNumber))
            {
                return(new List <ShipmentStatusEvent>());
            }

            var result = new List <ShipmentStatusEvent>();

            try
            {
                //use try-catch to ensure exception won't be thrown is web service is not available

                var track = new TrackService();
                var tr    = new TrackRequest();
                var upss  = new UPSSecurity();
                var upssSvcAccessToken = new UPSSecurityServiceAccessToken
                {
                    AccessLicenseNumber = _upsSettings.AccessKey
                };
                upss.ServiceAccessToken = upssSvcAccessToken;
                var upssUsrNameToken = new UPSSecurityUsernameToken
                {
                    Username = _upsSettings.Username,
                    Password = _upsSettings.Password
                };
                upss.UsernameToken     = upssUsrNameToken;
                track.UPSSecurityValue = upss;
                var      request       = new RequestType();
                string[] requestOption = { "15" };
                request.RequestOption = requestOption;
                tr.Request            = request;
                tr.InquiryNumber      = trackingNumber;
                System.Net.ServicePointManager.ServerCertificateValidationCallback += delegate { return(true); };
                var trackResponse = track.ProcessTrack(tr);
                result.AddRange(trackResponse.Shipment.SelectMany(c => c.Package[0].Activity.Select(ToStatusEvent)).ToList());
            }
            catch (Exception exc)
            {
                _logger.Error($"Error while getting UPS shipment tracking info - {trackingNumber}", exc);
            }
            return(result);
        }
Beispiel #25
0
        public IEnumerable <ShipmentStatusEvent> GetShipmentStatusEvents(string trackingNumber)
        {
            var settings    = UPSSettings.LoadFrom(_settingsService);
            var track       = CreateTrackService(settings);
            var request     = new TrackRequest();
            var requestType = new RequestType();

            requestType.RequestOption = new string[] { "15" };
            request.Request           = requestType;
            request.InquiryNumber     = trackingNumber;
            System.Net.ServicePointManager.ServerCertificateValidationCallback += delegate { return(true); };

            var trackResponse = track.ProcessTrack(request);
            var result        = new List <ShipmentStatusEvent>();

            result.AddRange(trackResponse.Shipment.SelectMany(c => c.Package[0].Activity.Select(x => ToStatusEvent(x))).ToList());

            return(result);
        }
        public TrackRequest CreateTrackRequest(string TrackNumber)
        {
            //The following code is almost entirely based on WebAPI example
            // Build the TrackRequest
            TrackRequest request = new TrackRequest();

            //
            request.WebAuthenticationDetail = new WebAuthenticationDetail();
            request.WebAuthenticationDetail.UserCredential            = new WebAuthenticationCredential();
            request.WebAuthenticationDetail.UserCredential.Key        = UserKey;      // Replace "XXX" with the Key
            request.WebAuthenticationDetail.UserCredential.Password   = UserPassword; // Replace "XXX" with the Password
            request.WebAuthenticationDetail.ParentCredential          = new WebAuthenticationCredential();
            request.WebAuthenticationDetail.ParentCredential.Key      = "XXX";        // Replace "XXX" with the Key
            request.WebAuthenticationDetail.ParentCredential.Password = "******";        // Replace "XXX"
            request.ClientDetail = new ClientDetail();
            request.ClientDetail.AccountNumber = AccountNumber;                       // Replace "XXX" with the client's account number
            request.ClientDetail.MeterNumber   = MeterNumber;                         // Replace "XXX" with the client's meter number
            request.TransactionDetail          = new TransactionDetail();
            request.TransactionDetail.CustomerTransactionId = TransactionID;          //This is a reference field for the customer.  Any value can be used and will be provided in the response.
            //
            request.Version = new VersionId();
            //
            // Tracking information
            request.SelectionDetails = new TrackSelectionDetail[1] {
                new TrackSelectionDetail()
            };
            request.SelectionDetails[0].PackageIdentifier       = new TrackPackageIdentifier();
            request.SelectionDetails[0].PackageIdentifier.Value = TrackNumber; // Replace "XXX" with tracking number or door tag
            request.SelectionDetails[0].PackageIdentifier.Type  = TrackIdentifierType.TRACKING_NUMBER_OR_DOORTAG;
            //
            // Date range is optional.
            // If omitted, set to false
            request.SelectionDetails[0].ShipDateRangeBegin          = DateTime.Parse("06/18/2012"); //MM/DD/YYYY
            request.SelectionDetails[0].ShipDateRangeEnd            = request.SelectionDetails[0].ShipDateRangeBegin.AddDays(0);
            request.SelectionDetails[0].ShipDateRangeBeginSpecified = false;
            request.SelectionDetails[0].ShipDateRangeEndSpecified   = false;
            //
            // Include detailed scans is optional.
            // If omitted, set to false
            request.ProcessingOptions    = new TrackRequestProcessingOptionType[1];
            request.ProcessingOptions[0] = TrackRequestProcessingOptionType.INCLUDE_DETAILED_SCANS;
            return(request);
        }
Beispiel #27
0
        public TrackReply Tracking(string trackingNumber)
        {
            TrackRequest request = _trackingInit();

            request.TransactionDetail = new QDLogistics.FedExTrackService.TransactionDetail();
            request.TransactionDetail.CustomerTransactionId = "*** Track Request ***";

            request.Version = new QDLogistics.FedExTrackService.VersionId();

            request.SelectionDetails = new TrackSelectionDetail[1] {
                new TrackSelectionDetail()
            };
            request.SelectionDetails[0].PackageIdentifier       = new TrackPackageIdentifier();
            request.SelectionDetails[0].PackageIdentifier.Value = trackingNumber;
            request.SelectionDetails[0].PackageIdentifier.Type  = TrackIdentifierType.TRACKING_NUMBER_OR_DOORTAG;

            TrackPortTypeClient client = new TrackPortTypeClient();
            TrackReply          reply  = client.track(request);

            return(reply);
        }
Beispiel #28
0
        public void MailService_Fedex_GetTrack()
        {
            //arrange
            string       fedexKey            = string.Empty;
            string       fedexPassword       = string.Empty;
            string       fedexAccountNumber  = string.Empty;
            string       fedexMeterNumber    = string.Empty;
            string       fedexTrackingNumber = string.Empty;
            TrackRequest request             = _mailSvc.CreateFedexTrackRequest(fedexKey, fedexPassword, fedexAccountNumber, fedexMeterNumber, fedexTrackingNumber);
            //act
            TrackReply reply = _mailSvc.GetFedexTrack(request);

            //assert
            foreach (CompletedTrackDetail detail in reply.completedTrackDetailsField)
            {
                foreach (TrackDetail trackDetail in detail.trackDetailsField)
                {
                    Address address = trackDetail.destinationAddressField;
                    //trackDetail.actualDeliveryAddressField;

                    string   status = trackDetail.statusDetailField != null ? trackDetail.statusDetailField.descriptionField : "";
                    DateTime actualDeliveryTime;
                    DateTime estimatedDeliveryTime;
                    DateTime pickupTime;
                    if (trackDetail.estimatedPickupTimestampFieldSpecified)
                    {
                        pickupTime = trackDetail.estimatedPickupTimestampField;
                    }
                    if (trackDetail.actualDeliveryTimestampFieldSpecified)
                    {
                        actualDeliveryTime = trackDetail.actualDeliveryTimestampField;
                    }
                    if (trackDetail.estimatedDeliveryTimestampFieldSpecified)
                    {
                        estimatedDeliveryTime = trackDetail.estimatedDeliveryTimestampField;
                    }
                }
            }
        }
        public TrackResponse GetTrackingInfo(string TrackingNumber)
        {
            //The following code is from the WebAPI example
            //Construct objects
            var TrackService       = new TrackService();
            var TrackRequest       = new TrackRequest();
            var UPSSecurityObject  = new UPSSecurity();
            var upssSvcAccessToken = new UPSSecurityServiceAccessToken();

            //Assign parameters
            upssSvcAccessToken.AccessLicenseNumber = AccessLicenseNumber;
            UPSSecurityObject.ServiceAccessToken   = upssSvcAccessToken;
            var upssUsrNameToken = new UPSSecurityUsernameToken();

            upssUsrNameToken.Username       = Username;
            upssUsrNameToken.Password       = Password;
            UPSSecurityObject.UsernameToken = upssUsrNameToken;
            TrackService.UPSSecurityValue   = UPSSecurityObject;
            RequestType request = new RequestType();

            String[] requestOption = { "15" };
            request.RequestOption      = requestOption;
            TrackRequest.Request       = request;
            TrackRequest.InquiryNumber = TrackingNumber;
            System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();

            //Send request and receive results
            try
            {
                TrackResponse Results = TrackService.ProcessTrack(TrackRequest);
                return(Results);
            }
            catch (System.Web.Services.Protocols.SoapException ex)
            {
                throw new Exception(ex.Message);
            }
        }
Beispiel #30
0
        /// <summary>
        /// Gets all events for a tracking number.
        /// </summary>
        /// <param name="trackingNumber">The tracking number to track</param>
        /// <returns>List of Shipment Events.</returns>
        public virtual IList <ShipmentStatusEvent> GetShipmentEvents(string trackingNumber)
        {
            var result = new List <ShipmentStatusEvent>();

            try
            {
                //use try-catch to ensure exception won't be thrown is web service is not available

                var track = new TrackService();
                var tr    = new TrackRequest();
                var upss  = new UPSSecurity();
                var upssSvcAccessToken = new UPSSecurityServiceAccessToken();
                upssSvcAccessToken.AccessLicenseNumber = _upsSettings.AccessKey;
                upss.ServiceAccessToken = upssSvcAccessToken;
                var upssUsrNameToken = new UPSSecurityUsernameToken();
                upssUsrNameToken.Username = _upsSettings.Username;
                upssUsrNameToken.Password = _upsSettings.Password;
                upss.UsernameToken        = upssUsrNameToken;
                track.UPSSecurityValue    = upss;
                var      request       = new RequestType();
                string[] requestOption = { "15" };
                request.RequestOption = requestOption;
                tr.Request            = request;
                tr.InquiryNumber      = trackingNumber;
                var trackResponse = track.ProcessTrack(tr);
                result.AddRange(trackResponse.Shipment.SelectMany(c => c.Package[0].Activity.Select(x => ToStatusEvent(x))).ToList());
            }
            catch (SoapException ex)
            {
                _logger.ErrorFormat(ex, "Error while getting UPS shipment tracking info - {0}", trackingNumber);
            }
            catch (Exception ex)
            {
                _logger.ErrorFormat(ex, "Error while getting UPS shipment tracking info - {0}", trackingNumber);
            }
            return(result);
        }
 /// <remarks/>
 public void ProcessTrackAsync(TrackRequest TrackRequest)
 {
     this.ProcessTrackAsync(TrackRequest, null);
 }
 /// <remarks/>
 public System.IAsyncResult Begintrack(TrackRequest TrackRequest, System.AsyncCallback callback, object asyncState)
 {
     return this.BeginInvoke("track", new object[] {
                 TrackRequest}, callback, asyncState);
 }
 /// <remarks/>
 public void trackAsync(TrackRequest TrackRequest)
 {
     this.trackAsync(TrackRequest, null);
 }
 /// <remarks/>
 public void trackAsync(TrackRequest TrackRequest, object userState)
 {
     if ((this.trackOperationCompleted == null))
     {
         this.trackOperationCompleted = new System.Threading.SendOrPostCallback(this.OntrackOperationCompleted);
     }
     this.InvokeAsync("track", new object[] {
                 TrackRequest}, this.trackOperationCompleted, userState);
 }
Beispiel #35
0
        /// <summary>
        /// Gets all events for a tracking number.
        /// </summary>
        /// <param name="trackingNumber">The tracking number to track</param>
        /// <returns>List of Shipment Events.</returns>
        public virtual IList<ShipmentStatusEvent> GetShipmentEvents(string trackingNumber)
        {
            if (string.IsNullOrEmpty(trackingNumber))
                return new List<ShipmentStatusEvent>();

            var result = new List<ShipmentStatusEvent>();
            try
            {
                //use try-catch to ensure exception won't be thrown is web service is not available

                //build the TrackRequest
                var request = new TrackRequest();

                //
                request.WebAuthenticationDetail = new WebAuthenticationDetail();
                request.WebAuthenticationDetail.UserCredential = new WebAuthenticationCredential();
                request.WebAuthenticationDetail.UserCredential.Key = _fedexSettings.Key; // Replace "XXX" with the Key
                request.WebAuthenticationDetail.UserCredential.Password = _fedexSettings.Password; // Replace "XXX" with the Password
                //
                request.ClientDetail = new ClientDetail();
                request.ClientDetail.AccountNumber = _fedexSettings.AccountNumber; // Replace "XXX" with client's account number
                request.ClientDetail.MeterNumber = _fedexSettings.MeterNumber; // Replace "XXX" with client's meter number
                //
                request.TransactionDetail = new TransactionDetail();
                request.TransactionDetail.CustomerTransactionId = "***nopCommerce v16 Request using VC#***";

                //creates the Version element with all child elements populated from the wsdl
                request.Version = new VersionId();
                //tracking information
                request.PackageIdentifier = new TrackPackageIdentifier();
                request.PackageIdentifier.Value = trackingNumber;
                request.PackageIdentifier.Type = TrackIdentifierType.TRACKING_NUMBER_OR_DOORTAG;

                request.IncludeDetailedScans = true;
                request.IncludeDetailedScansSpecified = true;

                //initialize the service
                var service = new TrackService(_fedexSettings.Url);
                //this is the call to the web service passing in a TrackRequest and returning a TrackReply
                TrackReply reply = service.track(request);
                //parse response
                if (reply.HighestSeverity == NotificationSeverityType.SUCCESS || reply.HighestSeverity == NotificationSeverityType.NOTE || reply.HighestSeverity == NotificationSeverityType.WARNING) // check if the call was successful
                {

                    foreach (TrackDetail trackDetail in reply.TrackDetails)
                    {

                        if (trackDetail.Events != null)
                        {
                            //Set the parent level attributes
                            //var statusDescription = trackDetail.StatusDescription;
                            //var tatusCode = trackDetail.StatusCode;
                            //if (statusCode == "DL")
                            //{
                            //    var delivered = true;
                            //}


                            //if (trackDetail.SignatureProofOfDeliveryAvailable == true)
                            //{
                            //    trackResults.SignedForBy = trackDetail.DeliverySignatureName;
                            //}

                            //if (trackDetail.ShipmentWeight != null)
                            //{
                            //    var shipmentWeight = string.Format("{0} {1}", trackDetail.ShipmentWeight.Value, trackDetail.ShipmentWeight.Units);
                            //}
                            //else
                            //{
                            //    var shipmentWeight = string.Format("{0} {1}", trackDetail.PackageWeight.Value, trackDetail.PackageWeight.Units);
                            //}

                            //var shipDate = trackDetail.ShipTimestamp;
                            //var serviceType = trackDetail.ServiceInfo;
                            //var packageCount = int.Parse(trackDetail.PackageCount);
                            //var destination = string.Format("{0}, {1} {2}", trackDetail.DestinationAddress.City, trackDetail.DestinationAddress.StateOrProvinceCode, trackDetail.DestinationAddress.CountryCode);
                            //var deliveryDate = trackDetail.ActualDeliveryTimestamp;

                            //Set the TrackingActivity
                            foreach (TrackEvent trackevent in trackDetail.Events)
                            {
                                var sse = new ShipmentStatusEvent();

                                if (trackevent.TimestampSpecified)
                                {
                                    sse.Date = trackevent.Timestamp;
                                }
                                sse.EventName = String.Format("{0} ({1})", trackevent.EventDescription, trackevent.EventType);
                                sse.Location = trackevent.Address.City;
                                sse.CountryCode = trackevent.Address.CountryCode;
                                //other properties (not used yet)
                                //trackevent.EventType;
                                //trackevent.Address.PostalCode;
                                //trackevent.Address.StateOrProvinceCode;
                                //trackevent.StatusExceptionCode;
                                //trackevent.StatusExceptionDescription;

                                result.Add(sse);
                            }
                        }
                    }
                }


                //result.AddRange(trackResponse.Shipment.SelectMany(c => c.Package[0].Activity.Select(x => ToStatusEvent(x))).ToList());
            }
            catch (SoapException ex)
            {
                var sb = new StringBuilder();
                sb.AppendFormat("SoapException Message= {0}.", ex.Message);
                sb.AppendFormat("SoapException Category:Code:Message= {0}.", ex.Detail.LastChild.InnerText);
                //sb.AppendFormat("SoapException XML String for all= {0}.", ex.Detail.LastChild.OuterXml);
                _logger.Error(string.Format("Error while getting Fedex shipment tracking info - {0}", trackingNumber), new Exception(sb.ToString()));
            }
            catch (Exception exc)
            {
                _logger.Error(string.Format("Error while getting Fedex shipment tracking info - {0}", trackingNumber), exc);
            }
            return result;
        }