Пример #1
0
        //UPDATE
        public bool update(Eventi evento, string connectString)
        {
            bool esito = false;

            using (SqlConnection connection = new SqlConnection(connectString))
            {
                using (SqlCommand dbCMD = new SqlCommand())
                {
                    try
                    {
                        dbCMD.CommandType = System.Data.CommandType.Text;
                        dbCMD.Connection  = connection;
                        dbCMD.CommandText = string.Format(Query.updateEvento, evento.id_Componente_FK, evento.id_Profondita_FK, evento.DataEvento, evento.Messaggio, evento.StackTrace, evento.MetodoEvocatore, evento.id);
                        connection.Open();
                        esito = dbCMD.ExecuteNonQuery() > 0;
                    }
                    catch (Exception)
                    {
                        throw;
                    }
                    finally
                    {
                        connection.Close();
                    }
                }
            }
            return(esito);
        }
Пример #2
0
 private void SelezionaEvento_Load(object sender, EventArgs e)
 {
     foreach (Evento ev in Eventi.GetInstance().GetEventiFuturi())
     {
         _comboBoxEventoDaModificare.Items.Add(ev);
     }
 }
Пример #3
0
        /// <summary>Cancella il viaggio da TXTango e ritorna l'evento relativo all'eliminazione.</summary>
        /// <param name="login">L'oggetto login da inviare a TXTango per l'autenticazione della richiesta.</param>
        /// <returns>Eventi</returns>
        public Eventi TXDelete(TXTango.Login login)
        {
            PlanningItemSelection planning = new PlanningItemSelection();

            planning.PlanningSelectionType = enumPlanningItemSelectionType.TRIP;
            planning.ID = ConfigurationManager.AppSettings["TXTANGO_ID_PREFIX"] + this.Id;
            ServiceSoapClient service = new ServiceSoapClient();
            ExecutionResult   result  = service.Cancel_Planning(login, planning);
            Eventi            evento  = new Eventi();

            evento.SyncData = DateTime.Now;
            evento.SyncTask = ConfigurationManager.AppSettings["TXTANGO_TASK_DELETE"];
            evento.SyncTipo = ConfigurationManager.AppSettings["TXTEMP_TO_TXTANGO"];
            if (result.Errors.Length > 0)
            {
                log.Error("Errore TXTango: " + result.Errors[0].ErrorCode.ToString());
                evento.Stato     = ConfigurationManager.AppSettings["TXTANGO_STATO_NOT_DELIVERED"];
                evento.SyncStato = ConfigurationManager.AppSettings["TXTEMP_STATO_ERRORE"];
                evento.Note      = "Vedi XmlResponse per i dettagli sugli errori";
            }
            else
            {
                evento.Stato     = ConfigurationManager.AppSettings["TXTANGO_STATO_CANCELED"];
                evento.SyncStato = ConfigurationManager.AppSettings["TXTEMP_STATO_SINCRONIZZATO"];
                // setto a "CANCELED anche tutte le spedizioni)
                this.CancellaSpedizioni();
            }
            evento.XmlRequest  = Serializer.SerializeObject(planning, SerializationType.XML);
            evento.XmlResponse = Serializer.SerializeObject(result, SerializationType.XML);

            return(evento);
        }
Пример #4
0
        /// <summary>Invia il viaggio a TXTango e ritorna l'evento relativo all'aggiornamento.</summary>
        /// <param name="login">L'oggetto login da inviare a TXTango per l'autenticazione della richiesta.</param>
        /// <returns>Eventi</returns>
        public Eventi TXUpdate(TXTango.Login login)
        {
            PlanningInsert       planning = this.TXCreateObject();
            ServiceSoapClient    service  = new ServiceSoapClient();
            PlanningResultInsert result   = service.Update_Planning(login, planning);

            Eventi evento = new Eventi();

            evento.SyncData = DateTime.Now;
            evento.SyncTask = ConfigurationManager.AppSettings["TXTANGO_TASK_INSERT"];
            evento.SyncTipo = ConfigurationManager.AppSettings["TXTEMP_TO_TXTANGO"];
            if (result.Errors.Length > 0)
            {
                log.Error("Errore TXTango: " + result.Errors[0].ErrorCode.ToString());
                evento.Stato     = ConfigurationManager.AppSettings["TXTANGO_STATO_NOT_DELIVERED"];
                evento.SyncStato = ConfigurationManager.AppSettings["TXTEMP_STATO_ERRORE"];
                evento.Note      = "Vedi XmlResponse per i dettagli sugli errori";
            }
            else
            {
                evento.Stato     = ConfigurationManager.AppSettings["TXTANGO_STATO_DELIVERED"];
                evento.SyncStato = ConfigurationManager.AppSettings["TXTEMP_STATO_SINCRONIZZATO"];
            }
            evento.XmlRequest  = Serializer.SerializeObject(planning, SerializationType.XML);
            evento.XmlResponse = Serializer.SerializeObject(result, SerializationType.XML);

            return(evento);
        }
