public int clear(CuentaDTO cuenta) { int res = 0; try { connection.Open(); MySqlCommand myCommand = new MySqlCommand(); myCommand.Connection = connection; myCommand.CommandText = "DELETE FROM correo WHERE cuenta_idcuenta=?idcuenta"; myCommand.Parameters.Add("?idcuenta", MySqlDbType.Int16).Value = cuenta.IdCuenta; myCommand.ExecuteNonQuery(); myCommand.CommandText = "DELETE FROM origendestino WHERE 1=1"; myCommand.ExecuteNonQuery(); myCommand.CommandText = "DELETE FROM adjunto WHERE 1=1"; myCommand.ExecuteNonQuery(); connection.Close(); res = 1; return res; } catch (MySqlException ex) { return -1; } }
/// <summary> /// Crea una nueva Cuenta en la Base de Datos /// </summary> /// <param name="cuenta"></param> /// <returns></returns> public int create(CuentaDTO cuenta) { int generatedKey; try { connection.Open(); MySqlCommand myCommand = new MySqlCommand(); myCommand.Connection = connection; myCommand.CommandText = "INSERT INTO cuenta (usuario,password,server_idserver) VALUES " + "(?user, ?pwd, ?server)"; myCommand.Parameters.Add("?user", MySqlDbType.VarChar).Value = cuenta.User; myCommand.Parameters.Add("?pwd", MySqlDbType.VarChar).Value = cuenta.Password; myCommand.Parameters.Add("?server", MySqlDbType.VarChar).Value = cuenta.Server; generatedKey = myCommand.ExecuteNonQuery(); connection.Close(); } catch (Exception) { throw; } return generatedKey; }
public int CantidadCorreos(CuentaDTO cuenta) { factory.startConnection(); int cantidad = factory.getCorreo().mailCount(cuenta); factory.closeConnection(); return cantidad; }
public void ConectarSmtp(ServerDTO server, CuentaDTO cuenta) { cliente = new SmtpClient(); cliente.Host = server.SmtpServer; cliente.Port = server.SmtpPort; cliente.DeliveryMethod = SmtpDeliveryMethod.Network; cliente.EnableSsl = server.Ssl; cliente.Credentials = new NetworkCredential(cuenta.User, cuenta.Password); }
public void ConectarPop(ServerDTO server, CuentaDTO cuenta) { cliente = new Pop3Client(); try { cliente.Connect(server.PopServer, server.PopPort, server.Ssl); cliente.Authenticate(cuenta.User, cuenta.Password); } catch (OpenPop.Pop3.Exceptions.PopClientException ex) { Console.WriteLine(ex.Message); } }
private void btnAgregar_Click(object sender, EventArgs e) { CuentaDTO nuevacuenta = new CuentaDTO(); nuevacuenta.User = txtUsuario.Text; nuevacuenta.Password = txtPassword.Text; int idserver = dictionaryServidores[comboServidor.SelectedItem.ToString()]; nuevacuenta.Server = idserver; try { Controller.Cuenta.getInstance().AgregarCuenta(nuevacuenta); ActualizarDatos(); LimpiarCampos(); } catch (Exception ex) { } }
public int count(CuentaDTO cuenta) { int cantidad = 0; try { connection.Open(); MySqlCommand myCommand = new MySqlCommand(); myCommand.Connection = connection; myCommand.CommandText = "SELECT COUNT(*) FROM correo WHERE cuenta_idcuenta = ?idcuenta"; myCommand.Parameters.Add("?idcuenta", MySqlDbType.Int16).Value = cuenta.IdCuenta; cantidad = int.Parse(myCommand.ExecuteScalar().ToString()); connection.Close(); return cantidad; } catch (MySqlException ex) { return -1; } }
/// <summary> /// Método para obtener la fecha del último mensaje descargado. /// </summary> /// <param name="cuenta">Cuenta destino</param> /// <returns></returns> public DateTime fechaUltimoMensaje(CuentaDTO cuenta) { factory.startConnection(); DateTime fecha = factory.getCorreo().lastMail(cuenta); factory.closeConnection(); return fecha; }
/// <summary> /// /// </summary> /// <param name="read"></param> /// <param name="sent"></param> /// <param name="cant"></param> /// <returns></returns> public List<CorreoDTO> list(bool read, bool sent, int cant, CuentaDTO cuenta = null) { CorreoDTO correo; List<CorreoDTO> correos = new List<CorreoDTO>(); try { connection.Open(); MySqlCommand myCommand = new MySqlCommand(); myCommand.Connection = connection; MySqlDataAdapter myAdapter = new MySqlDataAdapter(); DataTable myData = new DataTable(); string query = "SELECT idcorreo,asunto,detalle,tipocorreo,fecha,leido,cuenta_idcuenta FROM correo WHERE 1=1"; //Agrego texto a la query si así lo indica cada filtro if (cuenta != null) query += " AND cuenta_idcuenta=?idcuenta"; if (read) query += " AND leido=?leido"; if (sent) query += " AND tipocorreo='ENVIADO'"; else query += " AND tipocorreo='RECIBIDO'"; query += " ORDER BY idcorreo DESC"; if (cant != 0) query += " LIMIT ?cant"; myCommand.CommandText = query; if(cuenta != null) {myCommand.Parameters.Add("?idcuenta",MySqlDbType.Int16).Value = cuenta.IdCuenta;} myCommand.Parameters.Add("?leido", MySqlDbType.Int16).Value = read; myCommand.Parameters.Add("?cant", MySqlDbType.Int16).Value = cant; myAdapter.SelectCommand = myCommand; myAdapter.Fill(myData); connection.Close(); if (myData.Rows.Count != 0) { for (int i = 0; i <= myData.Rows.Count - 1; i++) { correo = new CorreoDTO(); correo.IdCorreo = int.Parse(myData.Rows[i].ItemArray.GetValue(0).ToString()); correo.Asunto = myData.Rows[i].ItemArray.GetValue(1).ToString(); correo.Detalle = myData.Rows[i].ItemArray.GetValue(2).ToString(); correo.TipoCorreo = Tipo.ENVIADO; //!!!!!!!! String fechaStr = myData.Rows[i].ItemArray.GetValue(4).ToString(); fechaStr = fechaStr.Substring(0, 10); correo.Fecha = DateTime.Parse(fechaStr); correo.Read = bool.Parse(myData.Rows[i].ItemArray.GetValue(5).ToString()); correo.IdCuenta = int.Parse(myData.Rows[i].ItemArray.GetValue(6).ToString()); List<OrigenDestinoDTO> direcciones = new List<OrigenDestinoDTO>(); try { DataTable myDataDir = new DataTable(); myCommand.CommandText = "SELECT idorigendestino,direccion,cc,cco,correo_idcorreo FROM origendestino " + "WHERE correo_idcorreo=?idcorreo"; myCommand.Parameters.Clear(); myCommand.Parameters.Add("?idcorreo", MySqlDbType.Int16).Value = correo.IdCorreo; myAdapter.SelectCommand = myCommand; myAdapter.Fill(myDataDir); if (myDataDir.Rows.Count != 0) { for (int j = 0; j <= myDataDir.Rows.Count - 1; j++) { OrigenDestinoDTO direccion = new OrigenDestinoDTO(); direccion.IdOrigenDestino = int.Parse(myDataDir.Rows[j].ItemArray.GetValue(0).ToString()); direccion.Direccion = myDataDir.Rows[j].ItemArray.GetValue(1).ToString(); direccion.Cc = bool.Parse(myDataDir.Rows[j].ItemArray.GetValue(2).ToString()); direccion.Cco = bool.Parse(myDataDir.Rows[j].ItemArray.GetValue(3).ToString()); direccion.IdCorreo = int.Parse(myDataDir.Rows[j].ItemArray.GetValue(4).ToString()); direcciones.Add(direccion); } } } catch (MySqlException e) { } correo.OrigenDestino = direcciones; List<AttachmentDTO> adjuntos = new List<AttachmentDTO>(); try { myCommand.CommandText = "SELECT idadjunto,detalle,path,correo_idcorreo FROM adjunto WHERE correo_idcorreo=?idcorreoo"; myCommand.Parameters.Add("?idcorreoo", MySqlDbType.Int16).Value = correo.IdCorreo; DataTable myDataAdj = new DataTable(); myAdapter.SelectCommand = myCommand; myAdapter.Fill(myDataAdj); if (myDataAdj.Rows.Count != 0) { for (int j = 0; j <= myDataAdj.Rows.Count - 1; j++) { AttachmentDTO adjunto = new AttachmentDTO(); adjunto.IdAttachment = int.Parse(myDataAdj.Rows[j].ItemArray.GetValue(0).ToString()); adjunto.Name = myDataAdj.Rows[j].ItemArray.GetValue(1).ToString(); adjunto.Path = myDataAdj.Rows[j].ItemArray.GetValue(2).ToString(); adjunto.IdCorreo = int.Parse(myDataAdj.Rows[j].ItemArray.GetValue(3).ToString()); adjuntos.Add(adjunto); } } } catch (MySqlException e) { } correo.Adjuntos = adjuntos; correos.Add(correo); } } } catch (MySqlException ex) { } return correos; }
public int UltimoIdCorreo(CuentaDTO cuenta) { factory.startConnection(); int id = factory.getCorreo().LastId(cuenta); factory.closeConnection(); return id; }
/// <summary> /// Método para obtener todos los correos de las cuentas en el sistema. /// </summary> /// <param name="leidos">Muestra mensajes leídos</param> /// <param name="enviados">Muestra mensajes enviados</param> /// <returns>Lista de CorreoDTO</returns> public List<CorreoDTO> listar(bool leidos, bool enviados, CuentaDTO cuenta=null) { factory.startConnection(); int cant = factory.getConfiguracion().getConfiguracion().CantidadCorreos; List<CorreoDTO> lista = new List<CorreoDTO>(); if (cuenta != null) { lista = factory.getCorreo().list(leidos, enviados, cant, cuenta); } else { lista = factory.getCorreo().list(leidos, enviados, cant); } factory.closeConnection(); return lista; }
public void limpiar(CuentaDTO cuenta) { factory.startConnection(); factory.getCorreo().clear(cuenta); factory.closeConnection(); }
/// <summary> /// Método para modificar una cuenta /// </summary> /// <param name="cuenta">Cuenta que se va a modificar</param> public void ModificarCuenta(CuentaDTO cuenta) { factory.startConnection(); factory.getCuenta().update(cuenta); factory.closeConnection(); }
/// <summary> /// Actualiza una Cuenta almacenada en la Base de Datos /// </summary> /// <param name="cuenta"></param> /// <returns></returns> public int update(CuentaDTO cuenta) { int generatedKey; try { connection.Open(); MySqlCommand myCommand = new MySqlCommand(); myCommand.Connection = connection; myCommand.CommandText = "UPDATE cuenta SET usuario = ?user,password = ?pwd,server_idserver = ?server) WHERE " + "idcuenta = ?idcuenta"; myCommand.Parameters.Add("?user", MySqlDbType.VarChar).Value = cuenta.User; myCommand.Parameters.Add("?pwd", MySqlDbType.VarChar).Value = cuenta.Password; myCommand.Parameters.Add("?server", MySqlDbType.VarChar).Value = cuenta.Server; myCommand.Parameters.Add("?idcuenta", MySqlDbType.VarChar).Value = cuenta.IdCuenta; generatedKey = myCommand.ExecuteNonQuery(); connection.Close(); } catch (Exception) { throw; } return generatedKey; }
/// <summary> /// Método para agregar una cuenta /// </summary> /// <param name="cuenta">Cuenta que se va a agregar</param> public void AgregarCuenta(CuentaDTO cuenta) { factory.startConnection(); factory.getCuenta().create(cuenta); factory.closeConnection(); }
/// <summary> /// /// </summary> /// <param name="cuenta"></param> /// <returns></returns> public DateTime lastMail(CuentaDTO cuenta) { DateTime fecha = DateTime.Today; try { connection.Open(); MySqlCommand myCommand = new MySqlCommand(); myCommand.Connection = connection; myCommand.CommandText = "SELECT MAX(fecha) FROM correo WHERE cuenta_idcuenta=?cuentaid"; myCommand.Parameters.Add("?cuentaid", MySqlDbType.Int16).Value = cuenta.IdCuenta; string fechastr = myCommand.ExecuteScalar().ToString(); fecha = DateTime.Parse(fechastr); connection.Close(); return fecha; } catch (MySqlException ex) { return fecha; } }
/// <summary> /// Elimina una cuenta de la Base de Datos /// </summary> /// <param name="cuenta"></param> /// <returns></returns> public int delete(CuentaDTO cuenta) { int generatedKey=0; try { connection.Open(); MySqlCommand myCommand = new MySqlCommand(); myCommand.Connection = connection; myCommand.CommandText = "DELETE FROM cuenta WHERE cuenta_idcuenta = ?idcuenta"; myCommand.Parameters.Add("?idcuenta", MySqlDbType.VarChar).Value = cuenta.IdCuenta; generatedKey = myCommand.ExecuteNonQuery(); connection.Close(); } catch (MySqlException ex) { } return generatedKey; }
public List<CorreoDTO> leerCorreo(CuentaDTO cuenta) { List<CorreoDTO> listaCorreos = new List<CorreoDTO>(); try { ServerDTO server = new ServerDTO(); server.Id = cuenta.Server; server = Server.getInstance().ObtenerServer(server); //Sesión AdminPop adminpop = new AdminPop(); adminpop.ConectarPop(server, cuenta); List<MailMessage> listaMensajes = adminpop.ObtenerMensajes(); //listaMensajes.Add(adminpop.ObtenerMensaje(30)); //check fechas foreach (MailMessage mensajeObtenido in listaMensajes) { CorreoDTO correo = new CorreoDTO(); correo.IdCuenta = cuenta.IdCuenta; OrigenDestinoDTO od = new OrigenDestinoDTO(); List<OrigenDestinoDTO> listaOrigenes = new List<OrigenDestinoDTO>(); od.Direccion = PasajeCorreos.getInstance().obtenerCorreoBlank(mensajeObtenido.From.ToString()); od.Cco = false; od.Cc = false; correo.OrigenDestino = listaOrigenes; correo.OrigenDestino.Add(od); MailAddressCollection listaCC = mensajeObtenido.CC; if (listaCC != null) { foreach (MailAddress ma in listaCC) { OrigenDestinoDTO ccdir = new OrigenDestinoDTO(); ccdir.Direccion = PasajeCorreos.getInstance().obtenerCorreoBlank(ma.ToString()); ccdir.Cc = true; ccdir.Cco = false; correo.OrigenDestino.Add(ccdir); } } AttachmentCollection coleccionadjuntos = mensajeObtenido.Attachments; List<AttachmentDTO> adjuntos = new List<AttachmentDTO>(); if (coleccionadjuntos.Count > 0) { //No puedo usar esto porque previamente limpié la tabla de correos, por lo tanto no hay id. //int maxid = Controller.Correo.getInstance().UltimoIdCorreo(cuenta); foreach (Attachment adj in coleccionadjuntos) { AttachmentDTO adjunto = new AttachmentDTO(); //adjunto.IdCorreo = maxid + 1; adjunto.Name = adj.Name; adjunto.Path = adj.ContentStream.ToString(); //OJO adjuntos.Add(adjunto); } } correo.Adjuntos = adjuntos; //MIRAR ACA string fechaStr = mensajeObtenido.Subject.Substring(mensajeObtenido.Subject.Length - 10, 10); correo.Fecha = DateTime.Parse(fechaStr); correo.Asunto = mensajeObtenido.Subject.Substring(0, (mensajeObtenido.Subject.Length - 10)); correo.NumeroServidorCorreo = mensajeObtenido.To.Count; correo.Detalle = mensajeObtenido.Body; correo.TipoCorreo = Tipo.RECIBIDO; listaCorreos.Add(correo); } } catch (ArgumentNullException ex) { } return listaCorreos; }
private void ActualizarDatos(string folder) { List<CorreoDTO> listaCorreos; switch (folder) { case "inbox": listaCorreos = Controller.Correo.getInstance().listar(false, false); break; case "sent": listaCorreos = Controller.Correo.getInstance().listar(false, true); break; case "draft": listaCorreos = Controller.Correo.getInstance().listar(false, false); break; default: listaCorreos = Controller.Correo.getInstance().listar(false, false); break; } LimpiarLista(); DataTable tabla = GetFormatoTabla(); for (int i = 0; i <= listaCorreos.Count - 1; i++) { DataRow fila = tabla.NewRow(); //Nueva fila con el formato default CorreoDTO correoObtenido = listaCorreos[i]; //Obtengo remitente String remitente = ""; foreach (OrigenDestinoDTO de in correoObtenido.OrigenDestino) { if (!(de.Cc) && !(de.Cco)) remitente = de.Direccion; } string fechaStr = correoObtenido.Fecha.ToShortDateString(); List<AttachmentDTO> adjuntos = new List<AttachmentDTO>(); adjuntos = correoObtenido.Adjuntos; CuentaDTO cuenta = new CuentaDTO(); cuenta.IdCuenta = correoObtenido.IdCuenta; cuenta = Controller.Cuenta.getInstance().ObtenerCuenta(cuenta); if (adjuntos.Count > 0) tabla.Rows.Add(correoObtenido.IdCorreo.ToString(), remitente, correoObtenido.Asunto.ToString(), fechaStr, correoObtenido.Read, cuenta.User, "A"); else tabla.Rows.Add(correoObtenido.IdCorreo.ToString(), remitente, correoObtenido.Asunto.ToString(), fechaStr, correoObtenido.Read, cuenta.User); } //La tabla resultante es el nuevo DataSource del DGV. dgvMensajes.DataSource = tabla; dgvMensajes.Columns[6].HeaderText = ""; dgvMensajes.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; dgvMensajes.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; dgvMensajes.Columns[5].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; dgvMensajes.Columns[6].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; dgvMensajes.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; dgvMensajes.Columns[0].Visible = false; dgvMensajes.Columns[4].Visible = false; dgvMensajes.Columns[6].Visible = false; DataGridViewImageColumn imgCol = new DataGridViewImageColumn(); Image image = imageList1.Images[4]; dgvMensajes.Columns.Add(imgCol); dgvMensajes.Columns[7].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; cantidadNoLeidos = 0; foreach (DataGridViewRow fila in dgvMensajes.Rows) { if (fila.Cells["Leido"].Value.ToString() == "False") { dgvMensajes.Rows[fila.Index].DefaultCellStyle.BackColor = Color.FromArgb(204, 227, 245); dgvMensajes.Rows[fila.Index].DefaultCellStyle.Font = new Font(dgvMensajes.DefaultCellStyle.Font, FontStyle.Bold); cantidadNoLeidos++; } } foreach (DataGridViewRow fila in dgvMensajes.Rows) { if (fila.Cells["Adjunto"].Value.ToString() == "A") { dgvMensajes.Rows[fila.Index].Cells[7].Value = image; } else { dgvMensajes.Rows[fila.Index].Cells[7].Style.NullValue = null; } } tsMensajes.Text = "Bandeja de Entrada: " + dgvMensajes.Rows.Count.ToString() + " mensajes"; ActualizarTreeView(); }
/// <summary> /// Obtiene una Cuenta almacenada en la Base de Datos /// </summary> /// <param name="cuenta"></param> /// <returns></returns> public CuentaDTO get(CuentaDTO cuenta) { CuentaDTO cuentaObtenida = new CuentaDTO(); try { connection.Open(); MySqlCommand myCommand = new MySqlCommand(); MySqlDataAdapter myAdapter = new MySqlDataAdapter(); DataTable myData = new DataTable(); myCommand.Connection = connection; myCommand.CommandText = "SELECT idcuenta,usuario,password,server_idserver FROM Cuenta WHERE " + "idcuenta = ?idcuenta"; myCommand.Parameters.Add("?idcuenta", MySqlDbType.VarChar).Value = cuenta.IdCuenta; myAdapter.SelectCommand = myCommand; myAdapter.Fill(myData); connection.Close(); if (myData.Rows.Count != 0) { cuentaObtenida.IdCuenta = int.Parse(myData.Rows[0].ItemArray.GetValue(0).ToString()); cuentaObtenida.User = myData.Rows[0].ItemArray.GetValue(1).ToString(); cuentaObtenida.Password = myData.Rows[0].ItemArray.GetValue(2).ToString(); cuentaObtenida.Server = int.Parse(myData.Rows[0].ItemArray.GetValue(3).ToString()); } } catch (Exception ex) { } return cuentaObtenida; }
private void dgvCuentas_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (dgvCuentas.Rows.Count == 0) return; DataGridViewRow fila = dgvCuentas.SelectedRows[0]; int idcuenta = int.Parse(fila.Cells[0].Value.ToString()); CuentaDTO cuentaSeleccionada = new CuentaDTO(); cuentaSeleccionada.IdCuenta = idcuenta; cuenta = Controller.Cuenta.getInstance().ObtenerCuenta(cuentaSeleccionada); btnEditar.Enabled = true; btnEliminar.Enabled = true; CargarCampos(); }
/// <summary> /// Método para eliminar una cuenta /// </summary> /// <param name="cuenta">Cuenta que se va a eliminar</param> public void EliminarCuenta(CuentaDTO cuenta) { factory.startConnection(); factory.getCuenta().delete(cuenta); factory.closeConnection(); }
/// <summary> /// Método para obtener todos los datos existentes de una cuenta /// </summary> /// <param name="cuenta"></param> /// <returns></returns> public CuentaDTO ObtenerCuenta(CuentaDTO cuenta) { factory.startConnection(); CuentaDTO cuentaObtenida = factory.getCuenta().get(cuenta); factory.closeConnection(); return cuentaObtenida; }
/// <summary> /// Obtiene una lista de las Cuentas almacenadas en la Base de Datos /// </summary> /// <returns></returns> public List<CuentaDTO> list() { CuentaDTO cuentaObtenida; List<CuentaDTO> list = new List<CuentaDTO>(); try { connection.Open(); MySqlCommand myCommand = new MySqlCommand(); MySqlDataAdapter myAdapter = new MySqlDataAdapter(); DataTable myData = new DataTable(); myCommand.Connection = connection; myCommand.CommandText = "SELECT idcuenta,usuario,password,server_idserver FROM cuenta"; myAdapter.SelectCommand = myCommand; myAdapter.Fill(myData); connection.Close(); if (myData.Rows.Count != 0) { for (int i = 0; i <= myData.Rows.Count - 1; i++) { cuentaObtenida = new CuentaDTO(); cuentaObtenida.IdCuenta = int.Parse(myData.Rows[i].ItemArray.GetValue(0).ToString()); cuentaObtenida.User = myData.Rows[i].ItemArray.GetValue(1).ToString(); cuentaObtenida.Password = myData.Rows[i].ItemArray.GetValue(2).ToString(); cuentaObtenida.Server = int.Parse(myData.Rows[i].ItemArray.GetValue(3).ToString()); list.Add(cuentaObtenida); } } } catch (Exception ex) { } return list; }
/// <summary> /// Método para obtener la cuenta a partir de un correo. /// </summary> /// <param name="correo">Correo del que se quiere obtener la cuenta</param> /// <returns>CuentaDTO del correo</returns> public CuentaDTO ObtenerCuentaDeCorreo(CorreoDTO correo) { CuentaDTO cuentaObtenida = new CuentaDTO(); cuentaObtenida.IdCuenta = correo.IdCuenta; factory.startConnection(); cuentaObtenida = factory.getCuenta().get(cuentaObtenida); factory.closeConnection(); return cuentaObtenida; }
public int LastId(CuentaDTO cuenta) { int res = 0; try { connection.Open(); MySqlCommand myCommand = new MySqlCommand(); myCommand.Connection = connection; myCommand.CommandText = "SELECT MAX(idcorreo) FROM correo WHERE cuenta_idcuenta=?cuentaidd"; myCommand.Parameters.Add("?cuentaidd", MySqlDbType.Int16).Value = cuenta.IdCuenta; string idStr = myCommand.ExecuteScalar().ToString(); try { int i = int.Parse(idStr); res = i; } catch (Exception e) { res = 0; } connection.Close(); return res; } catch (MySqlException ex) { return 0; } }