Пример #1
0
        /// <summary>Interroga TXTango e ritorna un evento contenente lo stato del viaggio.
        /// Si occupa inoltre di salvare le date di inizio e fine viaggio quanto occorrono i rispettivi eventi.</summary>
        /// <param name="login">L'oggetto login da inviare a TXTango per l'autenticazione della richiesta.</param>
        /// <returns>Eventi</returns>
        public Eventi TXGetStatus(TXTango.Login login)
        {
            // richiedo a TXTango lo stato del viaggio
            PlanningSelection     planningSelection = new PlanningSelection();
            PlanningItemSelection itemSelection     = new PlanningItemSelection();

            itemSelection.PlanningSelectionType = enumPlanningItemSelectionType.TRIP;
            itemSelection.ID       = ConfigurationManager.AppSettings["TXTANGO_ID_PREFIX"] + this.Id;
            planningSelection.Item = itemSelection;
            ServiceSoapClient service = new ServiceSoapClient();
            GetPlanningResult result  = service.Get_Planning(login, planningSelection);

            // creo e ritorno l'evento relativo allo stato di viaggio
            Eventi evento = new Eventi();

            evento.SyncData    = DateTime.Now;
            evento.SyncTask    = ConfigurationManager.AppSettings["TXTANGO_TASK_GET_STATUS"];
            evento.SyncTipo    = ConfigurationManager.AppSettings["TXTEMP_FROM_TXTANGO"];
            evento.XmlRequest  = Serializer.SerializeObject(planningSelection, SerializationType.XML);
            evento.XmlResponse = Serializer.SerializeObject(result, SerializationType.XML);

            if (result.Errors.Length > 0)
            {
                log.Error("Errore TXTango: " + result.Errors[0].ErrorCode.ToString());
                evento.SyncStato = ConfigurationManager.AppSettings["TXTEMP_STATO_ERRORE"];
                evento.Note      = "Vedi XmlResponse per i dettagli sugli errori.";
            }
            else
            {
                // se il viaggio è partito registro la data di inizio viaggio
                if (result.ItemSelection.Trips[0].Status.ToString() == ConfigurationManager.AppSettings["TXTANGO_STATO_BUSY"])
                {
                    this.DataInizio = result.ItemSelection.Trips[0].StartDate.Value;
                    this.Update();
                }

                // se il viaggio è terminato registro la data di fine viaggio
                if (result.ItemSelection.Trips[0].Status.ToString() == ConfigurationManager.AppSettings["TXTANGO_STATO_FINISHED"])
                {
                    this.DataFine = result.ItemSelection.Trips[0].EndDate.Value;
                    this.Update();
                }

                evento.SyncStato = ConfigurationManager.AppSettings["TXTEMP_STATO_SINCRONIZZATO"];
                evento.Stato     = result.ItemSelection.Trips[0].Status.ToString();
                if (evento.Stato == ConfigurationManager.AppSettings["TXTANGO_STATO_FINISHED"])
                {
                    evento.Data = this.DataFine;
                }
                else if (this.DataInizio != DateTime.MinValue)
                {
                    evento.Data = this.DataInizio;
                }
            }

            return(evento);
        }
Пример #2
0
        /// <summary>Interroga TXTango e ritorna un evento contenente lo stato della spedizione.</summary>
        /// <param name="login">L'oggetto login da inviare a TXTango per l'autenticazione della richiesta.</param>
        /// <returns>Eventi</returns>
        public Eventi TXGetStatus(TXTango.Login login)
        {
            PlanningSelection     planningSelection = new PlanningSelection();
            PlanningItemSelection itemSelection     = new PlanningItemSelection();

            itemSelection.PlanningSelectionType = enumPlanningItemSelectionType.PLACE;
            itemSelection.ID = ConfigurationManager.AppSettings["TXTANGO_ID_PREFIX"] + this.Id;
            //itemSelection.ParentID = ConfigurationManager.AppSettings["TXTANGO_ID_PREFIX"] + this.Viaggio.Id;
            planningSelection.Item = itemSelection;
            ServiceSoapClient service = new ServiceSoapClient();
            GetPlanningResult result  = service.Get_Planning(login, planningSelection);

            Eventi evento = new Eventi();

            evento.XmlRequest  = Serializer.SerializeObject(planningSelection, SerializationType.XML);
            evento.XmlResponse = Serializer.SerializeObject(result, SerializationType.XML);
            if (result.Errors.Length > 0)
            {
                log.Error("Errore TXTango: " + result.Errors[0].ErrorCode.ToString());
                evento.Stato     = "";
                evento.SyncStato = ConfigurationManager.AppSettings["TXTEMP_STATO_ERRORE"];
                evento.Note      = "Vedi XmlResponse per i dettagli sugli errori";
            }
            else
            {
                evento.Stato = result.ItemSelection.Places[0].Status.ToString();
                if (evento.Stato == ConfigurationManager.AppSettings["TXTANGO_STATO_FINISHED"])
                {
                    evento.Data = result.ItemSelection.Places[0].EndDate.Value;
                }
                evento.SyncStato = ConfigurationManager.AppSettings["TXTEMP_STATO_SINCRONIZZATO"];
            }
            evento.SyncData = DateTime.Now;
            evento.SyncTask = ConfigurationManager.AppSettings["TXTANGO_TASK_GET_STATUS"];
            evento.SyncTipo = ConfigurationManager.AppSettings["TXTEMP_FROM_TXTANGO"];

            return(evento);
        }