Files
Asegasa.NET/bdAsegasa/Extensiones/correos.cs
2026-04-28 11:52:16 +02:00

185 lines
6.5 KiB
C#

using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.ComponentModel.DataAnnotations.Schema;
using System.Diagnostics;
using System.Drawing.Imaging;
using System.Linq;
using System.Net.Mail;
using System.Net.Mime;
using tsEFCore8.Extensiones;
using tsUtilidades.Extensiones;
namespace bdAsegasa.db
{
[NotMapped]
public partial class correos
{
[NotMapped]
public virtual string FicheroAdjunto
{
get
{
if (this.idFicheroAdjunto.HasValue)
{
return this.idFicheroAdjuntoNavigation.NombreFichero;
}
else
{
return "";
}
}
}
public static int GeneraRegistroCorreoConAdjunto(tscgestionasegasa bd, string Asunto, string Cuerpo, cuentascorreo cuenta, byte[] Fichero, string NombreFichero, string DescripcionFichero, string Destinatario, string Copia = "", string CopiaOculta = "", bool MarcarComoAnulado = false, string Remitente = "", int? idAplicacion = null, string CodigoAplicacion = "")
{
int resultado = 0;
try
{
if (bd == null) bd = tscgestionasegasa.NuevoContexto();
int idTipoAdjunto = bd.enumeraciones.First(x => x.Codigo == "TIPFIC.ADJCOR").idEnumeracion;
var f = new ficheros
{
idTipo = idTipoAdjunto,
Descripcion = DescripcionFichero,
Fichero = Fichero,
NombreFichero = NombreFichero,
Fecha = DateTime.Now
};
bd.ficheros.Add(f);
bd.SaveChanges();
var correo = new correos
{
Asunto = Asunto,
Cuerpo = Cuerpo,
Destinatario = Destinatario,
Copia = Copia,
CopiaOculta = CopiaOculta,
DireccionRespuesta = cuenta.ResponderA,
FechaCreacion = bd.AhoraMySql(),
idcuenta = cuenta.idCuenta,
idFicheroAdjunto = f.idFichero,
idAplicacion = idAplicacion,
CodigoAplicacion = CodigoAplicacion
};
if (string.IsNullOrEmpty(Remitente))
{
correo.Remitente = cuenta.Remitente;
}
else
{
correo.Remitente = Remitente;
}
if (MarcarComoAnulado)
{
correo.FechaAnulacion = DateTime.Now;
}
bd.correos.Add(correo);
bd.GuardarCambios();
return correo.idcorreo;
}
catch (Exception ex)
{
Debug.Write(ex.Message);
throw;
}
}
public static int GeneraRegistroCorreo(tscgestionasegasa bd, string Asunto, string Cuerpo, bdAsegasa.db.cuentascorreo cuenta, string Destinatario, string Copia = "", string CopiaOculta = "", int? idfichero = null, bool MarcarComoAnulado = false, string Remitente = "", string ResponderA = "")
{
try
{
if (bd == null) bd = tscgestionasegasa.NuevoContexto();
var correo = new correos
{
Asunto = Asunto,
Cuerpo = Cuerpo,
Destinatario = Destinatario,
Copia = Copia,
CopiaOculta = CopiaOculta,
FechaCreacion = bd.AhoraMySql(),
idcuenta = cuenta.idCuenta,
idFicheroAdjunto = idfichero
};
if (!string.IsNullOrEmpty(ResponderA))
{
correo.DireccionRespuesta = ResponderA;
}
else
{
correo.DireccionRespuesta = cuenta.ResponderA;
}
if (!string.IsNullOrEmpty(Remitente))
{
correo.Remitente = Remitente;
}
else
{
correo.Remitente = cuenta.Remitente;
}
if (MarcarComoAnulado) correo.FechaAnulacion = DateTime.Now;
bd.correos.Add(correo);
bd.GuardarCambios();
return correo.idcorreo;
}
catch (Exception ex)
{
Debug.Write(ex.Message);
throw new Exception(ex.Message, ex);
}
}
public static int GeneraRegistroCorreoVariosFicheros(tscgestionasegasa bd, string Asunto, string Cuerpo, cuentascorreo cuenta, string Destinatario, System.Collections.Generic.List<int> idficheros = null, DateTime? FechaAnulacion = null)
{
try
{
var correo = new correos
{
Asunto = Asunto,
Cuerpo = Cuerpo,
Destinatario = Destinatario,
DireccionRespuesta = cuenta.Remitente,
FechaCreacion = bd.AhoraMySql(),
idcuenta = cuenta.idCuenta,
Remitente = cuenta.Remitente,
FechaAnulacion = FechaAnulacion
};
if (idficheros != null)
{
foreach (var f in idficheros)
{
var nf = new ficherosadjuntos { idFichero = f };
correo.ficherosadjuntos.Add(nf);
}
}
bd.correos.Add(correo);
bd.GuardarCambios();
return correo.idcorreo;
}
catch (Exception ex)
{
throw new Exception("Error en GeneraRegistroCorreoVariosFicheros. Asunto:" + Asunto + " " + ex.Message, ex);
}
}
public class CorreoReducido
{
public int idCorreo { get; set; }
public string Destinatario { get; set; }
public string Asunto { get; set; }
public DateTime FechaCreacion { get; set; }
public DateTime? FechaAnulacion { get; set; }
public string MensajeError { get; set; }
public string Aplicacion { get; set; }
public string CodigoAplicacion { get; set; }
}
}
}