public JsonResult GuardarComunicado(int?IDComunicadosAPP, string Titulo, string Asunto, string arreglo, string Origen, bool esEncuesta) { var usuarioActual = ObtenerUsuarioEnSesion(System.Web.HttpContext.Current); int PK_Id_Comunicado_temp = 0; string[] title = new string[100]; string[] test = Asunto.Split('>'); int c = 0; for (int i = 0; i < test.Length; i++) { string[] tag = test[i].Split('<'); if (tag[0] != "") { if (tag[1] == "/a") { title[c] = tag[0]; c++; } } } string[] input = FindHrefs(Asunto); string links = string.Empty; foreach (var item in input) { if (item != null) { string href = item; if (!href.Contains("href")) { links += href + '|'; } } } string[] enlaces = links.Split('|'); string link = "<links>"; c = 0; for (int i = 0; i < enlaces.Length; i++) { if (enlaces[i] != "") { link += "<link>"; link += "<titulo>" + title[c] + "</titulo>"; link += "<enlace>" + enlaces[i] + "</enlace>"; link += "</link>"; c++; } } link += "</links>"; string cadenaConTags = Asunto; //string preub = Asunto.Substring(Asunto.IndexOf("<a"), Asunto.IndexOf("/a>")); // string cadenaSinTags = Regex.Replace(cadenaConTags, "<div.*?>|<span.*?>|<class.*?>|<h.*?>|<h2.*?>|<h3.*?>|<h4.*?>|<h5.*?>|<h6.*?>|<table.*?>|<tbody.*?>|<strong.*?>|<tr.*?>|<th.*?>|<td.*?>|<em.*?> |<img.*?>|<blockquote.*?>|<ul.*?>|<li.*?> |<li.*?>|<b.*?>|<i.*?>|<thead.*?>|<col.*?>|<t.*?>|<w.*?>", string.Empty); string cadenaSinTags = Regex.Replace(cadenaConTags, "<b.*?>|<c.*?>|<d.*?>|<e.*?>|<f.*?>|<g.*?>|<h.*?>|<i.*?>|<j.*?>|<k.*?>|<l.*?>|<m.*?>|<n.*?> |<ñ.*?>|<o.*?>|<p.*?>|<q.*?> |<r.*?>|<s.*?>|<t.*?>|<u.*?> |<v.*?>|<w.*?>|<x.*?>|<y.*?>|<z.*?> |<ul.*?>| <!.*?>", string.Empty); string cadenaSinTags2 = Regex.Replace(cadenaSinTags, "</b.*?>|</c.*?>|</d.*?>|</e.*?>|</f.*?>|</g.*?>|</h.*?>|</i.*?>|</j.*?>|</k.*?>|</l.*?>|</m.*?>|</n.*?> |</ñ.*?>|</o.*?>|</p.*?>|</q.*?> |</r.*?>|</s.*?>|</t.*?>|</u.*?> |</v.*?>|</w.*?>|</x.*?>|</y.*?> <z.*?> |</ul.*?> ", string.Empty); ////string cadenaSinTags1 = Regex.Replace(cadenaConTags, "<.*?>", string.Empty); string Asunto1 = cadenaSinTags2.Replace(" ", " "); // string cadenaConTags = Asunto; Asunto1 = Asunto1.Replace("\n", " "); Asunto1 = Asunto1.Replace("á", "á"); Asunto1 = Asunto1.Replace("é", "é"); Asunto1 = Asunto1.Replace("í", "í"); Asunto1 = Asunto1.Replace("ó", "ó"); Asunto1 = Asunto1.Replace("ú", "ú"); Asunto1 = Asunto1.Replace("Á", "Á"); Asunto1 = Asunto1.Replace("É", "É"); Asunto1 = Asunto1.Replace("Í", "Í"); Asunto1 = Asunto1.Replace("Ó", "Ó"); Asunto1 = Asunto1.Replace("Ú", "Ú"); Asunto1 = Asunto1.Replace("ñ", "ñ"); Asunto1 = Asunto1.Replace("—", "_"); Asunto1 = Asunto1.Replace("–", "-"); Asunto1 = Asunto1.Replace("&·", "."); Asunto1 = Asunto1.Replace("‰", "%"); Asunto1 = Asunto1.Replace("°", "°"); Asunto1 = Asunto1.Replace("™", "™"); Asunto1 = Asunto1.Replace("®", "®"); Asunto1 = Asunto1.Replace("©", "©"); Asunto1 = Asunto1.Replace("†", "†"); Asunto1 = Asunto1.Replace("•", "•"); Asunto1 = Asunto1.Replace("«", "«"); Asunto1 = Asunto1.Replace("»", "»"); Asunto1 = Asunto1.Replace("№", "№"); Asunto1 = Asunto1.Replace("€", "€"); Asunto1 = Asunto1.Replace("“", "\""); Asunto1 = Asunto1.Replace("”", "“"); Asunto1 = Asunto1.Replace("‘", "'"); Asunto1 = Asunto1.Replace("’", "’"); Asunto1 = Asunto1.Replace("<", "<"); Asunto1 = Asunto1.Replace(">", ">"); Asunto1 = Asunto1.Replace("≤", "<="); Asunto1 = Asunto1.Replace("≥", ">="); Asunto1 = Asunto1.Replace("¿", "¿"); Asunto1 = Asunto1.Replace("</ul>", ""); Asunto1 = Asunto1.Replace("¡", "¡"); string AsuntoMod = Regex.Replace(Asunto1, "&.*?;", ""); if (Origen == "E") { using (var Transaction = db.Database.BeginTransaction()) { var comunicado = db.Tbl_ComunicadosAPP.Where(x => x.IDComunicadosAPP == IDComunicadosAPP).SingleOrDefault(); comunicado.Titulo = Titulo; comunicado.Asunto = Asunto; comunicado.AsuntoAPP = AsuntoMod; comunicado.Estado = "Enviado"; comunicado.FechaEnvio = DateTime.Now.ToString(); comunicado.esEncuesta = esEncuesta; comunicado.Enlaces = link; db.Tbl_ComunicadosAPP.Attach(comunicado); var entry = db.Entry(comunicado); entry.State = System.Data.Entity.EntityState.Modified; entry.Property(x => x.Titulo).IsModified = true; entry.Property(x => x.Asunto).IsModified = true; entry.Property(x => x.Estado).IsModified = true; entry.Property(x => x.esEncuesta).IsModified = true; entry.Property(x => x.Enlaces).IsModified = true; db.SaveChanges(); Transaction.Commit(); Thread myNewThread = new Thread(() => EnviarNotificacionesPush(IDComunicadosAPP)); myNewThread.Start(); } } else { string FechaEnvio = string.Empty; string EstadoComunicado = "En Espera"; using (var Transaction = db.Database.BeginTransaction()) { if (IDComunicadosAPP > 0) { var comunicaciones = db.Tbl_UsuarioComunicadoAPP.Where(x => x.FK_Id_ComunicadosAPP == IDComunicadosAPP).ToList(); db.Tbl_UsuarioComunicadoAPP.RemoveRange(comunicaciones); db.SaveChanges(); var comunicaciones1 = db.Tbl_ComunicadosAPP.Where(x => x.IDComunicadosAPP == IDComunicadosAPP).SingleOrDefault(); db.Tbl_ComunicadosAPP.Remove(comunicaciones1); db.SaveChanges(); } string asun = StripTagsRegex(Asunto); asun = HttpUtility.HtmlDecode(asun); ComunicacionesAPP comunicadosapp = new ComunicacionesAPP() { Titulo = Titulo, Asunto = Asunto, AsuntoAPP = Asunto1, Destinatarios = arreglo, FechaCreacion = DateTime.Now.ToString(), FechaEnvio = FechaEnvio, Estado = EstadoComunicado, NitEmpresa = usuarioActual.NitEmpresa, esEncuesta = esEncuesta, Enlaces = link }; db.Tbl_ComunicadosAPP.Add(comunicadosapp); db.SaveChanges(); PK_Id_Comunicado_temp = comunicadosapp.IDComunicadosAPP; Transaction.Commit(); Transaction.Dispose(); Thread myNewThread = new Thread(() => GuardarUsuariosComunicados(comunicadosapp, arreglo, usuarioActual.NitEmpresa)); myNewThread.Start(); } } var parametros = new { PK_Id_Comunicado_temp = PK_Id_Comunicado_temp, origen = Origen }; return(Json(parametros, JsonRequestBehavior.AllowGet)); }
public void GuardarUsuariosComunicados(ComunicacionesAPP comunicadosapp, string arreglo, string NitEmpresa) { using (var Transaction = db.Database.BeginTransaction()) { var cliente = new RestSharp.RestClient(ConfigurationManager.AppSettings["Url"]); var request = new RestRequest(ConfigurationManager.AppSettings["consultaAfiliados"], RestSharp.Method.GET); request.RequestFormat = DataFormat.Xml; request.Parameters.Clear(); request.AddParameter("tpEm", "NI"); request.AddParameter("docEm", NitEmpresa); request.AddHeader("Content-Type", "application/json"); request.AddHeader("Accept", "application/json"); //se omite la validación de certificado de SSL ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; IRestResponse <List <EmpleadosWSDTO> > response = cliente.Execute <List <EmpleadosWSDTO> >(request); var result = response.Content; var respuesta = Newtonsoft.Json.JsonConvert.DeserializeObject <List <EmpleadosWSDTO> >(result); bool boTransaction = false; string[] arreglos = arreglo.Split(','); arreglos = arreglos.Where(x => !string.IsNullOrEmpty(x)).ToArray(); for (int i = 0; i < arreglos.Length; i++) { string[] persona = arreglos[i].Split('-'); if (persona[0] != null) { string cedula = string.Empty; try { cedula = persona[1]; var usuariosuscrito = db.Tbl_ComunicacionesUsuariosSuscritosAPP.Where(x => x.IdentificacionUsuario == cedula).SingleOrDefault(); if (usuariosuscrito != null) { var usuarioexiste = db.Tbl_UsuarioComunicadoAPP.Where(x => (x.IdentificacionUsuario == cedula && x.FK_Id_ComunicadosAPP == comunicadosapp.IDComunicadosAPP)).SingleOrDefault(); if (usuarioexiste == null) { UsuarioComunicadoAPP objusuarios = new UsuarioComunicadoAPP() { FK_Id_ComunicadosAPP = comunicadosapp.IDComunicadosAPP, IdentificacionUsuario = cedula, PlayerID = usuariosuscrito.PlayerID, IDEstadoComunicado = 4 }; db.Tbl_UsuarioComunicadoAPP.Add(objusuarios); db.SaveChanges(); boTransaction = true; } } } catch (Exception e) { string message = e.Message; //throw; } finally { string parametro = arreglos[i]; var cargos_temporales = respuesta.Where(x => x.cargo == parametro).ToList(); if (cargos_temporales.Count > 0) { foreach (var item in cargos_temporales) { string cedula1 = item.idPersona; var usuariosuscrito1 = db.Tbl_ComunicacionesUsuariosSuscritosAPP.Where(x => x.IdentificacionUsuario == cedula1).SingleOrDefault(); if (usuariosuscrito1 != null) { var usuarioexiste = db.Tbl_UsuarioComunicadoAPP.Where(x => (x.IdentificacionUsuario == cedula && x.FK_Id_ComunicadosAPP == comunicadosapp.IDComunicadosAPP)).SingleOrDefault(); if (usuarioexiste == null) { UsuarioComunicadoAPP objusuarios = new UsuarioComunicadoAPP() { FK_Id_ComunicadosAPP = comunicadosapp.IDComunicadosAPP, IdentificacionUsuario = usuariosuscrito1.IdentificacionUsuario, PlayerID = usuariosuscrito1.PlayerID, IDEstadoComunicado = 4 }; db.Tbl_UsuarioComunicadoAPP.Add(objusuarios); db.SaveChanges(); boTransaction = true; } } } } } } } if (boTransaction) { Transaction.Commit(); } } }