private void btnConfirmar_Click(object sender, EventArgs e) { if (!conectorServidor.estaConectado()) { MessageBox.Show("No se pudo establecer conexión con el servidor. Ejecute la aplicación servidor e inicie sesión nuevamente."); error = 1; this.Close(); return; } if (string.IsNullOrWhiteSpace(txtNuevaContrasena.Text)) //Si el campo de la nueva contraseña esta vacio { MessageBox.Show("Debe ingresar la nueva contraseña"); return; } proveedor.Accion = 5; //Asigna la accion a realizar, 5 = cambiar contraseña proveedor.Contrasena = Encriptador.crearHashMasSalto(txtNuevaContrasena.Text); //Encripta la contraseña con un hash + salt proveedor.Mensaje = null; proveedor.AccionCompletada = false; conectorServidor.EnviarAServidor(proveedor); //Envia el proveedor al servidor //Espera respuesta del servidor while (conectorServidor.ProveedorRecibido == null) //Mientras el conector no haya recibido un proveedor { Thread.Sleep(200); //Espera 200 ms } proveedor = conectorServidor.ProveedorRecibido; conectorServidor.ProveedorRecibido = null; this.Hide(); //Oculta el formulario }
private void btnIngresar_Click(object sender, EventArgs e) //Evento click en boton ingresar { if (!conectorServidor.estaConectado()) //Si el hilo de escucha no se esta ejecutando { MessageBox.Show("El servidor no responde, verifique que se encuentre en ejecución"); error = 1; return; } if (string.IsNullOrWhiteSpace(txtUsuario.Text) || string.IsNullOrWhiteSpace(txtContrasena.Text)) //Si el campo de texto o la contraseña estan vacios { return; } proveedor = new ProveedorSerializable(); proveedor.NombreUsuario = txtUsuario.Text; //////// proveedor.Contrasena = txtContrasena.Text; ///convertir a byt[] proveedor.BytesContr = System.Text.Encoding.UTF8.GetBytes(txtContrasena.Text); proveedor.Accion = 1; //Establece la accion a ejecutar, 1 = Iniciar sesion conectorServidor.EnviarAServidor(proveedor); //Envia el objeto al servidor //Espera respuesta del servidor while (conectorServidor.ProveedorRecibido == null) //Mientras no haya recibido un proveedor { Thread.Sleep(200); //Espera 200 ms if (!conectorServidor.estaConectado()) { MessageBox.Show("El servidor no se está ejecutando."); return; } } proveedor = conectorServidor.ProveedorRecibido; conectorServidor.ProveedorRecibido = null; if (proveedor.Mensaje != null) //Si hubo algún error { MessageBox.Show(proveedor.Mensaje); //Lo muestra txtUsuario.Text = null; txtContrasena.Text = null; proveedor = null; return; } else { MessageBox.Show(string.Format("Bienvenido {0}", proveedor.NombreUsuario)); this.Hide(); //Oculta el formulario this.Close(); this.Dispose(); } }
private void btnRegistrarse_Click(object sender, EventArgs e) { if (!conectorServidor.estaConectado()) //Si el hilo de escucha no se esta ejecutando { MessageBox.Show("No se pudo establecer conexión con el servidor. Ejecute la aplicación servidor e inicie sesión nuevamente."); error = 1; this.Hide(); return; } //Si quedaron campos vacios if (string.IsNullOrWhiteSpace(txtNombreUsuario.Text) || string.IsNullOrWhiteSpace(txtEmpresa.Text) || string.IsNullOrWhiteSpace(txtCorreo.Text) || string.IsNullOrWhiteSpace(txtContrasena.Text)) //Falta la contrasena { MessageBox.Show("No deje espacios en blanco"); return; } else { nuevoProveedor = new ProveedorSerializable(); nuevoProveedor.NombreUsuario = txtNombreUsuario.Text; nuevoProveedor.Empresa = txtEmpresa.Text; nuevoProveedor.Correo = txtCorreo.Text; nuevoProveedor.Contrasena = Encriptador.crearHashMasSalto(txtContrasena.Text); //Encripta la contraseña con un hash + salt nuevoProveedor.Accion = 2; //Establece la accion por realizar, 2= registrar usuario conectorServidor.EnviarAServidor(nuevoProveedor); //Envia el nuevo proveedor al servidor //Espera respuesta del servidor while (conectorServidor.ProveedorRecibido == null) //Mientras no haya recibido un proveedor del servidor { Thread.Sleep(200); //Espera 200 ms } if (conectorServidor.ProveedorRecibido.AccionCompletada) //Si la accion se realizó correctamente { MessageBox.Show("Registrado correctamente"); nuevoProveedor = null; conectorServidor.ProveedorRecibido = null; this.Close(); this.Dispose(); } else { MessageBox.Show("Fallo en el registro: " + conectorServidor.ProveedorRecibido.Mensaje); nuevoProveedor = null; conectorServidor.ProveedorRecibido = null; } } }
public void crearCuenta(ProveedorSerializable nuevoProveedor) { conexion.Open(); //Abre la conexion con la BD try { adaptador = new SqlDataAdapter(); //nuevo adaptador SQL adaptador.InsertCommand = new SqlCommand(string.Format("INSERT INTO PROVEEDOR (nombreUsuario, empresa, correo, contrasena) " + /*Comando registrar nueva cuenta de proveedor*/ "VALUES ('{0}', '{1}', '{2}', '{3}')", nuevoProveedor.NombreUsuario, nuevoProveedor.Empresa, nuevoProveedor.Correo, nuevoProveedor.Contrasena), conexion); adaptador.InsertCommand.ExecuteNonQuery(); //Ejecuta el comando nuevoProveedor.AccionCompletada = true; //La accion se completo correctamente } catch (Exception e) { //Hubo un error en la ejecucion del comando nuevoProveedor.Mensaje = e.Message; } conexion.Close(); //Cierra la conexion con la BD }
public void cambiarContrasena(ProveedorSerializable camContrasProvee) { conexion.Open(); //Abre la conexion con la BD try { adaptador = new SqlDataAdapter(); adaptador.UpdateCommand = new SqlCommand(string.Format("UPDATE PROVEEDOR " + /*Comando actualizar la contraseña del proveedor*/ "SET contrasena = '{0}' " + "WHERE iDProveedor = {1}", camContrasProvee.Contrasena, camContrasProvee.IDProveedor), conexion); adaptador.UpdateCommand.ExecuteNonQuery(); //Ejecuta el comando camContrasProvee.AccionCompletada = true; //La accion se completo correctamente } catch (Exception e) //Hubo un error al ejecutar la accion { camContrasProvee.Mensaje = e.Message; } camContrasProvee.Contrasena = null; conexion.Close(); //Cierra la conexion con la BD }
public ConectorServidor() { proveedorRecibido = null; productoRecibido = null; objetoRecibido = null; try { ipServidor = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 50000); //ipServidor = new IPEndPoint(IPAddress.Parse("192.168.1.3"), 50000); cliente = new TcpClient(); cliente.Connect(ipServidor); flujo = cliente.GetStream(); lecturaThread = new Thread(new ThreadStart(ejecutarCliente)); lecturaThread.Start(); activo = true; } catch (Exception) { Error = "No se pudo establecer conexión con el servidor, ejecute la aplicación servidor."; } }
public void actualizarProductosProve(ProveedorSerializable actualizarProductos) { conexion.Open(); //Abre la conexion con la BD for (int i = 0; i < actualizarProductos.Productos.Count; i++) //Para cada producto del proveedor { if (((ProductoSerializable)actualizarProductos.Productos[i]).Accion == 3) //Si hubo modificaciones { try { adaptador = new SqlDataAdapter(); //Obtiene los valores modificados string descripcion = ((ProductoSerializable)actualizarProductos.Productos[i]).Descripcion; string fabricante = ((ProductoSerializable)actualizarProductos.Productos[i]).Fabricante; string descripcionDetallada = ((ProductoSerializable)actualizarProductos.Productos[i]).DescripcionDetallada; int cantidad = ((ProductoSerializable)actualizarProductos.Productos[i]).Cantidad; int iDProducto = ((ProductoSerializable)actualizarProductos.Productos[i]).IDProducto; decimal precio = ((ProductoSerializable)actualizarProductos.Productos[i]).Precio; adaptador.UpdateCommand = new SqlCommand(string.Format("UPDATE PRODUCTO " + /*Comando actualizar fila de productos*/ "SET descripcion = '{0}', fabricante = '{1}', " + "precio = {2}, descripcionDetallada = '{3}' " + "WHERE iDProducto = {4}", descripcion, fabricante, precio, descripcionDetallada, iDProducto), conexion); adaptador.UpdateCommand.ExecuteNonQuery(); //Ejecuta el comando adaptador.UpdateCommand = new SqlCommand(string.Format("UPDATE PROVEEDOR_PRODUCTO " + /*Comando actualizar cantidad*/ "SET cantidad = {0} WHERE iDProducto = {1} " + "AND iDProveedor = {2}", cantidad, iDProducto, actualizarProductos.IDProveedor), conexion); adaptador.UpdateCommand.ExecuteNonQuery(); //Ejecuta el comando ((ProductoSerializable)actualizarProductos.Productos[i]).AccionCompletada = true; //La accion se completo correctamente } catch (Exception e) //Si hubo algun error durante con la ejecucion del comando { ((ProductoSerializable)actualizarProductos.Productos[i]).Mensaje = e.Message; } } } actualizarProductos.AccionCompletada = true; //La accion se completó conexion.Close(); //Cierra la conexion con la BD }
private void opcCerrarSesion_Click(object sender, EventArgs e) { tablaProveedor.Rows.RemoveAt(0); //Borra la fila de la tabla proveedor while (tablaProductos.Rows.Count != 0) { tablaProductos.Rows.RemoveAt(0); //Borra las filas de la table productos } btnActualizarProveedor.Visible = false; btnActualizarProductos.Visible = false; btnAgregarProducto.Visible = false; btnCambiarContrasena.Visible = false; btnEliminarProducto.Visible = false; tablaProductos.Visible = false; tablaProveedor.Visible = false; lblArticulos.Visible = false; lblProveedor.Visible = false; proveedor = null; conectorServidor = null; opcIniciarSesion.Enabled = true; opcCerrarSesion.Enabled = false; }
private void btnCambiarContrasena_Click(object sender, EventArgs e) { if (!conectorServidor.estaConectado()) //Si el hilo no se esta ejecutando { MessageBox.Show("No se pudo establecer conexión con el servidor. Ejecute la aplicación servidor e inicie sesión nuevamente."); opcCerrarSesion_Click(null, null); return; } FCambioContrasena cambiarContrasena = new FCambioContrasena(proveedor, conectorServidor); //Formulario para cambio de contraseña cambiarContrasena.ShowDialog(); //Muestra el formulario if (cambiarContrasena.Error == 1) { opcCerrarSesion_Click(null, null); return; } proveedor = cambiarContrasena.Proveedor; cambiarContrasena.Proveedor = null; if (proveedor.Mensaje == null && proveedor.Accion == 5) //Si no hubo errores y si la accion fue asignada (no se canceló) { MessageBox.Show("Contraseña cambiada correctamente"); cambiarContrasena.Close(); cambiarContrasena.Dispose(); cambiarContrasena = null; } else if (proveedor.Mensaje != null) //Si hubo errores { MessageBox.Show(proveedor.Mensaje); return; } proveedor.Accion = 0; }
private void nuevoClienteConectado(Object objCliente) { int numeroCliente = ((KeyValuePair <int, TcpClient>)objCliente).Key; TcpClient tcpCliente = ((KeyValuePair <int, TcpClient>)objCliente).Value; //El nuevo cliente TCP NetworkStream flujo = tcpCliente.GetStream(); //Obtiene el flujo del cliente TCP MemoryStream flujoMemoriaLectura; //Flujo de memoria de lectura MemoryStream flujoMemoriaEscritura; //Flujo de memoria de escritura Object objetoRecibido = null; //Objeto que se recibe del cliente ProveedorSerializable proveedorRecibido = null; //Objeto ProveedorSerializable recibido del cliente ProductoSerializable productoRecibido = null; //Objeto ProductoSerializable recibido del cliente BinaryFormatter formatterLectura; //Deserializador BinaryFormatter formatterEscritura; //Serializador SolicitudesCliente solicitudes; solicitudes = new SolicitudesCliente(); //Procesa el tipo de solicitud requerida por el cliente byte[] bufferEscritura; //Buffer de escritura byte[] bufferLectura; //Buffer de lectura //En espera de datos del cliente permanentemente while (activo) { try { //LEE DATOS bufferLectura = new byte[10000]; //Buffer que recibe los datos del cliente tcpCliente.Client.Receive(bufferLectura); //SE BLOQUE HASTA RECIBIR DATOS DEL CLIENTE formatterLectura = new BinaryFormatter(); //Nuevo deserializador flujoMemoriaLectura = new MemoryStream(bufferLectura); //Obtiene el flujo de memoria del buffer de lectura objetoRecibido = formatterLectura.Deserialize(flujoMemoriaLectura); //Deserializa el objeto recibido //Determina el tipo de objeto recibido if (objetoRecibido.GetType() == typeof(ProveedorSerializable)) { proveedorRecibido = (ProveedorSerializable)objetoRecibido; } else if (objetoRecibido.GetType() == typeof(ProductoSerializable)) { productoRecibido = (ProductoSerializable)objetoRecibido; } flujoMemoriaLectura.Flush(); flujo.Flush(); if (proveedorRecibido != null) //Si se recibio un objeto tipo ProveedorSerializable { switch (proveedorRecibido.Accion) //Accion requerida por el cliente { case 1: solicitudes.iniciarSesion(proveedorRecibido); break; case 2: solicitudes.crearCuenta(proveedorRecibido); break; case 3: solicitudes.actualizarProveedor(proveedorRecibido); break; case 4: solicitudes.actualizarProductosProve(proveedorRecibido); break; case 5: solicitudes.cambiarContrasena(proveedorRecibido); break; } } else if (productoRecibido != null) //Si se recibio un objeto tipo ProductoSerializable { switch (productoRecibido.Accion) //Accion requerida por el cliente { case 1: solicitudes.agregarProducto(productoRecibido); break; case 2: solicitudes.eliminarProductoProve(productoRecibido); break; case 3: solicitudes.listarProductos(productoRecibido); break; } } flujoMemoriaEscritura = new MemoryStream(); //Nuevo flujo de memoria de escritura formatterEscritura = new BinaryFormatter(); //Nuevo serializador if (proveedorRecibido != null) //Si se recibio un objeto tipo ProductoSerializable { formatterEscritura.Serialize(flujoMemoriaEscritura, proveedorRecibido); //Serializa el objeto al flujo de memoria de escritura proveedorRecibido = null; } else if (productoRecibido != null) //Si se recibio un objeto tipo ProductoSerializable { formatterEscritura.Serialize(flujoMemoriaEscritura, productoRecibido); //Serializa el objeto al flujo de memoria de escritura productoRecibido = null; } bufferEscritura = flujoMemoriaEscritura.ToArray(); //Copia el flujo a un array de bytes (al buffer de escritura) tcpCliente.Client.Send(bufferEscritura); //Envia respuesta al cliente flujoMemoriaEscritura.Flush(); flujo.Flush(); } catch (Exception) //Si hubo algún error durante el envio o recibimiento de datos con el cliente { MessageBox.Show("Se ha desconectado del host # " + (numeroCliente + 1)); break; } bufferLectura = null; formatterLectura = null; flujoMemoriaLectura = null; objetoRecibido = null; flujoMemoriaEscritura = null; formatterEscritura = null; bufferEscritura = null; } tcpCliente.Close(); //Cierra la conexion con el cliente TCP tcpCliente = null; flujo = null; solicitudes = null; }
private void tablaProductos_CellValueChanged(object sender, DataGridViewCellEventArgs e) { if (proveedorActualizado == null) { proveedorActualizado = proveedor.copiar(proveedor); //Copia los valores del proveedor original a un nuevo objeto proveedor } switch (e.ColumnIndex) //Determina la columna que se editó { case 1: if (tablaProductos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value == null) //Si la celda quedó vacía { ((ProductoSerializable)proveedorActualizado.Productos[e.RowIndex]).Descripcion = null; proveedorActualizado.Mensaje = "Celdas vacías"; } else { proveedorActualizado.Mensaje = null; ((ProductoSerializable)proveedorActualizado.Productos[e.RowIndex]).Descripcion = (string)tablaProductos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value; } break; case 2: if (tablaProductos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value == null) //Si la celda quedó vacía { ((ProductoSerializable)proveedorActualizado.Productos[e.RowIndex]).Fabricante = null; proveedorActualizado.Mensaje = "Celdas vacías"; } else { proveedorActualizado.Mensaje = null; ((ProductoSerializable)proveedorActualizado.Productos[e.RowIndex]).Fabricante = (string)tablaProductos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value; } break; case 3: if (tablaProductos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value == null) //Si la celda quedó vacía { ((ProductoSerializable)proveedorActualizado.Productos[e.RowIndex]).Cantidad = 0; proveedorActualizado.Mensaje = "Celdas vacías"; } else { proveedorActualizado.Mensaje = null; try { ((ProductoSerializable)proveedorActualizado.Productos[e.RowIndex]).Cantidad = Int32.Parse(tablaProductos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString()); } catch (Exception) { } } break; case 4: if (tablaProductos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value == null) //Si la celda quedó vacía { ((ProductoSerializable)proveedorActualizado.Productos[e.RowIndex]).Precio = 0; proveedorActualizado.Mensaje = "Celdas vacías"; } else { try { ((ProductoSerializable)proveedorActualizado.Productos[e.RowIndex]).Precio = decimal.Parse(tablaProductos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString()); proveedorActualizado.Mensaje = null; } catch (Exception) { tablaProductos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = null; proveedorActualizado.Mensaje = "Celdas vacías"; } } break; case 5: ((ProductoSerializable)proveedorActualizado.Productos[e.RowIndex]).DescripcionDetallada = (string)((DataGridView)sender).Rows[e.RowIndex].Cells[e.ColumnIndex].Value; break; } ((ProductoSerializable)proveedorActualizado.Productos[e.RowIndex]).Accion = 3; //Accion = 3: si hubo cambios, Accion != 3 no hubo cambios }
public FCambioContrasena(ProveedorSerializable proveedor, ConectorServidor conectorServidor) { InitializeComponent(); this.conectorServidor = conectorServidor; this.proveedor = proveedor; }
private void btnActualizarProveedor_Click(object sender, EventArgs e) { if (!conectorServidor.estaConectado()) { MessageBox.Show("No se pudo establecer conexión con el servidor. Ejecute la aplicación servidor e inicie sesión nuevamente."); opcCerrarSesion_Click(null, null); return; } string oldNombreUsuario = proveedor.NombreUsuario; //Copia string oldEmpresa = proveedor.Empresa; //los valores string oldCorreo = proveedor.Correo; //antiguos del proveedor if (tablaProveedor.Rows[0].Cells[0].Value.ToString().Equals(oldNombreUsuario) && //Si los datos antiguos tablaProveedor.Rows[0].Cells[1].Value.ToString().Equals(oldEmpresa) && //son iguales tablaProveedor.Rows[0].Cells[2].Value.ToString().Equals(oldCorreo)) //a los datos actualizados { MessageBox.Show("No se modificó ningún dato."); //No hace falta actualizar los datos return; } //Las columnas que no se modificaron se marcan como null if (tablaProveedor.Rows[0].Cells[0].Value.ToString().Equals(oldNombreUsuario)) { proveedor.NombreUsuario = null; } else { proveedor.NombreUsuario = tablaProveedor.Rows[0].Cells[0].Value.ToString(); } if (tablaProveedor.Rows[0].Cells[1].Value.ToString().Equals(oldEmpresa)) { proveedor.Empresa = null; } else { proveedor.Empresa = tablaProveedor.Rows[0].Cells[1].Value.ToString(); } if (tablaProveedor.Rows[0].Cells[2].Value.ToString().Equals(oldCorreo)) { proveedor.Correo = null; } else { proveedor.Correo = tablaProveedor.Rows[0].Cells[2].Value.ToString(); } proveedor.AccionCompletada = false; proveedor.Accion = 3; //Establece la accion requerida, 3 = actualizar proveedor proveedor.Mensaje = null; conectorServidor.EnviarAServidor(proveedor); //Envia el objeto al servidor while (conectorServidor.ProveedorRecibido == null) //Mientras no haya recibido un proveedor { Thread.Sleep(200); //Espera 200 ms } proveedor = conectorServidor.ProveedorRecibido; conectorServidor.ProveedorRecibido = null; if (proveedor.Mensaje != null) //Si hubo algún error { //Revierte los cambios tablaProveedor.Rows[0].Cells[0].Value = proveedor.NombreUsuario = oldNombreUsuario; tablaProveedor.Rows[0].Cells[1].Value = proveedor.Empresa = oldEmpresa; tablaProveedor.Rows[0].Cells[2].Value = proveedor.Correo = oldCorreo; MessageBox.Show(proveedor.Mensaje); //Muestra el error } else { //Copia los datos al objeto proveedor proveedor.NombreUsuario = tablaProveedor.Rows[0].Cells[0].Value.ToString(); proveedor.Empresa = tablaProveedor.Rows[0].Cells[1].Value.ToString(); proveedor.Correo = tablaProveedor.Rows[0].Cells[2].Value.ToString(); MessageBox.Show("La información se actualizó correctamente."); } }
private void opcIniciarSesion_Click(object sender, EventArgs e) { if (conectorServidor != null) //Si no se ha conectado al servidor { if (!conectorServidor.estaConectado()) { //conectorServidor.LecturaThread.Abort(); conectorServidor = null; conectorServidor = new ConectorServidor(); if (conectorServidor.Error != null) { MessageBox.Show(conectorServidor.Error); conectorServidor = null; return; } } } else { conectorServidor = new ConectorServidor(); if (conectorServidor.Error != null) { MessageBox.Show(conectorServidor.Error); conectorServidor = null; return; } } FIniciarSesion inicioSesion = new FIniciarSesion(conectorServidor); inicioSesion.ShowDialog(); if (inicioSesion.Error == 1) { inicioSesion.Close(); inicioSesion.Dispose(); inicioSesion = null; opcCerrarSesion_Click(null, null); return; } proveedor = inicioSesion.Proveedor; if (proveedor == null) { return; } if (proveedor.Mensaje == null) //Si no hubo errores { //Agrega la informacion del proveedor a la tabla proveedor tablaProveedor.Rows.Add(new Object[] { proveedor.NombreUsuario, proveedor.Empresa, proveedor.Correo, proveedor.Habilitado }); for (int i = 0; i < proveedor.Productos.Count; i++) //Agrega los productos del proveedor { tablaProductos.Rows.Add(new Object[] { ((ProductoSerializable)proveedor.Productos[i]).IDProducto, ((ProductoSerializable)proveedor.Productos[i]).Descripcion, ((ProductoSerializable)proveedor.Productos[i]).Fabricante, ((ProductoSerializable)proveedor.Productos[i]).Cantidad, ((ProductoSerializable)proveedor.Productos[i]).Precio, ((ProductoSerializable)proveedor.Productos[i]).DescripcionDetallada }); } opcIniciarSesion.Enabled = false; opcCerrarSesion.Enabled = true; lblArticulos.Visible = true; lblProveedor.Visible = true; tablaProveedor.Visible = true; tablaProductos.Visible = true; btnActualizarProveedor.Visible = true; btnCambiarContrasena.Visible = true; btnAgregarProducto.Visible = true; btnEliminarProducto.Visible = true; btnActualizarProductos.Visible = true; tablaProductos.CellValueChanged += new DataGridViewCellEventHandler(tablaProductos_CellValueChanged); //Maneja el evento de cambio de valor de una celda de la tabla de productos tablaProductos.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(tablaProductos_EditingControlShowing); //Maneja el evento de muestra de cuadro de edicion de una celda } proveedor.Accion = 0; inicioSesion.Close(); inicioSesion.Dispose(); inicioSesion = null; }
public void iniciarSesion(ProveedorSerializable proveedorRecibido) { Object[] fila; //Fila leida de la BD try { conexion.Open(); //Abre la conexion con la BD adaptador = new SqlDataAdapter(string.Format("SELECT iDProveedor, nombreUsuario, empresa, correo, habilitado, contrasena " + /*Comando seleccionar proveedor*/ "FROM PROVEEDOR WHERE nombreUsuario = '{0}' OR correo = '{0}'", proveedorRecibido.NombreUsuario), conexion); dataSet = new DataSet(); //Nuevo DataSet adaptador.Fill(dataSet, "PROVEEDOR"); //Llena el dataSet con el registro obtenido if (dataSet.Tables[0].Rows.Count != 1) //Si no se obtuvo un registro { throw new Exception("El usuario no existe"); //El usuario o correo ingredado no se encuentra registrado } fila = dataSet.Tables[0].Rows[0].ItemArray; //Obtiene la fila con los datos del proveedor ////////////// if (Encriptador.validarContrasena(proveedorRecibido.Contrasena, (string)fila[5])) //Si la contraseña ngresada es válida if (Encriptador.validarContrasena(proveedorRecibido.BytesContr, (string)fila[5])) //Si la contraseña ngresada es válida { if (proveedorRecibido.Habilitado = (bool)fila[4]) //Si la cuenta está habilitada { proveedorRecibido.IDProveedor = (int)fila[0]; //Copia los proveedorRecibido.NombreUsuario = (string)fila[1]; //datos de proveedorRecibido.Empresa = (string)fila[2]; //la BD proveedorRecibido.Correo = (string)fila[3]; //al objeto proveedorRecibido adaptador = new SqlDataAdapter(String.Format("SELECT PD.iDProducto, PD.descripcion, PD.fabricante, PV_PD.cantidad, PD.precio, PD.descripcionDetallada, PV.iDProveedor " + /*Obtiene los productos del proveedor*/ "FROM PROVEEDOR AS PV, PRODUCTO AS PD, PROVEEDOR_PRODUCTO AS PV_PD " + "WHERE PD.iDProducto = PV_PD.iDProducto AND PV_PD.iDProveedor = PV.iDProveedor AND PV.iDProveedor = {0}", proveedorRecibido.IDProveedor), conexion); dataSet = new DataSet(); //Nuevo DataSet adaptador.Fill(dataSet, "PRODUCTO"); //Llena el DataSet con las filas de productos if (dataSet.Tables[0].Rows.Count != 0) //Si no se obtuvieron 0 filas { for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++) //Para cada fila de productos { fila = dataSet.Tables[0].Rows[i].ItemArray; //Obtiene la fila con los datos del producto proveedorRecibido.Productos.Add(new ProductoSerializable((int)fila[0], (string)fila[1], //Agrega un nuevo objeto (string)fila[2], (int)fila[3], //ProductoSerializable al (decimal)fila[4], (string)fila[5], //proveedor (int)fila[6])); } } proveedorRecibido.AccionCompletada = true; //La accion se completo correctamente } else //Si la cuenta no esta habilitada { proveedorRecibido.Mensaje = "Su cuenta no ha sido habilitada por el administrador"; } } else //Si la contraseña es incorrecta { proveedorRecibido.Mensaje = "Contraseña incorrecta"; } //////// proveedorRecibido.Contrasena = null; //Borra la contraseña del objeto proveedorRecibido.BytesContr = null; } catch (Exception e) { proveedorRecibido.Mensaje = e.Message; } conexion.Close(); //Cierra la conexion con la BD }
private void btnActualizarProductos_Click(object sender, EventArgs e) { if (!conectorServidor.estaConectado()) //Si el hilo no se esta ejecutando { MessageBox.Show("No se pudo establecer conexión con el servidor. Ejecute la aplicación servidor e inicie sesión nuevamente."); opcCerrarSesion_Click(null, null); return; } string errores = null; //Almacena los errores que se producen if (proveedorActualizado == null) //Si no se hizo alguna actualizacion a las celdas de la tabla proveedor { MessageBox.Show("No se han modificado los datos."); return; } //Comprobar que no hayan quedado celdas en blanco if (proveedorActualizado.Mensaje != null) { MessageBox.Show("No debe dejar celdas en blanco"); return; } proveedorActualizado.Accion = 4; //Estable la accion requerida, 4 = actualizar productos del proveedor conectorServidor.EnviarAServidor(proveedorActualizado); //Envia el proveedor al servidor while (conectorServidor.ProveedorRecibido == null) //Mientras no haya recibido un proveedor del servidor { Thread.Sleep(200); } proveedorActualizado = conectorServidor.ProveedorRecibido; conectorServidor.ProveedorRecibido = null; for (int i = 0; i < proveedorActualizado.Productos.Count; i++) { if (((ProductoSerializable)proveedor.Productos[i]).Accion == 3) //Si la fila se modificó { if (((ProductoSerializable)proveedorActualizado.Productos[i]).Mensaje != null) //Si no hubo mensajes de error { tablaProductos.Rows[i].Cells[1].Value = ((ProductoSerializable)proveedor.Productos[i]).Descripcion; tablaProductos.Rows[i].Cells[2].Value = ((ProductoSerializable)proveedor.Productos[i]).Fabricante; tablaProductos.Rows[i].Cells[3].Value = ((ProductoSerializable)proveedor.Productos[i]).Cantidad; tablaProductos.Rows[i].Cells[4].Value = ((ProductoSerializable)proveedor.Productos[i]).Precio; tablaProductos.Rows[i].Cells[5].Value = ((ProductoSerializable)proveedor.Productos[i]).DescripcionDetallada; errores += "Error al actualizar los datos de la fila " + i + ". Compruebe que no se repita algún producto.\n"; } else { ((ProductoSerializable)proveedor.Productos[i]).Descripcion = ((ProductoSerializable)proveedorActualizado.Productos[i]).Descripcion; ((ProductoSerializable)proveedor.Productos[i]).Fabricante = ((ProductoSerializable)proveedorActualizado.Productos[i]).Fabricante; ((ProductoSerializable)proveedor.Productos[i]).Cantidad = ((ProductoSerializable)proveedorActualizado.Productos[i]).Cantidad; ((ProductoSerializable)proveedor.Productos[i]).Precio = ((ProductoSerializable)proveedorActualizado.Productos[i]).Precio; ((ProductoSerializable)proveedor.Productos[i]).DescripcionDetallada = ((ProductoSerializable)proveedorActualizado.Productos[i]).DescripcionDetallada; } } } if (errores != null) { MessageBox.Show(errores); } else { MessageBox.Show("Los datos se actualizaron correctamente"); } proveedorActualizado = null; }
public void actualizarProveedor(ProveedorSerializable actProveedor) { conexion.Open(); //Abre la conexion con la BD string cadenaConsulta = "UPDATE PROVEEDOR SET WHERE iDProveedor = " + actProveedor.IDProveedor; string columnas = ""; //columnas que se modificaron int columnasPorActualizar = 0; //Cantidad de columnas que se modificaron int comas = 0; //Total de comas if (actProveedor.NombreUsuario != null) //Si la columna NombreUsuario se modifico { columnasPorActualizar++; //Incrementa el total de columnas por actualizar } if (actProveedor.Empresa != null) //Si la columna Empresa se modifico { columnasPorActualizar++; //Incrementa el total de columnas por actualizar } if (actProveedor.Correo != null) //Si la columna Correo se modifico { columnasPorActualizar++; //Incrementa el total de columnas por actualizar } if (actProveedor.NombreUsuario != null) { if (comas == columnasPorActualizar - 1) //Si el total de comas colocadas es el total de columnas - 1 { columnas = string.Concat(columnas, "nombreUsuario = '" + actProveedor.NombreUsuario + "'"); //Concatena sin coma al final } else { columnas = string.Concat(columnas, "nombreUsuario = '" + actProveedor.NombreUsuario + "', "); //Concatena con coma al final comas++; //Incrementa el total de comas colocadas } } if (actProveedor.Empresa != null) { if (comas == columnasPorActualizar - 1) //Si el total de comas colocadas es el total de columnas - 1 { columnas = string.Concat(columnas, "empresa = '" + actProveedor.Empresa + "'"); //Concatena sin coma al final } else { columnas = string.Concat(columnas, "empresa = '" + actProveedor.Empresa + "', "); //Concatena con coma al final comas++; } } if (actProveedor.Correo != null) { if (comas == columnasPorActualizar - 1) //Si el total de comas colocadas es el total de columnas - 1 { columnas = string.Concat(columnas, "correo = '" + actProveedor.Correo + "'"); //Concatena sin coma al final } else { columnas = string.Concat(columnas, "correo = '" + actProveedor.Correo + "', "); //Concatena con coma al final comas++; } } cadenaConsulta = cadenaConsulta.Insert(cadenaConsulta.IndexOf("SET") + 4, columnas); //Inserta las columnas y sus nuevos valores a la cadena de la consulta try { adaptador = new SqlDataAdapter(); //Nuevo adaptador SQL adaptador.UpdateCommand = new SqlCommand(cadenaConsulta, conexion); //Asigna el comando de actualizacion adaptador.UpdateCommand.ExecuteNonQuery(); //Ejecuta el comando actProveedor.AccionCompletada = true; //La accion se completo correctamente } catch (Exception e) { //Hubo un error al ejecutar la consulta actProveedor.Mensaje = e.Message; } conexion.Close(); //Cierra la conexion con la BD }