public async void EnviarNotificacion(Models.Usuarios_Disp[] dispositivos, decimal viajeId, string titulo, string mensaje, Accion accion) { // Inicializo los objetos para hacer el Request var client = new HttpClient(); var request = new HttpRequestMessage(); request.Method = HttpMethod.Post; // Arma la URL para enviar la notificación request.RequestUri = new Uri("https://fcm.googleapis.com/fcm/send"); request.Headers.TryAddWithoutValidation("Authorization", "key=" + Startup.Firebase.CloudMessagingKey); // Arma la lista de tokens var tokens = new List <string>(); foreach (var d in dispositivos) { tokens.Add(d.DispositivoId); } // Crea la instancia de la notificación Notificacion notificacion = new Notificacion(tokens.ToArray(), viajeId, titulo, mensaje, accion); // Adjunta el body var json = JsonConvert.SerializeObject(notificacion); Consola.Debug("json", json); request.Content = new StringContent(json); // Adjunta los headers request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); // Envía el request al Firebase var response = await client.SendAsync(request); // Crea los datos del registro a insertar var r = new Models.Notificaciones { NotFchHr = DateTime.Now, ViajeId = viajeId, NotMensaje = titulo + " - " + mensaje + " - Data: " + json, NotRespuesta = response.Content.ReadAsStringAsync().Result, NotEst = response.StatusCode.ToString() }; // Uso una nueva conexión porque este método se llama asíncronamente using (var db2 = new VolquexDB()) // Creo un registro con cada token foreach (var disp in dispositivos) { r.UsuarioId = disp.UsuarioId; r.DispositivoId = disp.DispositivoId; // Hago el insert db2.InsertWithDecimalIdentity(r); } client.Dispose(); }
public static void Conectar() { if (Cuenta.Nombre == string.Empty || Cuenta.Contraseña == string.Empty || InformacionCuenta.Conectada) { return; } while (!Interop.IsProcessOpen("RiotClientUx")) { if (!ClienteEjecutado) { Process.Start(@Program.Configuracion.CarpetaLeague + "LeagueClient.exe"); ClienteEjecutado = true; } BotHelper.Wait(5000); } Interop.BringWindowToFront("RiotClientUx"); Consola.Debug($"\t[DEBUG] Atención: si no puedes conectar, debes editar 'client.json' y campiar los valores CampoCuenta y CampoContraseña por uno de los valores dados a continuación.", ConsoleColor.Red); Consola.Debug($"\t[DEBUG] Si no encuentras estos valores, debes editar en 'client.json' el valor, colorCampos por el color correspondiente (usar Color Viewer) debes convertir el color hex a color rgb (online).", ConsoleColor.Red); Consola.Debug($"\t[DEBUG] Los valores son X (izquierda) e Y (derecha), si el de la derecha es mayor entonces el campo es de contraseña, de lo contrario es el campo de la cuenta.", ConsoleColor.Red); Consola.Debug($"\t[DEBUG] --------------------------------------------------------------------------------- ", ConsoleColor.Red); try { while (!InformacionCuenta.listaParaConectar) { foreach (Point CampoConexion in ImageHelper.getAllExistingColorPositions(Color.FromArgb(Convert.ToInt32(Program.Configuracion.ColorCampos.Split(',')[0]), Convert.ToInt32(Program.Configuracion.ColorCampos.Split(',')[1]), Convert.ToInt32(Program.Configuracion.ColorCampos.Split(',')[2])))) { if (CampoConexion.X == Convert.ToInt32(Program.Configuracion.CampoCuenta.Split(',')[0]) && CampoConexion.Y == Convert.ToInt32(Program.Configuracion.CampoCuenta.Split(',')[1])) { Consola.Escribir($"\tIntroduciendo nombre de la cuenta", ConsoleColor.Green); InputHelper.LeftClick(Convert.ToInt32(Program.Configuracion.CampoCuenta.Split(',')[0]) + 80, Convert.ToInt32(Program.Configuracion.CampoCuenta.Split(',')[1])); InputHelper.InputWords(Cuenta.Nombre, 200, 200); BotHelper.Wait(1000); InformacionCuenta.nombreCuentaEscrito = true; } if (CampoConexion.X == Convert.ToInt32(Program.Configuracion.CampoContraseña.Split(',')[0]) && CampoConexion.Y == Convert.ToInt32(Program.Configuracion.CampoContraseña.Split(',')[1])) { Consola.Escribir($"\tIntroduciendo contraseña de la cuenta", ConsoleColor.Green); InputHelper.LeftClick(Convert.ToInt32(Program.Configuracion.CampoContraseña.Split(',')[0]) + 80, Convert.ToInt32(Program.Configuracion.CampoContraseña.Split(',')[1])); InputHelper.InputWords(Cuenta.Contraseña, 200, 200); BotHelper.Wait(1000); InformacionCuenta.contraseñaCuentaEscrita = true; } Consola.Debug($"\t[DEBUG] Campos credenciales encontrados en: {CampoConexion.X},{CampoConexion.Y}", ConsoleColor.Red); if (InformacionCuenta.nombreCuentaEscrito && InformacionCuenta.contraseñaCuentaEscrita) { InformacionCuenta.listaParaConectar = true; break; } } } Consola.Debug($"\t[DEBUG] --------------------------------------------------------------------------------- ", ConsoleColor.Red); InputHelper.PressKey("Enter"); InformacionCuenta.Conectada = true; Consola.Escribir($"\tCuenta conectada; esperando confirmación", ConsoleColor.Green); } catch (Exception e) { Consola.Escribir($"\tError: {e.Message}", ConsoleColor.Red); } }