Exemple #1
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////
        /// <summary>   Event handler. Llamada al evento asociado al botón Insertar. </summary>
        ///
        /// <remarks>   TVO DPAA 2009-2010. </remarks>
        ///
        /// <param name="sender">   Source of the event. </param>
        /// <param name="e">        Event information. </param>
        ////////////////////////////////////////////////////////////////////////////////////////////////////

        private void buttonInsertarC_Click(object sender, EventArgs e)
        {
            int insertadas = 0;
            int modificado = 0;

            try
            {
                TbSeccionBaseErrorProvider.Dispose();
                if (ValidaFormulario(tBNombre.Text, cBTipo.SelectedIndex) && buttonInsertarC.Text == "Insertar" && cBTipo.Text != "Todos")
                {
                    ENCadena nuevaCadena    = new ENCadena(tBNombre.Text, cBTipo.Text, cBActivar.Checked);
                    DataView dvCadenaExiste = new DataView();

                    //Se busca una cadena con ese nombre y cualquier tipo
                    dvCadenaExiste = nuevaCadena.buscarCadena(tBNombre.Text, "Todos");

                    if (dvCadenaExiste.Count == 0) //No existe la cadena que queremos insertar
                    {
                        insertadas = nuevaCadena.insertarCadena();
                    }
                    else
                    {
                        MensajeSistema(labelMensajes, "ERROR: La cadena ya existe.", kMensajeSistema.mERROR);
                    }

                    if (insertadas > 0)
                    {
                        MensajeSistema(labelMensajes, "Inserción correcta", kMensajeSistema.mCORRECTO);
                        btnBuscar_Click((object)btnBuscar, null);
                    }
                    else
                    {
                        MensajeSistema(labelMensajes, "ERROR: La inserción no se pudo realizar.", kMensajeSistema.mERROR);
                    }
                    gbMensajes.Visible = true;
                }
                else
                {
                    if (buttonInsertarC.Text == "Modificar")
                    {
                        int      idCadena  = int.Parse(dGRbuscCanales.SelectedRows[0].Cells["id"].Value.ToString());
                        ENCadena modCadena = new ENCadena(idCadena, tBNombre.Text, cBTipo.Text, cBActivar.Checked);
                        modificado = modCadena.modificarCadena();


                        if (modificado > 0)
                        {
                            MensajeSistema(labelMensajes, "Modificación correcta", kMensajeSistema.mCORRECTO);
                            btnBuscar_Click((object)btnBuscar, null);
                        }
                        else
                        {
                            MensajeSistema(labelMensajes, "ERROR: La modificación no se pudo realizar.", kMensajeSistema.mERROR);
                        }

                        gbMensajes.Visible = true;
                    }
                    else
                    {
                        if (buttonInsertarC.Text == "Insertar" && cBTipo.Text == "Todos")
                        {
                            TbSeccionBaseErrorProvider.SetIconAlignment(cBTipo, ErrorIconAlignment.MiddleRight);
                            TbSeccionBaseErrorProvider.SetIconPadding(cBTipo, 4);
                            TbSeccionBaseErrorProvider.SetError(cBTipo, "ERROR: No es posible insertar una cadena cuyo tipo sea Todos.");
                        }
                    }
                }
            }
            catch (ENException enex)
            {
                if (enex.Tipo != -1)
                {
                    MensajeSistema(labelMensajes, enex.Message, kMensajeSistema.mADVERTENCIA);
                }
                else
                {
                    MensajeSistema(labelMensajes, enex.Message, kMensajeSistema.mERROR);
                }

                gbMensajes.Visible = true;
            }
        }