Пример #5
0
        /// <summary>Seleziona su TXTemp i viaggi attivi (non conclusi), interrogga TXTango, aggiorna i viaggi e registra l'evento su TXTemp.</summary>
        /// <returns>void</returns>
        public static int SyncViaggi()
        {
            int viaggiSincronizzati = 0;

            List <TXPianificazioni> viaggiPianificati = TXPianificazioni.TXTemp_GetPianificazioniToSync(TipoPianificazione.VIAGGIO);
            TXViaggi viaggio = null;

            for (int i = 0; i < viaggiPianificati.Count; i++)
            {
                viaggio = new TXViaggi(viaggiPianificati[i].IdViaggio);
                Eventi evento = viaggio.TXGetStatus(Login);

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

                viaggiSincronizzati++;
            }

            return(viaggiSincronizzati);
        }
Пример #6
0
        public ActionResult DeleteConfirmed(int id)
        {
            Eventi eventi = db.Eventis.Find(id);

            db.Eventis.Remove(eventi);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Пример #7
0
        /// <summary>Interroga TXTango riguardo ai consumi (+ velocità media e ore di guida), aggiorna nel database la tabella "Viaggi" e ritorna un evento contenente lo stato del viaggio impostato a "CLOSED".</summary>
        /// <param name="login">L'oggetto login da inviare a TXTango per l'autenticazione della richiesta.</param>
        /// <returns>Eventi</returns>
        public Eventi TXGetConsumptionReport(TXTango.Login login)
        {
            // se non sono presenti le date di inizio e fine viaggio non posso ricavare correttamente i consumi del viaggio
            if (this.DataInizio == DateTime.MinValue || this.DataFine == DateTime.MinValue)
            {
                throw new Exception("Impossibile ricavare i consumi poichè non sono presenti le date di inizio o fine viaggio. IdViaggio: " + this.Id + " KeyViaggio: " + this.KeyViaggio);
            }

            ServiceSoapClient service = new ServiceSoapClient();

            // chiamata per i consumi
            ConsumptionReportSelection reportSelection = new ConsumptionReportSelection();

            reportSelection.DateTimeRangeSelection = new DateTimeRangeSelection()
            {
                StartDate = (DateTime)this.DataInizio, EndDate = this.DataFine
            };
            reportSelection.Drivers    = new Identifier[1];
            reportSelection.Drivers[0] = new Identifier()
            {
                IdentifierType = enumIdentifierType.TRANSICS_ID, Id = this.CodiceAutista
            };
            reportSelection.SummaryLevel = SummaryLevel.OnlyTotal;
            GetConsumptionReportResult result = service.Get_ConsumptionReport(login, reportSelection);

            Eventi evento = new Eventi();

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

            if (result.Errors.Length == 0)
            {
                if (result.ConsumptionReportItems.Length > 0)
                {
                    this.ConsumoLt     = (result.ConsumptionReportItems[0].Consumption_Total != null) ? result.ConsumptionReportItems[0].Consumption_Total.Value : 0;
                    this.VelocitaMedia = (result.ConsumptionReportItems[0].Speed_Avg != null) ? result.ConsumptionReportItems[0].Speed_Avg.Value : 0;
                    this.OreGuida      = (result.ConsumptionReportItems[0].Duration_Driving != null) ? result.ConsumptionReportItems[0].Duration_Driving.Value : 0;
                    this.Update();
                }
                else
                {
                    evento.Note = "Nessuna informazione pervenuta da TXTango.";
                }
                evento.SyncStato = ConfigurationManager.AppSettings["TXTEMP_STATO_SINCRONIZZATO"];
            }
            else
            {
                log.Error("Errore TXTango: " + result.Errors[0].ErrorCode.ToString());
                evento.SyncStato = ConfigurationManager.AppSettings["TXTEMP_STATO_ERRORE"];
                evento.Note      = "Vedi Xml Response per i dettagli sugli errori.";
            }

            return(evento);
        }
Пример #8
0
        private void AnnullaEvento_Load(object sender, EventArgs e)
        {
            List <String> s = new List <String>();

            foreach (Evento ev in Eventi.GetInstance().GetEventiFuturi())
            {
                _comboBoxEventoDaAnnullare.Items.Add(ev);
            }
        }
Пример #9
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);
        }
Пример #10
0
 public ActionResult Edit([Bind(Include = "Evento_Id,Evento")] Eventi eventi)
 {
     if (ModelState.IsValid)
     {
         db.Entry(eventi).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(eventi));
 }
Пример #11
0
        private void buttonSalva_Click(object sender, EventArgs e)
        {
            var res = MessageBox.Show("Attenzione! La cancellazione dell'evento sarà definitiva, continuare?", "Conferma Annullamento", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);

            if (res == DialogResult.Yes)
            {
                Eventi.GetInstance().RemoveEvento((Evento)_comboBoxEventoDaAnnullare.SelectedItem);
                this.Hide();
            }
        }
