//////////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> Insertar emisiones. </summary> /// /// <remarks> Una vez se tiene la lista de emisiones ordenada y con la duración asignada, se procede a /// insertar en la BD, la información leída.</remarks> //////////////////////////////////////////////////////////////////////////////////////////////////// private void insertarEmisiones() { etRespuesta.Clear(); string infoLectura = "Leyendo lista de Emisiones..."; MensajeSistema(etRespuesta, infoLectura, kMensajeSistema.mCORRECTO); if (listaEmisionCompleta.Count > 0) { MensajeSistema(etInfoXML, "Actualizando la Base de Datos, no interrumpa este proceso...", kMensajeSistema.mADVERTENCIA); gbInfoXML.Visible = true; foreach (ENEmision emision in listaEmisionCompleta) { try { emision.insertarEmision(); DataView dv = new DataView(); ENPrograma p = new ENPrograma(); ENCadena c = new ENCadena(); // p.Id_Programa = emision.Id_programa; // dv = p.buscarPrograma( //c.Id = emision.Id_cadena; infoLectura = etRespuesta.Text + "\nInsertada emisión: " + emision.Id_programa + "(" + emision.Id_cadena + "): [" + emision.FechaHoraInicio.ToShortDateString() + "]"; MensajeSistema(etRespuesta, infoLectura, kMensajeSistema.mCORRECTO); } catch (ENException enex) { infoLectura = etRespuesta.Text + "\nFranja ocupada: " + emision.Id_programa + "(" + emision.Id_cadena + "): [" + emision.FechaHoraInicio.ToShortDateString() + "]"; MensajeSistema(etRespuesta, infoLectura, kMensajeSistema.mCORRECTO); } } } else { if (MessageBox.Show("Debe generar un fichero xml. ¿Desea hacerlo?", "TEVEO :: Aplicación de gestión", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1) == DialogResult.Yes) { btnGenerarXML_Click((Button)btnCarga, null); } else { MensajeSistema(etInfoXML, "Debe generar un documento XML", kMensajeSistema.mERROR); gbInfoXML.Visible = true; } } MensajeSistema(etInfoXML, "Proceso finalizado", kMensajeSistema.mCORRECTO); gbInfoXML.Visible = true; }
//////////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> Inicializador del objeto. </summary> /// /// <remarks> TVO DPAA 2009-2010. </remarks> //////////////////////////////////////////////////////////////////////////////////////////////////// override public void Init() { base.Init(); ENCadena cad = new ENCadena(); TbSeccionBaseErrorProvider.Dispose(); cBTipo.DataSource = cad.ObtenerTiposCadenas(); cBTipoBusq.DataSource = cad.ObtenerTiposCadenas(); //SCambiarVistaForm("defecto"); // btnLimpiar_Click((object)btnLimpiar, null); //---------------------cambios paginación--------------------- p2 MetodoBusqueda = btnBuscar_Click; gbMensajesSist.Visible = false; // gbInfoCON.Visible = false; gbMensajes.Visible = false; dGRbuscCanales.Visible = false; }
//////////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> Método utilizado para rellenar los comboBoxes, cadenas, temáticas y calificaciones. </summary> /// /// <remarks> TVO DPAA 2009-2010. </remarks> //////////////////////////////////////////////////////////////////////////////////////////////////// //Rellenar Combobox public void RellenarComboBox() { try { ENCadena cadenas = new ENCadena(); bool buscar = true, insertar = false; //Se rellena el combobox de cadenas if (buscar) { cBBCadena.DataSource = cadenas.ObtenerListaCadenas(buscar); cBBCadena.DisplayMember = "nombre"; cBBTematica.DataSource = cadenas.ObtenerListaTematicas(buscar); cBBTematica.DisplayMember = "nombre"; cBBCalificacion.DataSource = cadenas.ObtenerListaCalificacion(buscar); cBBCalificacion.DisplayMember = "nombre"; } if (!insertar) { cBICadena.DataSource = cadenas.ObtenerListaCadenas(insertar); cBICadena.DisplayMember = "nombre"; cBITematica.DataSource = cadenas.ObtenerListaTematicas(insertar); cBITematica.DisplayMember = "nombre"; cBICalificacion.DataSource = cadenas.ObtenerListaCalificacion(insertar); cBICalificacion.DisplayMember = "nombre"; } } catch (ENException enex) { MensajeSistema(labelMensSistPB, enex.Message, kMensajeSistema.mERROR); gbMensajes.Visible = true; } }
//////////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> Event handler. Llamada al evento asociado a la imagen de búsqueda. </summary> /// /// <remarks> TVO DPAA 2009-2010. </remarks> /// /// <exception cref="Exception"> Thrown when exception. </exception> /// /// <param name="sender"> Source of the event. </param> /// <param name="e"> Event information. </param> //////////////////////////////////////////////////////////////////////////////////////////////////// override public void imgBusquedaRapida_Click(object sender, EventArgs e) { MetodoBusqueda = imgBusquedaRapida_Click; //No compruebo validación campos porq lo hago en el método del evento leave ENCadena cadenaBuscaRap = new ENCadena(); DataView dvResultBusq = new DataView(); base.imgBusquedaRapida_Click(sender, e); try { gbMensajesSist.Visible = true; if (Paginar) { // Obtenemos el tamaño de la consulta TOTAL_registros = cadenaBuscaRap.obtenerTamanyoConsulta(tbBusquedaRapida.Text); // Si el total de filas es inferior al número de resgistros por página, se desactiva la paginación if (TOTAL_registros <= MIN_PAGINA_registros) { throw new Exception("Excepción de paginación"); } else { // Si el total de filas obtenidas es menos que el registro que estabamos mostrando -> actualizamos el registro actual if (esDesbordamientoPagina(ACTUAL_registro)) { ACTUAL_registro = TOTAL_registros - (TOTAL_registros % PAGINA_registros) + 1; } else if (esUltimaPagina(ACTUAL_registro)) { btnPaginaSiguiente.Visible = false; btnPaginaUltima.Visible = false; } else { btnPaginaSiguiente.Visible = true; btnPaginaUltima.Visible = true; } MensajePaginacion(etInfoPAG, getNumPaginaActual(ACTUAL_registro), getNumPaginasTotales()); dvResultBusq = cadenaBuscaRap.buscarCadena(tbBusquedaRapida.Text, ACTUAL_registro, PAGINA_registros); } } else { dvResultBusq = cadenaBuscaRap.buscarCadena(tbBusquedaRapida.Text); TOTAL_registros = dvResultBusq.Table.Rows.Count; if (TOTAL_registros <= MIN_PAGINA_registros) { chkPaginacion.Enabled = false; } else { chkPaginacion.Enabled = true; } } if (dvResultBusq.Count > 0) { dGRbuscCanales.DataSource = dvResultBusq; darFormatoDataGrid(); dGRbuscCanales.Visible = true; } else { dGRbuscCanales.Visible = false; } if (dvResultBusq.Count == 1) { MensajeSistema(labelMensajesSist, "Se ha obtenido 1 resultado.", kMensajeSistema.mCORRECTO); } else { MensajeSistema(labelMensajesSist, "Se han obtenido " + dvResultBusq.Count + " resultados.", kMensajeSistema.mCORRECTO); } } catch (ENException enex) { if (enex.Tipo != -1) { MensajeSistema(labelMensajesSist, enex.Message, kMensajeSistema.mADVERTENCIA); } else { MensajeSistema(labelMensajesSist, enex.Message, kMensajeSistema.mERROR); } gbMensajesSist.Visible = true; } catch (Exception ex) { chkPaginacion.Checked = false; chkPaginacion_CheckedChanged((CheckBox)chkPaginacion, null); MensajeSistema(labelMensajesSist, "Se ha desactivado la paginación debido a que sólo hay 1 página", kMensajeSistema.mADVERTENCIA); chkPaginacion.Enabled = false; } }
//////////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> Event handler. Llamada al evento asociado al datagridview (dGRbuscCanales para las celdas del dgv). </summary> /// /// <remarks> TVO DPAA 2009-2010. </remarks> /// /// <exception cref="Exception"> Thrown when exception. </exception> /// /// <param name="sender"> Source of the event. </param> /// <param name="e"> Data grid view cell event information. </param> //////////////////////////////////////////////////////////////////////////////////////////////////// private void dGRbuscCanales_CellClick(object sender, DataGridViewCellEventArgs e) { ENCadena cadena = new ENCadena(); string cadenaActivada = ""; DataView dvResultBusq = new DataView();//Para actualizar dgv //llamar buscar dvResultBusq = cadena.buscarCadena(tBNombreBusq.Text, cBTipoBusq.Text); dGRbuscCanales.DataSource = dvResultBusq; darFormatoDataGrid(); try { if (e.RowIndex == -1) { throw new Exception(); } if (dGRbuscCanales.Columns[e.ColumnIndex].Name == "btnModificar") { // MessageBox.Show(dGRbuscCanales.Rows[e.RowIndex].Cells["nombre"].ToString()); tBNombre.Text = dGRbuscCanales.Rows[e.RowIndex].Cells["nombre"].Value.ToString(); cBTipo.Text = dGRbuscCanales.Rows[e.RowIndex].Cells["tipo"].Value.ToString(); cadenaActivada = dGRbuscCanales.Rows[e.RowIndex].Cells["activo"].Value.ToString(); //Llama a una función auxiliar que me devuelve un bool (true= cBActivado || false= CBNoActivado) cBActivar.Checked = ActivarCheckBox(cadenaActivada); //Selecciono la fila en la que voy a querer realizar la modificación. dGRbuscCanales.Rows[e.RowIndex].Selected = true; CambiarVistaForm("modificar"); pestanyasSeccionBase.SelectTab(pestanyasSeccionBase.GetControl(1).Name); } else { if (dGRbuscCanales.Columns[e.ColumnIndex].Name == "btnEliminar") { //selecciono fila eliminar dGRbuscCanales.Rows[e.RowIndex].Selected = true; int idC = int.Parse(dGRbuscCanales.SelectedRows[0].Cells["id"].Value.ToString()); string nombre = dGRbuscCanales.Rows[e.RowIndex].Cells["nombre"].Value.ToString(); if (MessageBox.Show("¿Desea eliminar el registro con Nombre: " + nombre + "?", "TEVEO :: Aplicación de gestión", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { bool eliminado = false; eliminado = cadena.eliminarCadena(idC); if (eliminado) { CambiarVistaForm("defecto"); MensajeSistema(labelMensajesSist, "Registro eliminado correctamente.", kMensajeSistema.mCORRECTO); gbMensajesSist.Visible = true; btnBuscar_Click((object)btnBuscar, null); } } } } } catch (ENException enex) { MensajeSistema(labelMensajesSist, enex.Message, kMensajeSistema.mERROR); gbMensajesSist.Visible = true; } catch (Exception ex) {} }
//////////////////////////////////////////////////////////////////////////////////////////////////// /// <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; } }
//////////////////////////////////////////////////////////////////////////////////////////////////// /// <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); } } }