public static MailMessage CreateReplyComentarioTicket(Mail source) { MailMessage reply; try { reply = new MailMessage() { From = new MailAddress(source.To[0].Address), }; reply.To.Add(source.From.Address); reply.ReplyToList.Add(source.From.Address); //todo cambiar el correo al que se usa string respuesta = source.TextBody.Split(new[] { "De: [email protected]" }, StringSplitOptions.None)[0]; Attachment[] attachment = source.Attachments; string id = source.Headers.GetValueOfKey("Message-ID"); reply.Headers.Add("In-Reply-To", id); string references = source.Headers.GetValueOfKey("References"); string[] referencesArray = references.Split('~'); List <string> lstTickets = referencesArray.Where(w => w.Contains("ticket")).Distinct().ToList(); if (lstTickets.Count > 1) { return(null); } string stringTicket = lstTickets.First(); string[] ticketContains = stringTicket.Split('&'); if (ticketContains.Count() <= 0) { return(null); } int idticket = int.Parse(ticketContains[1]); if (idticket == 0) { return(null); } HelperDetalleTicket ticket = new BusinessTicket().ObtenerDetalleTicket(idticket); //new BusinessSecurity.Autenticacion().GetUserInvitadoDataAutenticate((int)BusinessVariables.EnumTiposUsuario.Cliente); Usuario user = new BusinessUsuarios().ObtenerDetalleUsuario(ticket.IdUsuarioLevanto); bool eliminoarchivo = false; if (attachment.Any()) { string attname; List <string> archivos = new List <string>(); foreach (Attachment att in attachment) { string extension = Path.GetExtension(att.Name); if (extension != null) { ParametrosGenerales parametros = new BusinessParametros().ObtenerParametrosGenerales(); double tamañoArchivo = double.Parse(parametros.TamanoDeArchivo); List <ArchivosPermitidos> archivospermitidos = new BusinessParametros().ObtenerArchivosPermitidos(); if (archivospermitidos.Any(a => a.Extensiones.Contains(extension))) { attname = String.Format("{0}_{1}_{2}{3}{4}{5}{6}{7}{8}", att.Name.Replace(extension, string.Empty), idticket, DateTime.Now.Day, DateTime.Now.Month, DateTime.Now.Year, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second, extension); att.SaveAs(String.Format("{0}{1}", ConfigurationManager.AppSettings["Repositorio"] + ConfigurationManager.AppSettings["RepositorioMascara"] + ConfigurationManager.AppSettings["CarpetaTemporal"], attname), true); if (File.Exists(String.Format("{0}{1}", ConfigurationManager.AppSettings["Repositorio"] + ConfigurationManager.AppSettings["RepositorioMascara"] + ConfigurationManager.AppSettings["CarpetaTemporal"], attname))) { long length = new FileInfo(String.Format("{0}{1}", ConfigurationManager.AppSettings["Repositorio"] + ConfigurationManager.AppSettings["RepositorioMascara"] + ConfigurationManager.AppSettings["CarpetaTemporal"], attname)).Length; if (((length / 1024) / 1024) <= tamañoArchivo) { archivos.Add(attname); } else { if (File.Exists(String.Format("{0}{1}", ConfigurationManager.AppSettings["Repositorio"] + ConfigurationManager.AppSettings["RepositorioMascara"] + ConfigurationManager.AppSettings["CarpetaTemporal"], attname))) { File.Delete(String.Format("{0}{1}", ConfigurationManager.AppSettings["Repositorio"] + ConfigurationManager.AppSettings["RepositorioMascara"] + ConfigurationManager.AppSettings["CarpetaTemporal"], attname)); } eliminoarchivo = true; } } } else { eliminoarchivo = true; } } } new BusinessAtencionTicket().AgregarComentarioConversacionTicket(idticket, user.Id, respuesta, false, archivos, false, false); } else { new BusinessAtencionTicket().AgregarComentarioConversacionTicket(idticket, user.Id, respuesta, false, null, false, false); } if (string.IsNullOrEmpty(references)) { references += "~ticket&" + idticket + "~"; } if (!references.Contains("ticket&")) { references += "~ticket&" + idticket + "~"; } reply.Headers.Add("References", references); if (!source.Subject.StartsWith("Re:", StringComparison.OrdinalIgnoreCase)) { reply.Subject = "Re: "; } reply.Subject += source.Subject; reply.Subject = reply.Subject.Replace("(Trial Version)", string.Empty).Trim(); reply.IsBodyHtml = true; reply.Body = GeneraRespuesta(source.From.Address, source.From.Address, source.HtmlBody, source.SentDate.ToString(CultureInfo.InvariantCulture), eliminoarchivo); } catch (Exception ex) { throw new Exception(ex.Message); } return(reply); }
private static List <HelperCampoMascaraCaptura> GeneraCaptura(Mascara mascara, string from, string subject, string contenido, Attachment[] atacchment, out string attname, out bool agregaArchivo, out bool eliminoarchivo) { List <HelperCampoMascaraCaptura> result = new List <HelperCampoMascaraCaptura>(); try { Attachment att; attname = string.Empty; agregaArchivo = false; eliminoarchivo = false; foreach (CampoMascara campo in mascara.CampoMascara.OrderBy(o => o.Id)) { switch (campo.NombreCampo.ToUpper()) { case "NOMBRE": result.Add(new HelperCampoMascaraCaptura { IdCampo = campo.Id, NombreCampo = campo.NombreCampo, Valor = from }); break; case "CORREO": result.Add(new HelperCampoMascaraCaptura { IdCampo = campo.Id, NombreCampo = campo.NombreCampo, Valor = from }); break; case "ASUNTO": result.Add(new HelperCampoMascaraCaptura { IdCampo = campo.Id, NombreCampo = campo.NombreCampo, Valor = subject }); break; case "COMENTARIO": result.Add(new HelperCampoMascaraCaptura { IdCampo = campo.Id, NombreCampo = campo.NombreCampo, Valor = contenido }); break; case "ARCHIVOADJUNTO": if (atacchment.Any()) { att = atacchment.First(); string extension = Path.GetExtension(att.Name); if (extension != null) { ParametrosGenerales parametros = new BusinessParametros().ObtenerParametrosGenerales(); double tamañoArchivo = double.Parse(parametros.TamanoDeArchivo); List <ArchivosPermitidos> archivospermitidos = new BusinessParametros().ObtenerArchivosPermitidos(); if (archivospermitidos.Any(a => a.Extensiones.Contains(extension))) { attname = String.Format("{0}_{1}_{2}{3}{4}{5}{6}{7}{8}", att.Name.Replace(extension, string.Empty), "ticketid", DateTime.Now.Day, DateTime.Now.Month, DateTime.Now.Year, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second, extension); att.SaveAs(String.Format("{0}{1}", ConfigurationManager.AppSettings["Repositorio"] + ConfigurationManager.AppSettings["CarpetaTemporal"], attname), true); long length = new FileInfo(String.Format("{0}{1}", ConfigurationManager.AppSettings["Repositorio"] + ConfigurationManager.AppSettings["CarpetaTemporal"], attname)).Length; if (((length / 1024) / 1024) <= tamañoArchivo) { result.Add(new HelperCampoMascaraCaptura { IdCampo = campo.Id, NombreCampo = campo.NombreCampo, Valor = attname }); eliminoarchivo = false; agregaArchivo = true; } else { File.Delete(String.Format("{0}{1}", ConfigurationManager.AppSettings["Repositorio"] + ConfigurationManager.AppSettings["CarpetaTemporal"], attname)); attname = ""; eliminoarchivo = true; agregaArchivo = false; } } else { attname = ""; eliminoarchivo = true; agregaArchivo = false; } } } else { result.Add(new HelperCampoMascaraCaptura { IdCampo = campo.Id, NombreCampo = campo.NombreCampo, Valor = string.Empty }); } break; } } } catch (Exception ex) { throw new Exception(ex.Message); } return(result); }