Пример #12
0
        public ActionResult Create([Bind(Include = "Evento_Id,Evento")] Eventi eventi)
        {
            if (ModelState.IsValid)
            {
                db.Eventis.Add(eventi);
                db.SaveChanges();
                return(RedirectToAction("Create", "Documentis"));
            }

            return(View(eventi));
        }
Пример #13
0
 private void _buttonSalva_Click(object sender, EventArgs e)
 {
     try
     {
         Eventi.GetInstance().AddEvento(partita);
         MessageBox.Show("Evento Salvato");
         this.Hide();
     }
     catch (ArgumentException ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
Пример #14
0
        // GET: Eventis/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Eventi eventi = db.Eventis.Find(id);

            if (eventi == null)
            {
                return(HttpNotFound());
            }
            return(View(eventi));
        }
Пример #15
0
        public ActionResult Edit([Bind(Include = "Evento_Id,Vendita,Didattica,Corso,Titolo,Evidenza,Counseling,Credits,Casa,Data,Archivio,DescrizioneB,Città", Exclude = "Descrizione,Regia,Partecipazioni")] Eventi eventi)
        {
            FormCollection collection = new FormCollection(Request.Unvalidated().Form);

            eventi.Descrizione    = collection["Descrizione"];
            eventi.Regia          = collection["Regia"];
            eventi.Partecipazioni = collection["Partecipazioni"];
            if (ModelState.IsValid)
            {
                db.Entry(eventi).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            return(View(eventi));
        }
Пример #16
0
        public ActionResult DeleteImg(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ViewBag.File = Request.QueryString["file"];
            Eventi eventi = db.Eventis.Find(id);

            if (eventi == null)
            {
                return(HttpNotFound());
            }
            return(View(eventi));
        }
Пример #17
0
        public static int ReportViaggi()
        {
            int reportViaggi = 0;

            List <TXPianificazioni> viaggiPianificati = TXPianificazioni.TXTemp_GetPianificazioniToReport();
            TXViaggi viaggio = null;
            Eventi   evento  = null;

            for (int i = 0; i < viaggiPianificati.Count; i++)
            {
                viaggio = new TXViaggi(viaggiPianificati[i].IdViaggio);

                // report delle distanze percorse
                evento = viaggio.TXGetDistanceReport(Login);
                evento.IdPianificazione = viaggiPianificati[i].Id;
                evento.Insert();

                // report dei consumi
                evento = viaggio.TXGetConsumptionReport(Login);
                evento.IdPianificazione = viaggiPianificati[i].Id;
                evento.Insert();

                // report dei costi
                evento = viaggio.TXGetCostReport(Login);
                evento.IdPianificazione = viaggiPianificati[i].Id;
                evento.Insert();

                // report dei rifornimenti
                evento = viaggio.TXGetRefuelReport(Login);
                evento.IdPianificazione = viaggiPianificati[i].Id;
                evento.Insert();

                // report dei transiti attraversati
                evento = viaggio.TXGetTransitsReport(Login);
                evento.IdPianificazione = viaggiPianificati[i].Id;
                evento.Insert();

                // chiudo la pianificazione (stato = closed)
                viaggiPianificati[i].Stato     = ConfigurationManager.AppSettings["TXTANGO_STATO_CLOSED"];
                viaggiPianificati[i].SyncStato = ConfigurationManager.AppSettings["TXTEMP_STATO_SINCRONIZZATO"];;
                viaggiPianificati[i].SyncData  = DateTime.Now;
                viaggiPianificati[i].Update();

                reportViaggi++;
            }

            return(reportViaggi);
        }
Пример #18
0
        // GET: Eventis/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Eventi eventi = db.Eventis.Find(id);

            if (eventi == null)
            {
                return(HttpNotFound());
            }
            var eventoRuoli = db.EventiRuolis.Where(e => e.Evento_Id == id);

            ViewBag.EventoRuoli = eventoRuoli;
            return(View(eventi));
        }
Пример #19
0
        /// <summary>Seleziona su TXTemp i viaggi da sincronizzare su TXTango, li Inserisce|Modifica|Elimina su TXTango e registra l' evento su TXTemp.</summary>
        /// <returns>void</returns>
        public static int SyncViaggi()
        {
            int      viaggiSincronizzati = 0;
            Eventi   evento  = null;
            TXViaggi viaggio = null;

            // estraggo i viaggi da mandare a TXTango
            List <TXPianificazioni> viaggiPianificati = TXPianificazioni.TXTango_GetPianificazioniToSync(TipoPianificazione.VIAGGIO);

            // sincronizzo i viaggi su TXTango
            for (int i = 0; i < viaggiPianificati.Count; i++)
            {
                viaggio = new TXViaggi(viaggiPianificati[i].IdViaggio);

                if (viaggiPianificati[i].SyncTask == ConfigurationManager.AppSettings["TXTANGO_TASK_INSERT"])
                {
                    evento = viaggio.TXInsert(Login);
                }
                else if (viaggiPianificati[i].SyncTask == ConfigurationManager.AppSettings["TXTANGO_TASK_UPDATE"] && viaggiPianificati[i].Stato != ConfigurationManager.AppSettings["TXTANGO_STATO_BUSY"])
                {
                    evento = viaggio.TXUpdate(Login);
                }
                else if (viaggiPianificati[i].SyncTask == ConfigurationManager.AppSettings["TXTANGO_TASK_DELETE"] && viaggiPianificati[i].Stato != ConfigurationManager.AppSettings["TXTANGO_STATO_BUSY"])
                {
                    evento = viaggio.TXDelete(Login);
                }

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

                    viaggiSincronizzati++;
                }
            }

            return(viaggiSincronizzati);
        }
