using System; using System.ComponentModel; using System.ComponentModel.DataAnnotations.Schema; using System.Runtime.CompilerServices; using System.Text; using tsUtilidades.Extensiones; using System.Globalization; namespace bdGrupoSanchoToro.db { public partial class detallesfacturas { public double Importe { get { return Math.Round(this.Cantidad * this.Precio, 2, MidpointRounding.AwayFromZero); } } public string Descripcion { get { return (this.idProductoNavigation.Descripcion + " " + this.Observaciones.NothingAVacio()).Trim(); } } private byte[]? _DetalleRTF; [NotMapped] public byte[] DetalleRTF { get { if (_DetalleRTF == null) { if (this.idDetalleRTFNavigation != null && this.idDetalleRTFNavigation.Fichero != null) { _DetalleRTF = idDetalleRTFNavigation.Fichero; } else { _DetalleRTF = new byte[0]; } } return _DetalleRTF; } set { _DetalleRTF = value; } } [NotMapped] public bool DetalleRTFModificado { get; set; } [NotMapped] public string DetalleRTFString { get { if (this.idDetalleRTFNavigation != null && this.idDetalleRTFNavigation.Fichero != null && this.idDetalleRTFNavigation.Fichero.Length>0) { System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); return encoding.GetString( idDetalleRTFNavigation.Fichero); } else { return ConvertToRtf(this.Descripcion,9.75); } } } public static string ConvertToRtf(string inputText, double fontSize) { // Validar el tamaño de la fuente if (fontSize <= 0) { throw new ArgumentException("El tamaño de la fuente debe ser mayor que cero."); } // Crear el encabezado RTF StringBuilder rtf = new StringBuilder(); rtf.Append(@"{\rtf1\ansi\deff0"); rtf.Append(@"{\fonttbl{\f0 Arial;}}"); string fs = Math.Round(fontSize * 2,0).ToString(CultureInfo.InvariantCulture); rtf.Append(@"\fs").Append(fs); // RTF usa la mitad del tamaño de punto // Agregar el texto rtf.Append(" "); rtf.Append(inputText.Replace("\n", @"\par ")); // Cerrar el documento RTF rtf.Append("}"); return rtf.ToString(); } } }