Пример #1
0
        /// <summary>Seleziona su TXTemp le spedizioni da sincronizzare su TXTango, le Inserice|Modifica|Elimina su TXTango e registra l' evento su TXTemp.</summary>
        /// <returns>void</returns>
        public static int SyncSpedizioni()
        {
            int          spedizioniSincronizzate = 0;
            Eventi       evento     = null;
            TXSpedizioni spedizione = null;

            // estraggo le spedizioni da mandare a TXTango
            List <TXPianificazioni> spedizioniPianificate = TXPianificazioni.TXTango_GetPianificazioniToSync(TipoPianificazione.SPEDIZIONE);

            // sincronizzo le spedizioni su TXTango
            for (int i = 0; i < spedizioniPianificate.Count; i++)
            {
                spedizione = new TXSpedizioni(spedizioniPianificate[i].IdViaggio, spedizioniPianificate[i].IdSpedizione);
                if (spedizioniPianificate[i].SyncTask == ConfigurationManager.AppSettings["TXTANGO_TASK_INSERT"])
                {
                    evento = spedizione.TXInsert(Login);
                }
                else if (spedizioniPianificate[i].SyncTask == ConfigurationManager.AppSettings["TXTANGO_TASK_UPDATE"] && spedizioniPianificate[i].Stato != ConfigurationManager.AppSettings["TXTANGO_STATO_BUSY"])
                {
                    evento = spedizione.TXUpdate(Login);
                }
                else if (spedizioniPianificate[i].SyncTask == ConfigurationManager.AppSettings["TXTANGO_TASK_DELETE"] && spedizioniPianificate[i].Stato != ConfigurationManager.AppSettings["TXTANGO_STATO_BUSY"])
                {
                    evento = spedizione.TXDelete(Login);
                }

                // registro l'evento
                if (evento != null)
                {
                    evento.IdPianificazione = spedizioniPianificate[i].Id;
                    evento.Insert();
                    // registro lo stato della pianificazione
                    spedizioniPianificate[i].Stato     = evento.Stato;
                    spedizioniPianificate[i].SyncStato = evento.SyncStato;
                    spedizioniPianificate[i].SyncTask  = null;
                    spedizioniPianificate[i].SyncData  = evento.SyncData;
                    spedizioniPianificate[i].Update();

                    spedizioniSincronizzate++;
                }
            }

            return(spedizioniSincronizzate);
        }
Пример #2
0
        /// <summary>Seleziona su TXTemp le spedizioni aperte (non concluse) su TXTango, interrogga TXTango, aggiorna le spedizioni e registra l'evento su TXTemp.
        /// Se abilitata invia una notifica via mail al responsabile del viaggio quando la spedizione è terminata.</summary>
        /// <returns>void</returns>
        public static int SyncSpedizioni()
        {
            int spedizioniSincronizzate = 0;

            List <TXPianificazioni> spedizioniPianificate = TXPianificazioni.TXTemp_GetPianificazioniToSync(TipoPianificazione.SPEDIZIONE);
            TXSpedizioni            spedizione            = null;

            for (int i = 0; i < spedizioniPianificate.Count; i++)
            {
                spedizione = new TXSpedizioni(spedizioniPianificate[i].IdViaggio, spedizioniPianificate[i].IdSpedizione);
                Eventi evento = spedizione.TXGetStatus(Login);

                // se lo stato è cambiato registro l'evento e aggiorno la spedizione
                if (spedizioniPianificate[i].Stato != evento.Stato)
                {
                    evento.IdPianificazione = spedizioniPianificate[i].Id;
                    evento.Insert();
                    spedizioniPianificate[i].Stato    = evento.Stato;
                    spedizioniPianificate[i].SyncData = evento.SyncData;
                    spedizioniPianificate[i].Update();
                }

                // se la spedizione è conclusa invio una notifica
                if (spedizioniPianificate[i].Stato == ConfigurationManager.AppSettings["TXTANGO_STATO_FINISHED"])
                {
                    Boolean  notificationsEnabled = Convert.ToBoolean(ConfigurationManager.AppSettings["ENABLE_EMAIL_NOTIFICATIONS"]);
                    TXViaggi viaggio = new TXViaggi(spedizione.IdViaggio);
                    if (notificationsEnabled && viaggio.MailUtenteCompetenza.Trim() != "")
                    {
                        try {
                            List <string> addresses = new List <string>();
                            addresses.Add(viaggio.MailUtenteCompetenza);
                            string subject = "Spedizione nr. " + spedizione.KeySpedizione + " conclusa.";
                            string body    = "<strong>DATI SPEDIZIONE:</strong><br/><br/>";
                            body += "Viaggio nr: " + viaggio.KeyViaggio + "<br/>";
                            body += "Spedizione nr: " + spedizione.KeySpedizione + "<br/>";
                            body += "Mittente: " + spedizione.MittenteRagSoc + "<br/>";
                            body += "Destinatario: " + spedizione.DestinazioneRagSoc + "<br/>";
                            body += "Destinazione: " + spedizione.DestinazioneIndirizzo.Trim() + ", " + spedizione.DestinazioneCAP.Trim() + " " + spedizione.DestinazioneLocalita.Trim() + " (" + spedizione.DestinazioneProvincia.Trim() + "), " + spedizione.DestinazioneNazione.Trim() + "<br/>";
                            if (spedizione.Tipo == ConfigurationManager.AppSettings["TXTEMP_SPEDIZIONE_RITIRO"])
                            {
                                body += "Tipo: ORDINE DI RITIRO<br/>";
                            }
                            else
                            {
                                body += "Tipo: CONSEGNA<br/>";
                            }
                            body += "Colli: " + spedizione.Colli + "<br/>";
                            body += "Peso: " + spedizione.Peso + "<br/>";
                            body += "Volume: " + spedizione.Volume + "<br/><br/>";
                            body += "Stato: CONCLUSA<br/>";
                            body += "Data Evento: " + evento.Data.Value.ToString("dd/MM/yyyy HH:mm:ss") + "<br/>";

                            Mailer.SendMail(addresses, subject, body);
                        } catch (Exception ex) {
                            log.Error(ex.Message, ex);
                        }
                    }
                }

                spedizioniSincronizzate++;
            }

            return(spedizioniSincronizzate);
        }