//----------------------------------------------------------------FUNCIONES ASOCIADAS A EVENTOS---------------------------------------------------------------------------------------- /// <summary> /// Controla el evento click del botón btAsignar, en caso afirmativo se actualiza la base de datos /// y si no hay errores se informa al control padre mediante DialogResult. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtAsignar_Click(object sender, RoutedEventArgs e) { try { Ticket ticketAactualizar = Negocio.ObtenerTicket(idTicket); ticketAactualizar.TecnicoAsignado = idTecnico; ticketAactualizar.Estado = (int)EstadoIncidencia.asignada; if (Negocio.EditarTicket(ticketAactualizar)) { this.DialogResult = true; this.Close(); } else { this.DialogResult = false; VentanaInformacion modal = new VentanaInformacion("Error al asignar técnico", "advertencia"); modal.ShowDialog(); } } catch (IOException) { VentanaInformacion modal = new VentanaInformacion("Error al acceder a la base de datos", "advertencia"); modal.ShowDialog(); } }
/// <summary> /// Gestiona el evento click de btValorar, en caso de que se pulse se actualiza la valoración en la base de datos /// determinando las estrellas seleccionadas y en caso de haber texto, con el texto seleccionado. Actualiza la base de datos /// y en caso de valorar se elimina el ticketEnCurso en la base de datos. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtValorar_Click(object sender, RoutedEventArgs e) { try { Ticket ticketOriginal = Negocio.ObtenerTicket(idTicket); if (Negocio.EditarTicket(new Ticket(ticketOriginal.NumTicket, ticketOriginal.IdEquipo, ticketOriginal.IdUsuario, ticketOriginal.FechaEntrada, ticketOriginal.FechaResolucion, ticketOriginal.Descripcion, ticketOriginal.Resolucion, ticketOriginal.Estado, ticketOriginal.Categoria, ticketOriginal.TecnicoAsignado, ticketOriginal.NotasTecnico, valoracion, tbValoracion.Text))) { Negocio.EliminarTicketEnCurso(idTicket); VentanaInformacion informacion = new VentanaInformacion("Valoración realizada con éxito", "exito"); informacion.ShowDialog(); this.DialogResult = true; this.Close(); } else { VentanaInformacion advertencia = new VentanaInformacion("No se ha podido realizar la valoración", "advertencia"); advertencia.ShowDialog(); } } catch (IOException) { VentanaInformacion modal = new VentanaInformacion("Error al acceder a la base de datos", "advertencia"); modal.ShowDialog(); } }
//--------------------------------------------------------------------------------FUNCIONES ASOCIADAS A EVENTOS--------------------------------------------------------------------------- /// <summary> /// Gestiona el evento click del botón btAñadir, va a permitir añadir de forma másiva un listado de objetos a la base de datos /// en primer lugar se realizará una selección para determinar que tipo de tabla hemos de rellenar y a continuación se procederá /// a actualizar la base de datos. /// TODO validar campos, ahora si los campos no son válidos simplemente no se crea el registro, lo ideal sería validar para dar un mensaje /// sobre el porque no se crea. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtAñadir_Click(object sender, RoutedEventArgs e) { int contador = 0; //aquí añadir usuarios a la base de datos try { switch (tipoObjeto) { case "usuario": foreach (Usuario user in listaUsuarios) { user.Password = Utils.Utilidad.CalculateMD5Hash(user.Password); if (Negocio.CrearUsuario(user)) { contador++; } } VentanaInformacion modal = new VentanaInformacion(contador + " Usuarios añadidos a la base de datos.", "exito"); modal.ShowDialog(); break; case "localidad": foreach (Localidad local in listaLocalidades) { if (Negocio.CrearLocalidad(local)) { contador++; } } VentanaInformacion modal2 = new VentanaInformacion(contador + " Localidades añadidas a la base de datos.", "exito"); modal2.ShowDialog(); break; case "categoria": foreach (Tipo tipo in listaCategorias) { if (Negocio.CrearTipo(tipo)) { contador++; } } VentanaInformacion modal3 = new VentanaInformacion(contador + " Categorias añadidas a la base de datos.", "exito"); modal3.ShowDialog(); break; case "equipo": foreach (Equipo equipo in listaEquipos) { if (Negocio.CrearEquipo(equipo)) { contador++; } } VentanaInformacion modal4 = new VentanaInformacion(contador + " Equipos añadidos a la base de datos.", "exito"); modal4.ShowDialog(); break; case "sede": foreach (Sede sede in listaSedes) { if (Negocio.CrearSede(sede)) { contador++; } } VentanaInformacion modal5 = new VentanaInformacion(contador + " Sedes añadidas a la base de datos.", "exito"); modal5.ShowDialog(); break; } } catch (IOException) { VentanaInformacion modal = new VentanaInformacion("Error al acceder a la base de datos", "advertencia"); modal.ShowDialog(); } this.Close(); }
//-----------------------------------------------------------------------------FUNCIONES ASOCIADAS A EVENTOS------------------------------------------------------------------------ /// <summary> /// Gestiona el evento Click de BtEnviar, permite mandar un mail al usuario con la contraseña generada de forma aleatoria /// <see cref="GenerarClaveAleatoria"/> /// Verífica el mail y si existe manda la contraseña y actualiza la base de datos "usuario". /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtEnviar_Click(object sender, RoutedEventArgs e) { // Aquí en destinatario pondríamos destinatario=tbCorreo.Text; string destinatario = "*****@*****.**"; string password = "******"; //Aquí iria password del administrador(cuenta sólo para enviar contraseñas) string remitente = "*****@*****.**"; //Aquí iria dirección de correo del administrador. string gestorCorreo = "SMTP.Office365.com"; // Para cada gestor de correo es distinta System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(); msg.To.Add(new MailAddress(destinatario)); msg.Subject = "Información seleccionada"; //Evitamos poner clave, password... por si un filtro busca información. msg.SubjectEncoding = System.Text.Encoding.UTF8; string clave = GenerarClaveAleatoria(); msg.Body = "Su nueva clave es: " + clave; msg.BodyEncoding = System.Text.Encoding.UTF8; msg.IsBodyHtml = true; msg.From = new MailAddress(remitente); //Desde correo de outlook funciona bien System.Net.Mail.SmtpClient cliente = new System.Net.Mail.SmtpClient(gestorCorreo, 587); NetworkCredential myCreds = new NetworkCredential(remitente, password); cliente.Credentials = myCreds; cliente.EnableSsl = true; try { Usuario usuario = Negocio.VerificarUsuario(tbCorreo.Text); if (usuario != null) { if (Negocio.EditarUsuario(new Usuario(usuario.UsuarioId, Utilidad.CalculateMD5Hash(clave), usuario.Nombre, usuario.Apellidos, usuario.Extension, usuario.Mail, usuario.NumOficina, usuario.RolUsuario))) { VentanaInformacion modal = new VentanaInformacion("Su clave ha sido restablecida, siga las instrucciones recibidas en su correo electrónico", "exito"); modal.ShowDialog(); } else { VentanaInformacion modal = new VentanaInformacion("Error al restablecer la clave, reintentelo de nuevo.", "advertencia"); modal.ShowDialog(); } cliente.Send(msg); } else { VentanaInformacion modal = new VentanaInformacion("El email introducido no es válido", "advertencia"); modal.ShowDialog(); } } catch (IOException) { VentanaInformacion modal = new VentanaInformacion("Error al acceder a la base de datos, base de datos no actualizada.", "advertencia"); modal.ShowDialog(); } catch (Exception) { VentanaInformacion modal = new VentanaInformacion("Error al enviar el e-mail, revise su conexión.", "advertencia"); modal.ShowDialog(); } }
/// <summary> /// Comprueba usuario y contraseña haciendo uso de <see cref="Negocio.VerificarLogin(string, string)"/> /// En caso de ser un usuario correcto, determina su rol y en función de él abre la aplicación en modo "cliente", "técnico" o /// "administrador". En caso de ingresar tres veces mál la contraseña, muestra un error y cierra la aplicación. /// </summary> private void IngresarSistema() { Usuario user = null; baseDeDatosOffline = false; try { user = Negocio.VerificarLogin(tbCorreo.Text, Utilidad.CalculateMD5Hash(tbPassword.Password.ToString())); } catch (IOException e) { baseDeDatosOffline = true; VentanaInformacion modal = new VentanaInformacion(e.Message, "advertencia"); modal.ShowDialog(); } if (user != null) { switch (user.RolUsuario) { case (int)RolUsuario.cliente: VentanaCliente cliente = new VentanaCliente(user); cliente.Owner = this; this.Visibility = Visibility.Hidden; cliente.Show(); break; case (int)RolUsuario.tecnico: VentanaTecnico tecnico = new VentanaTecnico(user); tecnico.Owner = this; this.Visibility = Visibility.Hidden; tecnico.Show(); break; case (int)RolUsuario.gerente: VentanaGerente gerente = new VentanaGerente(user); gerente.Owner = this; this.Visibility = Visibility.Hidden; gerente.Show(); break; case (int)RolUsuario.administrador: VentanaAdministrador principal = new VentanaAdministrador(user); principal.Owner = this; this.Visibility = Visibility.Hidden; principal.Show(); break; default: MessageBox.Show("No hay contenido para este tipo de usuario"); break; } } else { if (!baseDeDatosOffline) { intentos++; if (intentos < INTENTOS_PERMITIDOS) { VentanaInformacion modal = new VentanaInformacion("Usuario o password erróneos, intento " + intentos + " de " + INTENTOS_PERMITIDOS + ".", "advertencia"); modal.ShowDialog(); } else { VentanaInformacion modal = new VentanaInformacion("Número de intentos, superados", "advertencia"); modal.ShowDialog(); this.Close(); } } } }