Exemple #2
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////
        /// <summary>   Leer xmltv. </summary>
        ///
        /// <remarks>   Procesa el documento XML rellenando la lista List que almacena las emisiones.
        ///
        /// Las etiquetas channel, contienen información de las cadenas, mientras que la etiqueta programme sobre
        /// los programas.
        /// Una vez leído el XML, se ordena la lista usando como criterio la fecha de emisión, y, posteriormente
        /// se recorre para realizar las inserciones en la BD de forma correcta. Cada emisión debe calcular su duración con relación
        /// a la siguiente emsión dentro de la cadena.
        /// </remarks>
        ///
        /// <param name="xElem">    The x coordinate element. </param>
        ////////////////////////////////////////////////////////////////////////////////////////////////////

        public void leerXMLtv(XElement xElem)
        {
            string infoLectura = "";


            infoLectura = etRespuesta.Text + "\nLeyendo XML...";
            MensajeSistema(etRespuesta, infoLectura, kMensajeSistema.mCORRECTO);
            MensajeSistema(etInfoXML, "Procesando XML...", kMensajeSistema.mCORRECTO);
            gbInfoXML.Visible = true;
            try
            {
                //La ruta del documento XML permite rutas relativas
                //respecto del ejecutable!
                int              numcad       = 0;
                int              numprog      = 0;
                Hashtable        miguiaTV     = new Hashtable();
                List <ENEmision> listaEmision = new List <ENEmision>();

                IEnumerable <XElement> ListaHijos = from el in xElem.Elements() select el;
                foreach (XElement e in ListaHijos)
                {
                    if (e.Name.LocalName == "channel")
                    {
                        IEnumerable <XElement> HijosDeChannel = from hijo in e.Elements() select hijo;
                        foreach (XElement h in HijosDeChannel)
                        {
                            if (h.Name.LocalName == "display-name")
                            {
                                ENCadena nuevo = new ENCadena(h.Value);
                                nuevo.Activo = true;
                                nuevo.Tipo   = Enum.GetName(typeof(kTipo), kTipo.Generalista);
                                // e.Attribute
                                int id = nuevo.existeNombreCadena();

                                if (id == -1) // No existe el nombre en la BD
                                {
                                    nuevo.insertarCadena();
                                    miguiaTV[e.FirstAttribute.Value] = nuevo.Id;
                                    infoLectura = etRespuesta.Text + "\nAñadido nuevo Canal: " + nuevo.Nombre;
                                    MensajeSistema(etRespuesta, infoLectura, kMensajeSistema.mCORRECTO);
                                }
                                else
                                {
                                    miguiaTV[e.FirstAttribute.Value] = id;
                                    numcad++;
                                }
                            }
                        }
                    }

                    if (e.Name.LocalName == "programme")
                    {
                        // Start
                        string start = SecurityElement.Escape(e.Attribute("start").Value);
                        // Channel
                        string channel = e.Attribute("channel").Value;

                        int    cadena = (int)miguiaTV[channel];
                        string nombre = SecurityElement.Escape(Validacion.SustituyeCaracteresRaros(e.Element("title").Value));

                        // string descripcion = xmlStringHelpers.ConvierteA_UTF8(e.Element("desc").Value);
                        string descripcion  = SecurityElement.Escape(Validacion.SustituyeCaracteresRaros(e.Element("desc").Value));
                        int    tematica     = 1;
                        int    calificacion = 1;
                        bool   novedad      = true;
                        bool   activo       = true;
                        int    id_programa  = -1;

                        ENPrograma p = new ENPrograma(cadena, tematica, calificacion, nombre, descripcion, activo, novedad);

                        if (!p.existePrograma())
                        {
                            p.InsertarPrograma();
                            id_programa = p.Id_Programa;
                            infoLectura = etRespuesta.Text + "\nAñadido nuevo Programa: " + p.Nombre;
                            MensajeSistema(etRespuesta, infoLectura, kMensajeSistema.mCORRECTO);
                            numprog++;
                        }
                        else
                        {
                            id_programa = p.ObtenerIdPrograma(0, nombre);
                        }

                        DateTimeConverter con = new DateTimeConverter();

                        string anyo    = start.Substring(0, 4);
                        string mes     = start.Substring(4, 2);
                        string dia     = start.Substring(6, 2);
                        string hora    = start.Substring(8, 2);
                        string minuto  = start.Substring(10, 2);
                        string segundo = start.Substring(12, 2);

                        DateTime  fechaHoraEmision = new DateTime(Convert.ToInt32(anyo), Convert.ToInt32(mes), Convert.ToInt32(dia), Convert.ToInt32(hora), Convert.ToInt32(minuto), Convert.ToInt32(segundo));
                        ENEmision emision          = new ENEmision(cadena, id_programa, fechaHoraEmision, 0);

                        listaEmision.Add(emision);
                    }
                }
                listaEmision.Sort(ComparaENEmisionPorFechaInicio);


                MensajeSistema(etInfoXML, "Creando estructura de datos interna...", kMensajeSistema.mADVERTENCIA);
                gbInfoXML.Visible = true;
                foreach (int id_cadena in miguiaTV.Values)
                {
                    List <ENEmision> emisionPorCadena = new List <ENEmision>();

                    ID_cadena = id_cadena;

                    emisionPorCadena = listaEmision.FindAll(ComparaENEmisionPorCadena);  //(totaller.AddBookToTotal)ComparaENEmisionPorCadena);
                    // Bucle que asigna las duraciones
                    for (int j = 0; j < emisionPorCadena.Count; j++)
                    {
                        if (j == (emisionPorCadena.Count) - 1)
                        {
                            // Ultima emision
                            emisionPorCadena[emisionPorCadena.Count - 1].Duracion = 30;
                            listaEmisionCompleta.Add(emisionPorCadena[emisionPorCadena.Count - 1]);
                        }
                        else
                        {
                            // Todas excepto la última
                            ENEmision completa = emisionPorCadena[j];

                            DateTime actual    = emisionPorCadena[j].FechaHoraInicio;
                            DateTime siguiente = emisionPorCadena[j + 1].FechaHoraInicio;

                            TimeSpan duracion = siguiente.Subtract(actual);

                            completa.Duracion = (int)Math.Ceiling(duracion.TotalMinutes);

                            listaEmisionCompleta.Add(completa);
                        }
                    }
                }

                infoLectura = etRespuesta.Text + "\nEstructura de datos interna cargada con la programación.";
                MensajeSistema(etRespuesta, infoLectura, kMensajeSistema.mCORRECTO);
                MensajeSistema(etInfoXML, "Proceso finalizado", kMensajeSistema.mCORRECTO);
                gbInfoXML.Visible = true;
            }
            catch (Exception ex)
            {
                if (MessageBox.Show("El fichero xml no está bien formado, hay que volver a generarlo. ¿Desea generar de nuevo el xml?", "TEVEO :: Aplicación de gestión", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
                {
                    btnGenerarXML_Click((Button)btnCarga, null);
                }
            }
        }