/// <summary> /// Asociado al evento click del botón "btAgregar" permite insertar o editar categorías en la base de datos /// mostrando un error a través de <see cref="VentanaInformacion"/> en caso de no poder realizar la transacción. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtAgregar_Click(object sender, RoutedEventArgs e) { try { if (modoVisualizacion.Equals("insertar")) { if (tbNombre.Text.Equals("")) { VentanaInformacion modal = new VentanaInformacion("Nombre es campo obligatorio", "advertencia"); modal.ShowDialog(); } else { if (Negocio.CrearTipo(categoriaVentana)) { VentanaInformacion modal = new VentanaInformacion("Categoría creada con éxito", "exito"); modal.ShowDialog(); vistaCategoria.Source = Negocio.ObtenerTipos(); } else { VentanaInformacion modal = new VentanaInformacion("Error al crear categoría", "advertencia"); modal.ShowDialog(); } } } else { if (tbNombre.Text.Equals("")) { if (Negocio.EditarTipo(categoriaVentana)) { VentanaInformacion modal = new VentanaInformacion("Categoría actualizada sin cambios.", "exito"); modal.ShowDialog(); vistaCategoria.Source = Negocio.ObtenerTipos(); } } else { if (Negocio.EditarTipo(categoriaVentana)) { VentanaInformacion modal = new VentanaInformacion("Categoría actualizada con éxito", "exito"); modal.ShowDialog(); vistaCategoria.Source = Negocio.ObtenerTipos(); } else { VentanaInformacion modal = new VentanaInformacion("Error al actualizar categoría", "advertencia"); modal.ShowDialog(); } } } } catch (IOException error) { statusBar.Background = Brushes.IndianRed; tbStatusInformation.Text = error.Message; } }
/// <summary> /// Gestiona el evento click del botón btCrear, para crear un ticket en caso de que se produzca y actualizar la base de datos. /// a)sinEtiqueta=true -> se crea un ticket con idEquipo=null /// b)sinEtiqueta=false -> se crea un ticket con idEquipo=tbServiceTag.Text /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtCrear_Click(object sender, RoutedEventArgs e) { limpiarBarra(); try { if (equipoSinEtiqueta) { if (Negocio.CrearTicket(new Ticket(0, null, usuario.UsuarioId, DateTime.Now, null, tbDescripcion.Text, "", 1, null, null, "", null, ""))) { VentanaInformacion modal = new VentanaInformacion("Ticket creado con éxito.", "exito"); modal.ShowDialog(); } else { VentanaInformacion modal = new VentanaInformacion("Error al crear ticket", "advertencia"); modal.ShowDialog(); } } else { if (equipoIdentificado) { if (!Negocio.verificarTicketDuplicado(tbServiceTag.Text)) { if (Negocio.CrearTicket(new Ticket(0, tbServiceTag.Text, usuario.UsuarioId, DateTime.Now, null, tbDescripcion.Text, null, 1, null, null, null, null, null))) { VentanaInformacion modal = new VentanaInformacion("Ticket creado con éxito.", "exito"); modal.ShowDialog(); } else { VentanaInformacion modal = new VentanaInformacion("Error al crear ticket", "advertencia"); modal.ShowDialog(); } } else { VentanaInformacion modal = new VentanaInformacion("El equipo indicado ya tiene un ticket activo.", "advertencia"); equipoIdentificado = false; modal.ShowDialog(); } } else { VentanaInformacion modal = new VentanaInformacion("SERVICE TAG no verificado, realice comprobación.", "advertencia"); modal.ShowDialog(); } } } catch (IOException error) { statusBar.Background = Brushes.IndianRed; tbStatusInformation.Text = error.Message; } }
/// <summary> /// Controla el evento click del botón btFiltrar, para mostrar una vista filtrada de los tickets /// según las fechas indicadas en los controles datapicker. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtFiltrar_Click(object sender, RoutedEventArgs e) { limpiarBarra(); //Verifica si hay una fecha seleccionada, deben estar las dos, sino no hay problema. if (dtpHasta.SelectedDate == null && dtpDesde.SelectedDate != null || dtpHasta.SelectedDate != null && dtpDesde.SelectedDate == null) { VentanaInformacion modal = new VentanaInformacion("Para búsqueda por fechas ha de seleccionar ambas fechas", "advertencia"); modal.ShowDialog(); } else { MiVista.Filter += Filtrar; } }
/// <summary> /// Gestiona el evento click de BtCrear para crear un ticket a través de <see cref="CrearTicketsAdminControl.crearTicket(int?, string)"/> /// verifica el estado del checkbox chbTecnicos y si el idEquipo introducido es correcto para llamar al método. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtCrear_Click(object sender, RoutedEventArgs e) { limpiarBarra(); List <string> erroresDetectados = validarCampos(); if (erroresDetectados.Count == 0) { if (idEquipoCorrecto) { if (chbTecnicos.IsChecked == true) { tecnicoId = int.Parse(cbTecnicosExternos.SelectedItem.ToString().Split('.')[0]); crearTicket(tecnicoId, tbEquipo.Text); } else { tecnicoId = int.Parse(cbTecnicos.SelectedItem.ToString().Split('.')[0]); crearTicket(tecnicoId, tbEquipo.Text); } } else { if (chbTecnicos.IsChecked == true) { tecnicoId = int.Parse(cbTecnicosExternos.SelectedItem.ToString().Split('.')[0]); crearTicket(tecnicoId, null); } else { tecnicoId = int.Parse(cbTecnicos.SelectedItem.ToString().Split('.')[0]); crearTicket(tecnicoId, null); } } } else { string errores = ""; foreach (String s in erroresDetectados) { errores = errores + s + "\n"; } VentanaInformacion modal = new VentanaInformacion(errores, "advertencia"); modal.ShowDialog(); } }
/// <summary> /// Crea un ticket con los datos introducidos en los distintos controles en la base de dato. /// </summary> /// <param name="tecnico">idTecnico que tiene asignado el ticket</param> /// <param name="equipoId">equipoId del ticket, puede ser null</param> private void crearTicket(int?tecnico, string equipoId) { try { if (Negocio.CrearTicket(new Ticket(0, equipoId, usuarioId, DateTime.Now, null, tbDescripcion.Text, null, (int?)EstadoIncidencia.asignada, null, tecnico, null, 0, null))) { VentanaInformacion aviso = new VentanaInformacion("Ticket creado con éxito", "exito"); aviso.ShowDialog(); } else { VentanaInformacion aviso = new VentanaInformacion("Error al crear ticket.", "advertencia"); aviso.ShowDialog(); } } catch (IOException error) { statusBar.Background = Brushes.IndianRed; tbStatusInformation.Text = error.Message; } }
/// <summary> /// Asociada al evento click del botón "btCambiarPassword" permite cambiar la contraseña del usuario, por /// una contraseña que contenga al menos una mayúscula, un número y un caracter especial, con una longitud /// de entre 8 y 12 caracteres. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtCambiarPassword_Click(object sender, RoutedEventArgs e) { string expresion; expresion = @"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\da-zA-Z]).{8,12}$"; System.Text.RegularExpressions.Regex automata = new Regex(expresion); bool passwordCorrecto = automata.IsMatch(pwRepeat.Password); if (pwPassword.Password.Equals(pwRepeat.Password) && passwordCorrecto) { usuarioActual.Password = Utilidad.CalculateMD5Hash(pwPassword.Password); if (Negocio.EditarUsuario(usuarioActual)) { VentanaInformacion modal = new VentanaInformacion("Contraseña actualizada con éxito", "exito"); modal.ShowDialog(); } else { VentanaInformacion modal = new VentanaInformacion("Error al actualizar contraseña.", "advertencia"); modal.ShowDialog(); } } else { string textoError; if (!passwordCorrecto) { textoError = "La contraseña debe tener al menos un digito, una mayúscula y un signo. Longitud permitida de 8 a 12 caracteres"; } else { textoError = "Las contraseñas no coinciden"; } VentanaInformacion modal = new VentanaInformacion(textoError, "advertencia"); modal.ShowDialog(); } }
/// <summary> /// Asociado al eventó click del botón "btExportarCsv" permite exportar las localidades de la base de datos a un archivo .csv /// usando <see cref="Utilidad.ExportarCsv(List{object}, string)"/> /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtExportarCSV_Click(object sender, RoutedEventArgs e) { try { List <Object> lista = new List <Object>(); foreach (Localidad u in listaLocalidades) { lista.Add(u); } Utilidad.ExportarCsv(lista, "localidad"); } catch (FormatException e1) { VentanaInformacion modal = new VentanaInformacion(e1.Message, "advertencia"); modal.ShowDialog(); } catch (Exception error) { statusBar.Background = Brushes.IndianRed; tbStatusInformation.Text = error.Message; } }
/// <summary> /// Asociado al evento click del botón "btExportarCSV" permite exportar todos los equipos de la base de datos a un archivo /// CSV, para ello hace uso de <see cref="Utilidad.ExportarCsv(List{object}, string)"/> /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtExportarCSV_Click(object sender, RoutedEventArgs e) { List <Object> listaAexportar = new List <Object>(); foreach (Equipo eq in listaEquipos) { listaAexportar.Add(eq); } try { Utilidad.ExportarCsv(listaAexportar, "equipo"); } catch (FormatException e1) { VentanaInformacion modal = new VentanaInformacion(e1.Message, "advertencia"); modal.ShowDialog(); } catch (Exception error) { statusBar.Background = Brushes.IndianRed; tbStatusInformation.Text = error.Message; } }
//--------------------------------------------------------------------------------------FUNCIONES AUXILIARES---------------------------------------------------------------------------- /// <summary> /// Genera un fichero con un código de barras en formato code128, en el directorio Imagenes /// con el nombre codigoGenerado.png /// </summary> private void GenerarEtiqueta() { string texto = tbEtiqueta.Text; if (!tbEtiqueta.Text.Equals("")) { // Process.Start(Environment.CurrentDirectory.Replace("bin\\Debug", "") + "Imagenes\\codigoGenerado.png"); para modo debug string dataDir = Environment.CurrentDirectory + "\\Imagenes\\codigoGenerado.png"; if (!File.Exists(dataDir)) { dataDir = Environment.CurrentDirectory.Replace("bin\\Debug", "") + "Imagenes\\codigoGenerado.png"; } using (var myFile = File.OpenWrite(dataDir)) { try { // Instantiate object and set differnt barcode properties generator = new BarcodeGenerator(EncodeTypes.Code128, texto); generator.Parameters.Barcode.XDimension.Millimeters = 1f; // Save the image to your system and set its image format to Jpeg generator.Save(myFile, BarCodeImageFormat.Png); generator.Dispose(); imgCodigo.Visibility = Visibility.Visible; VentanaInformacion modal = new VentanaInformacion("La etiqueta " + texto + " ha sido generada con éxito", "exito"); modal.ShowDialog(); } catch (Exception) { VentanaInformacion modal = new VentanaInformacion("Error al generar etiqueta", "advertencia"); modal.ShowDialog(); imgCodigo.Visibility = Visibility.Hidden; } } } }
/// <summary> /// Asociado al evento click de botón "btActualizar" permite actualizar el ticket que hayamos elegido, con los valores /// introducidos, ya sea para finalizarlos o para reasignarlo. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtActualizar_Click(object sender, RoutedEventArgs e) { try { ticket.Resolucion = tbResolucion.Text; ticket.NotasTecnico = tbNotasTecnico.Text; if (rbAsignar.IsChecked == true) { ticket.TecnicoAsignado = int.Parse(cbTecnicos.SelectedItem.ToString().Split('.')[0]); ticket.Estado = (int?)EstadoIncidencia.asignada; if (Negocio.EditarTicket(ticket)) { VentanaInformacion modal = new VentanaInformacion("Ticket actualizado con éxito", "exito"); modal.ShowDialog(); } else { VentanaInformacion modal = new VentanaInformacion("Error al actualizar el ticket", "advertencia"); modal.ShowDialog(); } } else { if (!tbResolucion.Text.Equals("")) { if (cbCategoria.SelectedIndex != -1) { ticket.TecnicoAsignado = Negocio.ObtenerTecnicoIdPorUsuario((int)usuario.UsuarioId); ticket.Estado = (int?)EstadoIncidencia.finalizada; ticket.Categoria = Negocio.ObtenerTipoIdPorNombre(cbCategoria.SelectedItem.ToString()); if (Negocio.EditarTicket(ticket)) { VentanaInformacion modal = new VentanaInformacion("Ticket actualizado con éxito", "exito"); modal.ShowDialog(); } else { VentanaInformacion modal = new VentanaInformacion("Error al actualizar el ticket", "advertencia"); modal.ShowDialog(); } } else { VentanaInformacion modal = new VentanaInformacion("Campo categoría debe tener un valor,por favor.", "advertencia"); modal.ShowDialog(); } } else { VentanaInformacion modal = new VentanaInformacion("Campo resolución debe tener un valor, por favor.", "advertencia"); modal.ShowDialog(); } } } catch (IOException error) { statusBar.Background = Brushes.IndianRed; tbStatusInformation.Text = error.Message; } }
/// <summary> /// Asociado al evento click del botón btAgregar, permite agregar o actualizar una sede, según el valor que tenga la variable modo /// modo= insertar ---> valida la sede y en caso de ser correcta la insertar en la base de datos, si no lo es muestra un error en forma de pantalla emergente <see cref="VentanaInformacion"/> /// modeo= editar ----> valida la sede y en caso de ser correcta la actualiza en la base de datos, en caso de no serlo muestra un error en forma de pantalla emergente. /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtAgregar_Click(object sender, RoutedEventArgs e) { limpiarBarra(); try { List <string> errores = ValidarCampos(); if (errores.Count == 0) { if (modoVisualizacion.Equals("insertar")) { if (Negocio.CrearSede(sedeVentana)) { VentanaInformacion modal = new VentanaInformacion("Sede Creada con éxito.", "exito"); modal.ShowDialog(); vistaSedes.Source = Negocio.ObtenerSedes(); } else { VentanaInformacion modal = new VentanaInformacion("Error al crear Sede", "advertencia"); modal.ShowDialog(); } } else { if (tbCalle.Text.Equals("")) { sedeVentana.Calle = sedeAuxiliar.Calle; } if (tbCodigoPostal.Text.Equals("")) { sedeVentana.CodigoPostal = sedeAuxiliar.CodigoPostal; } if (tbPlanta.Text.Equals("")) { sedeVentana.Planta = sedeAuxiliar.Planta; } if (Negocio.EditarSede(sedeVentana)) { VentanaInformacion modal = new VentanaInformacion("Sede actualizada con éxito.", "exito"); modal.ShowDialog(); vistaSedes.Source = Negocio.ObtenerSedes(); } else { VentanaInformacion modal = new VentanaInformacion("Error al actualizar Sede", "advertencia"); modal.ShowDialog(); } } } else { string erroresDetectado = ""; foreach (string error in errores) { erroresDetectado += error + "\n"; } VentanaInformacion modal = new VentanaInformacion(erroresDetectado, "advertencia"); modal.ShowDialog(); } } catch (IOException error) { statusBar.Background = Brushes.IndianRed; tbStatusInformation.Text = error.Message; } }
/// <summary> /// Asociado al evento click del botón "btAgregar" permite agregar un usuario a la base de datos , después de validar los datos /// <see cref="ValidarCampos"/>, la clave de usuario se codificará en MD5 usando para ello el método <see cref="Utilidad.CalculateMD5Hash(string)"/> /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtAgregar_Click(object sender, RoutedEventArgs e) { try { if (modoVisualizacion.Equals("insertar")) { List <string> listaErrores = ValidarCampos(); if (listaErrores.Count == 0) { usuario.Password = Utilidad.CalculateMD5Hash(usuario.Password); if (Negocio.CrearUsuario(usuario)) { VentanaInformacion modal = new VentanaInformacion("Usuario guardado", "exito"); modal.ShowDialog(); vistaUsuarios.Source = Negocio.ObtenerUsuarios(); } else { VentanaInformacion modal = new VentanaInformacion("Error al insertar usuario", "advertencia"); modal.ShowDialog(); } } else { string erroresDetectado = ""; foreach (string error in listaErrores) { erroresDetectado += error + "\n"; } VentanaInformacion modal = new VentanaInformacion(erroresDetectado, "advertencia"); modal.ShowDialog(); } } else { if (tbNombre.Text.Equals("")) { usuario.Nombre = usuarioOriginal.Nombre; } if (tbApellidos.Text.Equals("")) { usuario.Apellidos = usuarioOriginal.Apellidos; } if (tbCorreo.Text.Equals("")) { usuario.Mail = usuarioOriginal.Mail; } if (pwPassword.Password.Equals("")) { usuario.Password = usuarioOriginal.Password; } List <string> errores = ValidarCampos(); if (errores.Count == 0) { usuario.Password = Utilidad.CalculateMD5Hash(usuario.Password); if (Negocio.EditarUsuario(usuario)) { VentanaInformacion modal = new VentanaInformacion("Usuario actualizado con éxito.", "exito"); modal.ShowDialog(); vistaUsuarios.Source = Negocio.ObtenerUsuarios(); } else { VentanaInformacion modal = new VentanaInformacion("Error al actualizar usuario", "advertencia"); modal.ShowDialog(); } } else { string erroresDetectado = ""; foreach (string error in errores) { erroresDetectado += error + "\n"; } VentanaInformacion modal = new VentanaInformacion(erroresDetectado, "advertencia"); modal.ShowDialog(); } } } catch (IOException error) { statusBar.Background = Brushes.IndianRed; tbStatusInformation.Text = error.Message; } }
/// <summary> /// Muestra un cuadro de dialogo que permite seleccionar un archivo CSV, dependiendo de la entidad pasada como parámetro /// genera una lista del tipo que hayamos pasado siempre y cuando el archivo cumpla con el formato correcto y coincidente, en caso contrario /// muestra un mensaje de error. Una vez generada la lista, la muestra mediante una ventana modal usando <see cref="impUserModal"/> /// </summary> /// <param name="tipo"></param> public static void ImportarCSv(string tipo) { try { // listaUsuarios = negocio.ObtenerUsuarios(); // Configure open file dialog box Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog(); dlg.FileName = "Document"; // Default file name dlg.DefaultExt = ".csv"; // Default file extension dlg.Filter = "Csv documents (.csv)|*.csv"; // Filter files by extension // Show open file dialog box Nullable <bool> result = dlg.ShowDialog(); // Process open file dialog box results if (result == true) { // Open document string filename = dlg.FileName; String[] lines = File.ReadAllLines(dlg.FileName); if (lines.Length >= 0) { List <Object> lista = new List <Object>(); if (tipo.Equals("usuario")) { List <Usuario> listaUsuarios = new List <Usuario>(); for (int i = 0; i < lines.Length; i++) { if (!lines[i].Equals("")) { string[] campos = lines[i].Split(';'); Usuario nuevoUsuario = new Usuario(int.Parse(campos[0]), campos[1], campos[2], campos[3], int.Parse(campos[4]), campos[5], int.Parse(campos[6]), int.Parse(campos[7])); listaUsuarios.Add(nuevoUsuario); } } lista.Clear(); foreach (Usuario u in listaUsuarios) { lista.Add(u); } } else if (tipo.Equals("sede")) { List <Sede> listaSedes = new List <Sede>(); for (int i = 0; i < lines.Length; i++) { if (!lines[i].Equals("")) { string[] campos = lines[i].Split(';'); Sede nuevaSede = new Sede(int.Parse(campos[0]), campos[1], campos[2], int.Parse(campos[3]), int.Parse(campos[4])); listaSedes.Add(nuevaSede); } } lista.Clear(); foreach (Sede u in listaSedes) { lista.Add(u); } } else if (tipo.Equals("localidad")) { List <Localidad> listaLocalidades = new List <Localidad>(); for (int i = 0; i < lines.Length; i++) { if (!lines[i].Equals("")) { string[] campos = lines[i].Split(';'); Localidad nuevaLocalidad = new Localidad(int.Parse(campos[0]), campos[1]); listaLocalidades.Add(nuevaLocalidad); } } lista.Clear(); foreach (Localidad u in listaLocalidades) { lista.Add(u); } } else if (tipo.Equals("categoria")) { List <Tipo> listaTipos = new List <Tipo>(); for (int i = 0; i < lines.Length; i++) { if (!lines[i].Equals("")) { string[] campos = lines[i].Split(';'); Tipo nuevoTipo = new Tipo(int.Parse(campos[0]), campos[1]); listaTipos.Add(nuevoTipo); } } lista.Clear(); foreach (Tipo u in listaTipos) { lista.Add(u); } } else if (tipo.Equals("equipo")) { List <Equipo> listaEquipos = new List <Equipo>(); for (int i = 0; i < lines.Length; i++) { if (!lines[i].Equals("")) { string[] campos = lines[i].Split(';'); Equipo nuevoEquipo = new Equipo(campos[0], campos[1], campos[2], DateTime.Parse(campos[3]), int.Parse(campos[4]), int.Parse(campos[5]), campos[6]); listaEquipos.Add(nuevoEquipo); } } lista.Clear(); foreach (Equipo u in listaEquipos) { lista.Add(u); } } impUserModal modal = new impUserModal(lista, tipo); modal.ShowDialog(); } } } catch (IOException) { VentanaInformacion modal = new VentanaInformacion("Error de lectura de fichero", "advertencia"); modal.ShowDialog(); } catch (Exception) { VentanaInformacion modal = new VentanaInformacion("El archivo escogido no es un csv de usuarios", "advertencia"); modal.ShowDialog(); } }
/// <summary> /// Asociado al evento click del botón "btAgregar" permite insertar o editar un equipo, en caso de producir un error lo muestra /// por pantalla mediante <see cref="VentanaInformacion"/> /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtAgregar_Click(object sender, RoutedEventArgs e) { try { if (modoVisualizacion.Equals("insertar")) { List <string> listaErrores = ValidarCampos(); if (listaErrores.Count == 0) { if (Negocio.CrearEquipo(equipoVentana)) { VentanaInformacion modal = new VentanaInformacion("Equipo guardado", "exito"); modal.ShowDialog(); vistaEquipos.Source = Negocio.ObtenerEquipos(); } else { VentanaInformacion modal = new VentanaInformacion("Error al insertar equipo", "advertencia"); modal.ShowDialog(); } } else { string erroresDetectado = ""; foreach (string error in listaErrores) { erroresDetectado += error + "\n"; } VentanaInformacion modal = new VentanaInformacion(erroresDetectado, "advertencia"); modal.ShowDialog(); } } else { List <string> listaErrores = ValidarCampos(); if (listaErrores.Count == 0) { if (Negocio.EditarEquipo(equipoVentana)) { VentanaInformacion modal = new VentanaInformacion("Equipo actualizado con éxito.", "exito"); modal.ShowDialog(); vistaEquipos.Source = Negocio.ObtenerEquipos(); } else { VentanaInformacion modal = new VentanaInformacion("Error al actualizar equipo", "advertencia"); modal.ShowDialog(); } } else { string erroresDetectado = ""; foreach (string error in listaErrores) { erroresDetectado += error + "\n"; } VentanaInformacion modal = new VentanaInformacion(erroresDetectado, "advertencia"); modal.ShowDialog(); } } } catch (IOException error) { statusBar.Background = Brushes.IndianRed; tbStatusInformation.Text = error.Message; } }
/// <summary> /// Controla el evento click del botón actualizar, permite actualizar el estado de un ticket de acuerdo con los /// valores asignados en los distintos controles. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtActualizar_Click(object sender, RoutedEventArgs e) { limpiarBarra(); string estado = cbEstado.SelectedItem.ToString(); try { switch (estado) { case "En Curso": if (permitirEnCurso) { if (tbIdEquipo.Text.Equals("")) { VentanaInformacion advertencia = new VentanaInformacion("Introduzca IdEquipo, si el equipo no tiene pegatina de identificación,recuerde que puede imprimir una desde \"generar código de barras\"", "advertencia"); advertencia.ShowDialog(); } else { ticketSeleccionado.Estado = 3; //Pasamos ticket a estado "en Curso" if (Negocio.EditarTicket(ticketSeleccionado) && permitirEnCurso) { VentanaInformacion modal = new VentanaInformacion("Ticket actualizado con éxito.", "exito"); modal.ShowDialog(); TicketTecnicoControl ventana = new TicketTecnicoControl(tecnicoActual); panelPrincipal.Children.Insert(1, ventana); panelPrincipal.Children.RemoveAt(0); } else { VentanaInformacion modal = new VentanaInformacion("No se ha podido actualizar el ticket", "advertencia"); modal.ShowDialog(); } } } else { VentanaInformacion modal = new VentanaInformacion("Transición no válida, no pueden haber dos tickets en curso.", "advertencia"); modal.ShowDialog(); } break; case "Pendiente": Equipo equipoValido = Negocio.ObtenerEquipo(tbIdEquipo.Text); if (tbIdEquipo.Text.Equals("") || equipoValido == null) { if (equipoValido == null) { VentanaInformacion advertencia = new VentanaInformacion("El equipo introducido no existe en la base de datos.", "advertencia"); advertencia.ShowDialog(); } else { VentanaInformacion advertencia = new VentanaInformacion("Introduzca IdEquipo, si el equipo no tiene pegatina de identificación,recuerde que puede imprimir una desde \"generar código de barras\"", "advertencia"); advertencia.ShowDialog(); } } else { if (!tbResolucion.Text.Equals("")) { ticketSeleccionado.Estado = 5; //Pasamos ticket a estado pendiente(5) ticketSeleccionado.NotasTecnico = tbResolucion.Text; if (Negocio.EditarTicket(ticketSeleccionado)) { VentanaInformacion modal = new VentanaInformacion("Ticket actualizado con éxito.", "exito"); modal.ShowDialog(); TicketTecnicoControl ventana = new TicketTecnicoControl(tecnicoActual); panelPrincipal.Children.Insert(1, ventana); panelPrincipal.Children.RemoveAt(0); } else { VentanaInformacion modal = new VentanaInformacion("No se ha podido actualizar el ticket", "advertencia"); modal.ShowDialog(); } } else { VentanaInformacion modal = new VentanaInformacion("Debe indicar motivo por el que queda pendiente.", "advertencia"); modal.ShowDialog(); } } break; case "Finalizado": if (!tbResolucion.Text.Equals("") && cbCategoria.SelectedItem != null) { ticketSeleccionado.Estado = 4; //Pasamos ticket a estado finalizado(4) ticketSeleccionado.FechaResolucion = DateTime.Now; ticketSeleccionado.Categoria = Negocio.ObtenerTipoIdPorNombre(cbCategoria.SelectedItem.ToString()); ticketSeleccionado.Resolucion = tbResolucion.Text; if (Negocio.EditarTicket(ticketSeleccionado)) { VentanaInformacion modal = new VentanaInformacion("Ticket actualizado con éxito.", "exito"); modal.ShowDialog(); TicketTecnicoControl ventana = new TicketTecnicoControl(tecnicoActual); panelPrincipal.Children.Insert(1, ventana); panelPrincipal.Children.RemoveAt(0); } else { VentanaInformacion modal = new VentanaInformacion("No se ha podido actualizar el ticket", "advertencia"); modal.ShowDialog(); } } else { VentanaInformacion modal = new VentanaInformacion("Debe introducir categoria y texto de resolución.", "advertencia"); modal.ShowDialog(); } break; } } catch (IOException error) { statusBar.Background = Brushes.IndianRed; tbStatusInformation.Text = error.Message; } }