private static string GetXmlRichiesta(prevent.verifica.Parametri parametri) { using (MemoryStream stream = new MemoryStream()) { XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("", ""); XmlSerializer xml = new XmlSerializer(typeof(prevent.verifica.Parametri)); xml.Serialize(stream, parametri, ns); string xmlstr = Encoding.UTF8.GetString(stream.ToArray()); return(xmlstr); } }
public static void Verifica(prevent.verifica.Parametri parametri, Guid richiesta, PreventWebServices.RichiestaVerifica.ObjCallback funzione) { RichiestaVerifica item = new RichiestaVerifica(); item.IdRichiesta = richiesta; item.Parametri = parametri; item.XmlRichiesta = GetXmlRichiesta(parametri); item.FunzioneDaChiamare = funzione; lock (SyncRoot) { for (int i = Elenco.Count - 1; i >= 0; i--) { RichiestaVerifica richiestaVerifica = Elenco[i]; TimeSpan tempo = DateTime.Now - richiestaVerifica.DataRisposta; if (tempo.TotalSeconds < 30) { if (richiestaVerifica.XmlRichiesta == item.XmlRichiesta) { item.CodiceErrore = richiestaVerifica.CodiceErrore; item.XmlRisposta = richiestaVerifica.XmlRisposta; item.DataRisposta = richiestaVerifica.DataRisposta; item.Disponibile = richiestaVerifica.Disponibile; } } else { Elenco.Remove(richiestaVerifica); } } } if (!string.IsNullOrEmpty(item.XmlRisposta)) { // ok trovato nella cache item.FunzioneDaChiamare(item); } else { // attivo un thread che effettua la chiamata ParameterizedThreadStart newThreadStart = new ParameterizedThreadStart(TaskAsincrono); Thread nuovo = new Thread(newThreadStart); nuovo.Start(item); } }
private void timerTick_Tick(object sender, EventArgs e) { VerificaDisponibilita.GeneraEventi(); foreach (Prenotazione item in this.m_CollectionMySet) { if (item.Disponibilita == EnumDisponibilita.DaControllare) { if (item.OriginataPrevent && item.StartDate == item.PreventStartDate) { item.Disponibilita = EnumDisponibilita.Disponibile; item.Description = item.Ingresso.Descrizione; item.SetLabel(m_PaginaAttiva); } else { item.IdRichiesta = Guid.NewGuid(); item.Disponibilita = EnumDisponibilita.ControlloInCorso; prevent.verifica.Parametri parametri = new prevent.verifica.Parametri(); parametri.Denominazione = "VERIFICA"; parametri.PaxTotali = item.NumeroPersone.ToString(); parametri.TipoGS = GestoreCalendario.TipoGS; if (!string.IsNullOrEmpty(m_PrenotazioneComplessiva.PrenotazionePrevent)) { parametri.NumeroPrenotazione = m_PrenotazioneComplessiva.PrenotazionePrevent; } parametri.RigaPercorsoVisita = new prevent.verifica.ParametriRigaPercorsoVisita[1]; parametri.RigaPercorsoVisita[0] = new prevent.verifica.ParametriRigaPercorsoVisita(); parametri.RigaPercorsoVisita[0].DataVisita = item.StartDate.Date; parametri.RigaPercorsoVisita[0].OraVisita = String.Format("{0:HH}:{1:mm}:{2:ss}.{3:ffffzzz}", item.StartDate, item.StartDate, item.StartDate, item.StartDate); parametri.RigaPercorsoVisita[0].PaxVisita = item.NumeroPersone.ToString(); parametri.RigaPercorsoVisita[0].IdMostra = item.Ingresso.CodicePrevent.ToString(); VerificaDisponibilita.Verifica(parametri, item.IdRichiesta, Elabora); } } } VerificaStato(); }