//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); }
private void SelezionaEvento_Load(object sender, EventArgs e) { foreach (Evento ev in Eventi.GetInstance().GetEventiFuturi()) { _comboBoxEventoDaModificare.Items.Add(ev); } }
/// <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); }
/// <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); }
/// <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); }
public ActionResult DeleteConfirmed(int id) { Eventi eventi = db.Eventis.Find(id); db.Eventis.Remove(eventi); db.SaveChanges(); return(RedirectToAction("Index")); }
/// <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); }
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); } }
/// <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); }
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)); }
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(); } }
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)); }
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); } }
// 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)); }
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)); }
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)); }
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); }
// 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)); }
/// <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); }
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)); }
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; }
/// <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); }
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()); }
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)); }
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); }
/// <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); }
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; } }
/// <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); }
/// <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); }
/// <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); }