Exemplo n.º 1
0
                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);
                }
Exemplo n.º 2
0
                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);
                }