Пример #20
0
        public ActionResult Credits(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var immagini = Directory.GetFiles(Server.MapPath("/Content/Immagini/Eventi/" + id + "/"));

            ViewBag.Immagini = immagini.ToList();
            Eventi credits = db.Eventis.Find(id);

            if (credits == null)
            {
                return(HttpNotFound());
            }

            return(View(credits));
        }
Пример #21
0
        private void aggiorna()
        {
            BindingSource bindingSourceEventi = new BindingSource();

            bindingSourceEventi.AllowNew   = false;
            bindingSourceEventi.DataSource = Eventi.GetInstance().GetEventiFuturi();
            _dataGridViewEventi.DataSource = bindingSourceEventi;
            BindingSource bindingSourceLavori = new BindingSource();

            bindingSourceLavori.AllowNew   = false;
            bindingSourceLavori.DataSource = Impianto.GetInstance().Lavori;
            _dataGridViewLavoro.DataSource = bindingSourceLavori;
            BindingSource bindingSourceSettori = new BindingSource();

            bindingSourceSettori.AllowNew   = false;
            bindingSourceSettori.DataSource = Impianto.GetInstance().Settori;
            _dataGridViewSettori.DataSource = bindingSourceSettori;
        }
Пример #22
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);
        }
Пример #23
0
 static void Main(string[] args)
 {
     Impianto.GetInstance().Load();
     #region Stampe Impianto
     //foreach (Settore s in Impianto.GetInstance().Settori)
     //    Console.WriteLine(s);
     //foreach (Lavoro l in Impianto.GetInstance().Lavori)
     //    Console.WriteLine(l);
     #endregion
     PersonaleFactory.Load();
     #region Stampe Personale
     //Console.WriteLine("Numero Coordinatori: " + PersonaleFactory.GetPersonaleQualificato(Qualifica.Coordinatore).Count);
     //Console.WriteLine("Numero Capi Unita: " + (PersonaleFactory.GetPersonaleQualificato(Qualifica.CapoUnita).Count -
     //    PersonaleFactory.GetPersonaleQualificato(Qualifica.Coordinatore).Count));
     //Console.WriteLine("Numero Steward: " + (PersonaleFactory.GetPersonaleQualificato(Qualifica.Steward).Count -
     //    PersonaleFactory.GetPersonaleQualificato(Qualifica.CapoUnita).Count));
     //foreach (IPersonale p in PersonaleFactory.GetTuttoPersonale())
     //    Console.WriteLine(p);
     #endregion
     MansioneFactory.Load();
     #region Stampe Mansione
     //foreach (Mansione m in MansioneFactory.GetMansioni())
     //{
     //    Console.WriteLine(m);
     //    foreach (RetribuzioneMansione rm in m.Retribuzioni)
     //        Console.WriteLine(rm);
     //}
     #endregion
     Eventi.GetInstance().Load();
     #region Stampe Eventi
     //foreach (Evento e in Eventi.GetInstance().ListaEventi)
     //    Console.WriteLine(e);
     #endregion
     Pagamenti.GetInstance().Load();
     #region Stampe Pagamenti
     //foreach (Pagamento p in Pagamenti.GetInstance().ListaPagamenti)
     //   Console.WriteLine(p);
     #endregion
     Application.EnableVisualStyles();
     Application.SetCompatibleTextRenderingDefault(false);
     Application.Run(new Form1());
 }
Пример #24
0
        public ActionResult Create([Bind(Include = "Evento_Id,Vendita,Didattica,Corso,Titolo,Evidenza,Counseling,Credits,Casa,Data,Archivio,DescrizioneB,Città", Exclude = "Descrizione,Regia,Partecipazioni")] Eventi eventi)
        {
            FormCollection collection = new FormCollection(Request.Unvalidated().Form);

            eventi.Descrizione    = collection["Descrizione"];
            eventi.Regia          = collection["Regia"];
            eventi.Partecipazioni = collection["Partecipazioni"];
            if (ModelState.IsValid)
            {
                db.Eventis.Add(eventi);
                db.SaveChanges();
                if (!Directory.Exists(Server.MapPath("~/Content/Immagini/Eventi/" + eventi.Evento_Id)))
                {
                    Directory.CreateDirectory(Server.MapPath("~/Content/Immagini/Eventi/" + eventi.Evento_Id));
                }
                return(RedirectToAction("Index"));
            }

            return(View(eventi));
        }
Пример #25
0
        public Eventi GetEventoByDateEvent(DateTime dataEvento, string connectString)
        {
            Eventi evento = new Eventi();

            using (SqlConnection connection = new SqlConnection(connectString))
            {
                using (SqlCommand dbCMD = new SqlCommand())
                {
                    try
                    {
                        dbCMD.CommandType = System.Data.CommandType.Text;
                        dbCMD.Connection  = connection;
                        dbCMD.CommandText = string.Format(Query.GetEventoByDateEvent, dataEvento);
                        connection.Open();
                        using (var reader = dbCMD.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                evento.id = reader.GetInt32(0);
                                evento.id_Componente_FK = reader.GetInt32(1);
                                evento.id_Profondita_FK = reader.GetInt32(2);
                                evento.DataEvento       = reader.GetDateTime(3);
                                evento.Messaggio        = reader.GetString(4);
                                evento.StackTrace       = reader.GetString(5);
                                evento.MetodoEvocatore  = reader.GetString(6);
                            }
                        }
                    }
                    catch (Exception)
                    {
                        throw;
                    }
                    finally
                    {
                        connection.Close();
                    }
                }
            }
            return(evento);
        }
Пример #26
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);
        }
Пример #27
0
        async Task ExecuteLoadItemsCommand()
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;

            try
            {
                Eventi.Clear();
                ICollection <EventoDtoOutput> listaEventi;

                //HttpClient httpClient = new HttpClient();
                //httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", Api.ApiHelper.GetToken());
                //AmiciClient amiciClient = new AmiciClient(httpClient);
                //UserInfoDto userInfo = await amiciClient.GetUserInfoByIdUsersAsync(UserId);

                EventoClient eventoClient = new EventoClient(await Api.ApiHelper.GetApiClient());
                listaEventi = await eventoClient.GetEventiByidUtenteAsync(1, 1000, UserId.ToString(), null);

                foreach (var evento in listaEventi)
                {
                    Eventi.Add(evento);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
            finally
            {
                IsBusy = false;
            }
        }
Пример #28
0
        /// <summary>Interroga TXTango, inserisce una nota spesa per ogni transito a pagamento attraversato sul percorso, e ritorna un evento contenente lo stato del viaggio impostato a "CLOSED".</summary>
        /// <param name="login">L'oggetto login da inviare a TXTango per l'autenticazione della richiesta.</param>
        /// <returns>Eventi</returns>
        public Eventi TXGetTransitsReport(TXTango.Login login)
        {
            // se non sono presenti le date di inizio e fine viaggio non posso ricavare correttamente i transiti attraversati
            // (si rischia di registrare nuovamente le spese di un viaggio antecedente).
            if (this.DataInizio == DateTime.MinValue || this.DataFine == DateTime.MinValue)
            {
                throw new Exception("Impossibile ricavare i transiti poichè non sono presenti le date di inizio o fine viaggio. IdViaggio: " + this.Id + " KeyViaggio: " + this.KeyViaggio);
            }

            // preparo l'evento da ritornare
            Eventi evento = new Eventi();

            evento.Stato     = ConfigurationManager.AppSettings["TXTANGO_STATO_CLOSED"];
            evento.SyncStato = ConfigurationManager.AppSettings["TXTEMP_STATO_SINCRONIZZATO"];
            evento.SyncData  = DateTime.Now;
            evento.SyncTipo  = ConfigurationManager.AppSettings["TXTEMP_FROM_TXTANGO"];
            evento.SyncTask  = ConfigurationManager.AppSettings["TXTANGO_TASK_GET_TRANSITS"];

            // ricavo le tariffe dei transiti
            List <TXTariffeTransiti> tariffeTransiti = TXTariffeTransiti.GetTariffeTransiti();

            // per ogni tariffa controllo se il viaggio ha attraversato il transito nel suo percorso e aggiunto la relativa nota spesa
            int transitiCalcolati               = 0;
            int erroriGeolocalizzazione         = 0;
            PositionAreaSelection areaSelection = null;
            ServiceSoapClient     service       = new ServiceSoapClient();
            GetPositionAreaResult result        = null;
            NoteSpese             notaSpesa     = null;

            for (int i = 0; i < tariffeTransiti.Count; i++)
            {
                // controllo che il tansito sia geolocalizzato
                try {
                    if (tariffeTransiti[i].GeoCoordinate == "")
                    {
                        tariffeTransiti[i].GeoLocalizzaTransito();
                    }
                } catch (GeocodingException ex) {
                    erroriGeolocalizzazione++;

                    // loggo l'errore
                    log.Error(ex.Message, ex);

                    // invio una mail al responsabile del viaggio per avvertirlo che il transito non è geocodificabile
                    Boolean notificationsEnabled = Convert.ToBoolean(ConfigurationManager.AppSettings["ENABLE_EMAIL_NOTIFICATIONS"]);
                    if (notificationsEnabled && this.MailUtenteCompetenza.Trim() != "")
                    {
                        try {
                            List <string> addresses = new List <string>();
                            addresses.Add(this.MailUtenteCompetenza);
                            string subject = "Errore geolocalizzazione transito.";
                            string body    = "<strong>Attenzione:<br/>Si è verificato un errore nel tentativo di geolocalizzare il transito in oggetto.<br/>"
                                             + "Si consiglia di verificare e correggere i dati di localizzazione.</strong><br/><br/>"
                                             + "DATI TRANSITO:<br/>"
                                             + "Nome: " + tariffeTransiti[i].Nome + "<br/>"
                                             + "Indirizzo: " + tariffeTransiti[i].Indirizzo + "<br/>"
                                             + "Cap: " + tariffeTransiti[i].Cap + "<br/>"
                                             + "Citta: " + tariffeTransiti[i].Citta + "<br/>"
                                             + "Provincia: " + tariffeTransiti[i].Provincia + "<br/>"
                                             + "Nazione: " + tariffeTransiti[i].Nazione + "<br/>"
                                             + "Prezzo: " + tariffeTransiti[i].Prezzo + "<br/>"
                                             + "Valuta: " + tariffeTransiti[i].Valuta + "<br/>";
                            Mailer.SendMail(addresses, subject, body);
                        } catch (Exception e) {
                            log.Error(e.Message, e);
                        }
                    }
                }

                // chiedo a TXTango se il viaggio ha attraversato il transito
                if (tariffeTransiti[i].GeoCoordinate != null && tariffeTransiti[i].GeoCoordinate != "")
                {
                    areaSelection = new PositionAreaSelection();
                    areaSelection.DateTimeRange = new DateTimeRangeSelection()
                    {
                        StartDate = (DateTime)this.DataInizio, EndDate = this.DataFine
                    };
                    areaSelection.Driver = new Identifier()
                    {
                        IdentifierType = enumIdentifierType.TRANSICS_ID, Id = this.CodiceAutista
                    };
                    areaSelection.Vehicle = new IdentifierVehicle()
                    {
                        IdentifierVehicleType = enumIdentifierVehicleType.TRANSICS_ID, Id = this.CodiceMezzo
                    };
                    double latitude  = Convert.ToDouble(tariffeTransiti[i].GeoCoordinate.Split(',')[0].Replace('.', ','));
                    double longitude = Convert.ToDouble(tariffeTransiti[i].GeoCoordinate.Split(',')[1].Replace('.', ','));
                    areaSelection.Position = new Position()
                    {
                        Latitude = latitude, Longitude = longitude
                    };
                    areaSelection.KmsAround = 2; // tolleranza sul geopunto
                    result = service.Get_Position_Area(login, areaSelection);

                    // aggiungo all'evento gli xml di richiesta e risposta
                    evento.XmlRequest  += Serializer.SerializeObject(areaSelection, SerializationType.XML);
                    evento.XmlResponse += Serializer.SerializeObject(result, SerializationType.XML);

                    // se il viaggio ha attraversato il transito aggiungo la nota spesa
                    if (result.Errors.Length == 0 && result.DateTime != null)
                    {
                        notaSpesa               = new NoteSpese();
                        notaSpesa.IdViaggio     = this.Id;
                        notaSpesa.Indirizzo     = tariffeTransiti[i].Indirizzo + ", " + tariffeTransiti[i].Cap + " " + tariffeTransiti[i].Citta + ", " + tariffeTransiti[i].Provincia + " " + tariffeTransiti[i].Nazione;
                        notaSpesa.Tipo          = "COST";
                        notaSpesa.Codice        = "Transit";
                        notaSpesa.Descrizione   = "";
                        notaSpesa.Data          = result.DateTime.Value;
                        notaSpesa.GeoCoordinate = tariffeTransiti[i].GeoCoordinate;
                        notaSpesa.Prezzo        = tariffeTransiti[i].Prezzo;
                        notaSpesa.Valuta        = tariffeTransiti[i].Valuta;
                        notaSpesa.Insert();
                        log.Debug("transito rilevato: " + tariffeTransiti[i].Indirizzo + ", " + tariffeTransiti[i].Cap + " " + tariffeTransiti[i].Citta + ", " + tariffeTransiti[i].Provincia + " " + tariffeTransiti[i].Nazione);
                        transitiCalcolati++;
                    }
                    else
                    {
                        if (result.Errors.Length > 0)
                        {
                            log.Error("Errore TXTango: " + result.Errors[0].ErrorCode.ToString());
                        }
                        if (result.DateTime == null)
                        {
                            log.Debug("transito NON rilevato: " + tariffeTransiti[i].Indirizzo + ", " + tariffeTransiti[i].Cap + " " + tariffeTransiti[i].Citta + ", " + tariffeTransiti[i].Provincia + " " + tariffeTransiti[i].Nazione);
                        }
                    }
                }
            }

            // note evento
            evento.Note = "Individuati " + transitiCalcolati + " transiti a pagamento sul percorso del viaggio. ";
            if (erroriGeolocalizzazione != 0)
            {
                evento.Note += "Attenzione: " + erroriGeolocalizzazione + " transiti non sono geolocalizzabili, non è stato pertanto possibile verificarli ed eventualmente aggiungerli alla nota spese.";
            }

            return(evento);
        }
Пример #29
0
        /// <summary>Interroga TXTango riguardo ai rifornimenti del viaggio, inserisce nel database la note spese, e ritorna un evento contenente lo stato del viaggio impostato a "CLOSED".</summary>
        /// <param name="login">L'oggetto login da inviare a TXTango per l'autenticazione della richiesta.</param>
        /// <returns>Eventi</returns>
        public Eventi TXGetRefuelReport(TXTango.Login login)
        {
            Eventi evento = null;

            // se non sono presenti le date di inizio e fine viaggio non posso ricavare correttamente i rifornimenti
            // (si rischia di registrare nuovamente le spese di un viaggio antecedente).
            if (this.DataInizio == DateTime.MinValue || this.DataFine == DateTime.MinValue)
            {
                throw new Exception("Impossibile ricavare i rifornimenti poichè non sono presenti le date di inizio o fine viaggio. IdViaggio: " + this.Id + " KeyViaggio: " + this.KeyViaggio);
            }

            RefuelReportSelection reportSelection = new RefuelReportSelection();

            reportSelection.Vehicles    = new IdentifierVehicle[1];
            reportSelection.Vehicles[0] = new IdentifierVehicle()
            {
                IdentifierVehicleType = enumIdentifierVehicleType.TRANSICS_ID, Id = this.CodiceMezzo
            };
            reportSelection.DateTimeRangeSelection = new DateTimeRangeSelection()
            {
                StartDate = (DateTime)this.DataInizio, EndDate = this.DataFine
            };

            ServiceSoapClient service = new ServiceSoapClient();
            GetRefuelReport   result  = service.Get_RefuelReport(login, reportSelection);

            evento             = new Eventi();
            evento.Stato       = ConfigurationManager.AppSettings["TXTANGO_STATO_CLOSED"];
            evento.SyncData    = DateTime.Now;
            evento.SyncTask    = ConfigurationManager.AppSettings["TXTANGO_TASK_GET_REFUELS"];
            evento.SyncTipo    = ConfigurationManager.AppSettings["TXTEMP_FROM_TXTANGO"];
            evento.XmlRequest  = Serializer.SerializeObject(reportSelection, 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
            {
                // per ogni rifornimento creo una nota spese
                NoteSpese         notaSpesa         = null;
                TariffeCarburante tariffaCarburante = null;
                DateTime          dataRifornimento  = DateTime.MinValue;
                string            tipoCarburante    = "";
                double            litri             = 0;
                string            distributore      = "";
                string            nazione           = "";
                int costiCalcolati = 0;

                for (int i = 0; i < result.FuelReportItems.Length; i++)
                {
                    try {
                        // dati del rifornimento
                        nazione = result.FuelReportItems[i].CountryCode;
                        litri   = result.FuelReportItems[i].Quantity;
                        if (result.FuelReportItems[i].BeginDate != null)
                        {
                            dataRifornimento = result.FuelReportItems[i].BeginDate.Value;
                        }
                        if (result.FuelReportItems[i].AddressInfo != null)
                        {
                            distributore = result.FuelReportItems[i].AddressInfo.Name.ToUpper();
                        }
                        if (result.FuelReportItems[i].FuelType != null)
                        {
                            tipoCarburante = result.FuelReportItems[i].FuelType.Name.ToUpper();
                        }
                        //tipoCarburante = (tipoCarburante != "") ? tipoCarburante : "DIESEL";

                        // inizializzo la nota spesa
                        notaSpesa             = new NoteSpese();
                        notaSpesa.IdViaggio   = this.Id;
                        notaSpesa.Codice      = "Refuel";
                        notaSpesa.Tipo        = "COST";
                        notaSpesa.Data        = dataRifornimento;
                        notaSpesa.Indirizzo   = nazione;
                        notaSpesa.Descrizione = "Rifornimento Distributore: " + distributore;
                        notaSpesa.Note        = "Carburante: " + tipoCarburante + " - Litraggio: " + litri;

                        // cerco la tariffa carburante
                        tariffaCarburante = TXTariffeCarburante.GetTariffa(dataRifornimento, nazione, distributore, tipoCarburante);
                        if (tariffaCarburante != null)
                        {
                            litri            = result.FuelReportItems[i].Quantity;
                            notaSpesa.Prezzo = (litri * tariffaCarburante.PrezzoLt);
                            notaSpesa.Valuta = tariffaCarburante.Valuta;
                            costiCalcolati++;
                        }
                        else
                        {
                            // nessuna tariffa trovata
                            notaSpesa.Note = "Nessuna tariffa da applicare. " + notaSpesa.Note;
                        }

                        notaSpesa.Insert();
                    } catch (Exception ex) {
                        log.Error(ex.Message, ex);
                    }
                }

                evento.SyncStato = ConfigurationManager.AppSettings["TXTEMP_STATO_SINCRONIZZATO"];
                evento.Note      = "Rifornimenti effettuati: " + result.FuelReportItems.Length + " Costi Automaticamente Calcolati: " + costiCalcolati + ".";
            }

            return(evento);
        }
Пример #30
0
        /// <summary>Interroga TXTango riguardo ai costi del viaggio, inserisce nel database le note spese, e ritorna un evento contenente lo stato del viaggio impostato a "CLOSED".</summary>
        /// <param name="login">L'oggetto login da inviare a TXTango per l'autenticazione della richiesta.</param>
        /// <returns>Eventi</returns>
        public Eventi TXGetCostReport(TXTango.Login login)
        {
            Eventi evento = null;

            // se non sono presenti le date di inizio e fine viaggio non posso ricavare correttamente i costi di viaggio
            // (si rischia di registrare nuovamente le spese di un viaggio antecedente).
            if (this.DataInizio == DateTime.MinValue || this.DataFine == DateTime.MinValue)
            {
                throw new Exception("Impossibile ricavare i costi poichè non sono presenti le date di inizio o fine viaggio. IdViaggio: " + this.Id + " KeyViaggio: " + this.KeyViaggio);
            }

            CostCompensationReportSelection reportSelection = new CostCompensationReportSelection();

            reportSelection.Vehicles    = new IdentifierVehicle[1];
            reportSelection.Vehicles[0] = new IdentifierVehicle()
            {
                IdentifierVehicleType = enumIdentifierVehicleType.TRANSICS_ID, Id = this.CodiceMezzo
            };
            reportSelection.Drivers    = new Identifier[1];
            reportSelection.Drivers[0] = new Identifier()
            {
                IdentifierType = enumIdentifierType.TRANSICS_ID, Id = this.CodiceAutista
            };
            reportSelection.DateTimeRangeSelection = new DateTimeRangeSelection()
            {
                StartDate = (DateTime)this.DataInizio, EndDate = this.DataFine
            };

            ServiceSoapClient service = new ServiceSoapClient();
            GetCostCompensationReportResult result = service.Get_CostAndCompensationReport(login, reportSelection);

            evento             = new Eventi();
            evento.SyncData    = DateTime.Now;
            evento.SyncTask    = ConfigurationManager.AppSettings["TXTANGO_TASK_GET_COSTS"];
            evento.SyncTipo    = ConfigurationManager.AppSettings["TXTEMP_FROM_TXTANGO"];
            evento.XmlRequest  = Serializer.SerializeObject(reportSelection, 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.Stato     = ConfigurationManager.AppSettings["TXTANGO_STATO_FINISHED"];
                evento.Note      = "Vedi XmlResponse per i dettagli sugli errori.";
            }
            else
            {
                evento.SyncStato = ConfigurationManager.AppSettings["TXTEMP_STATO_SINCRONIZZATO"];
                evento.Note      = "Registrate nr. " + result.CostConsumptionReportItems.Length + " note spese.";

                // inserisco le note spese nel database
                NoteSpese notaSpesa = null;

                for (int i = 0; i < result.CostConsumptionReportItems.Length; i++)
                {
                    notaSpesa             = new NoteSpese();
                    notaSpesa.IdViaggio   = this.Id;
                    notaSpesa.Data        = result.CostConsumptionReportItems[i].Date;
                    notaSpesa.Tipo        = result.CostConsumptionReportItems[i].CostAndCompensationType.ToString();
                    notaSpesa.Codice      = result.CostConsumptionReportItems[i].CostCompensationCode.Description;
                    notaSpesa.Descrizione = "";
                    if (result.CostConsumptionReportItems[i].Position != null)
                    {
                        notaSpesa.Indirizzo     = (result.CostConsumptionReportItems[i].Position.AddressInfo != null) ? result.CostConsumptionReportItems[i].Position.AddressInfo : "";
                        notaSpesa.GeoCoordinate = result.CostConsumptionReportItems[i].Position.Latitude + "," + result.CostConsumptionReportItems[i].Position.Longitude;
                    }
                    notaSpesa.Prezzo = result.CostConsumptionReportItems[i].Price.Value;
                    notaSpesa.Valuta = result.CostConsumptionReportItems[i].CurrencyCode;
                    notaSpesa.Insert();
                }

                evento.Stato = ConfigurationManager.AppSettings["TXTANGO_STATO_CLOSED"];
            }

            return(evento);
        }