예제 #1
0
        private static void Interpretar_Msg(List <String> mensagem)
        {
            string id = "";

            try
            {
                var objeto = new Mensagens();
                if (mensagem[0].Contains("ST4"))
                {
                    #region Mensagem de Localização
                    try
                    {
                        id = mensagem[1];
                        var m = new Mensagens();
                        var r = new Rastreador();
                        r.PorId(id);

                        //MENSAGEM DE POSIÇÃO

                        m.Data_Rastreador = DateTime.Now.ToString("yyyyMMdd HH:mm:ss");
                        //m.Data_Rastreador = mensagem[4] + " " + mensagem[5];
                        m.Data_Gps = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                        //m.Data_Gps = mensagem[4].Substring(0, 4) + "-" + mensagem[4].Substring(4, 2) + "-" + mensagem[4].Substring(6, 2) + " " + mensagem[5];
                        m.Data_Recebida = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                        m.ID_Rastreador = id;
                        m.Mensagem      = string.Join(";", mensagem);
                        m.Ras_codigo    = r.Codigo;
                        m.Tipo_Mensagem = "STT";
                        m.Latitude      = "0";
                        m.Longitude     = "0";
                        m.Velocidade    = "0";
                        //m.Velocidade = Convert.ToDecimal(mensagem[9].Replace('.', ',')).ToString("#0", CultureInfo.InvariantCulture).Replace('.', ',');
                        m.Vei_codigo = r.Vei_codigo != 0 ? r.Vei_codigo : 0;
                        //m.Ignicao = true;
                        m.Ignicao = Convert.ToInt32(mensagem[13]) == 1 ? true : false;
                        //m.Hodometro = "0";
                        m.Hodometro = (Convert.ToInt32(mensagem[16]) / 1000.0).ToString("#0.0", CultureInfo.InvariantCulture).Replace(',', '.');
                        m.Bloqueio  = false;
                        //m.Bloqueio = mensagem[15][4] == '1' ? true : false;
                        m.Sirene = false;
                        //m.Sirene = mensagem[15][5] == '1' ? true : false;
                        m.Tensao = "0";
                        //m.Tensao = mensagem[14];
                        m.Horimetro   = 0;
                        m.CodAlerta   = 0;
                        m.Tipo_Alerta = m.CodAlerta == 0 ? "" : "";
                        m.Endereco    = ""; // Util.BuscarEndereco(m.Latitude, m.Longitude, contas);

                        #region Gravar
                        if (m.Gravar())
                        {
                            m.Tipo_Mensagem = "EMG";
                            if (r.veiculo != null)
                            {
                                //Verifica Area de Risco/Cerca
                                Mensagens.EventoAreaCerca(m);

                                //Evento Por E-mail
                                var corpoEmail = m.Tipo_Alerta + "<br /> Endereço: " + m.Endereco;
                                Mensagens.EventoPorEmail(m.Vei_codigo, m.CodAlerta, corpoEmail);
                            }

                            #region Tensão

                            #endregion

                            #region Velocidade

                            /*if (r.Vei_codigo != 0)
                             * {
                             * var veiculo = Veiculo.BuscarVeiculoVelocidade(m.Vei_codigo);
                             * var velocidade_nova = Convert.ToDecimal(veiculo.vei_velocidade);
                             * if (velocidade_nova < Convert.ToDecimal(m.Velocidade) && velocidade_nova > 0)
                             * {
                             *  m.Tipo_Mensagem = "EVT";
                             *  m.Tipo_Alerta = "Veículo Ultrapassou a Velocidade";
                             *  m.CodAlerta = 23;
                             *  m.GravarEvento();
                             *
                             *  //Evento Por E-mail
                             *  var corpoEmail = m.Tipo_Alerta + "<br /> Velocidade: " + m.Velocidade + "<br /> Endereço: " + m.Endereco;
                             *  Mensagens.EventoPorEmail(m.Vei_codigo, m.CodAlerta, corpoEmail);
                             * }
                             * }*/
                            #endregion
                        }
                        #endregion
                    }
                    catch (Exception)
                    {
                    }
                    #endregion
                }
                else
                //MENSAGENS ST940
                if (mensagem[1] == "Location" || mensagem[1] == "Emergency" || (mensagem[1] == "RES" && mensagem[0].Contains("ST9")))
                {
                    #region Mensagem de Localização
                    try
                    {
                        id = mensagem[1] == "RES" ? mensagem[3] : mensagem[2];
                        var m = new Mensagens();
                        var r = new Rastreador();
                        r.PorId(id);

                        if (mensagem[1] == "RES" && mensagem[1] == "PRESET")
                        {
                            //MENSAGEM DE COMANDO CONFIGURAÇÃO
                        }
                        else
                        {
                            //MENSAGEM DE POSIÇÃO

                            m.Data_Rastreador = mensagem[4] + " " + mensagem[5];
                            m.Data_Gps        = mensagem[4].Substring(0, 4) + "-" + mensagem[4].Substring(4, 2) + "-" + mensagem[4].Substring(6, 2) + " " + mensagem[5];
                            m.Data_Recebida   = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                            m.ID_Rastreador   = id;
                            m.Mensagem        = string.Join(";", mensagem);
                            m.Ras_codigo      = r.Codigo;
                            m.Tipo_Mensagem   = mensagem[1] == "Location" ? "STT" : "EMG";
                            m.Latitude        = mensagem[6];
                            m.Longitude       = mensagem[7];
                            m.Velocidade      = "0";
                            //m.Velocidade = Convert.ToDecimal(mensagem[9].Replace('.', ',')).ToString("#0", CultureInfo.InvariantCulture).Replace('.', ',');
                            m.Vei_codigo = r.Vei_codigo != 0 ? r.Vei_codigo : 0;
                            m.Ignicao    = true;
                            //m.Ignicao = mensagem[15].Count() == 6 ? mensagem[15][0].Equals('0') ? false : true : mensagem[15][8].Equals('0') ? false : true;
                            m.Hodometro = "0";
                            //m.Hodometro = (Convert.ToInt32(mensagem[13]) / 1000.0).ToString("#0.0", CultureInfo.InvariantCulture).Replace(',', '.');
                            m.Bloqueio = false;
                            //m.Bloqueio = mensagem[15][4] == '1' ? true : false;
                            m.Sirene = false;
                            //m.Sirene = mensagem[15][5] == '1' ? true : false;
                            m.Tensao = "0";
                            //m.Tensao = mensagem[14];
                            m.Horimetro   = 0;
                            m.CodAlerta   = mensagem[1] == "Location" ? 0 : 3;
                            m.Tipo_Alerta = m.CodAlerta == 0 ? "" : "Botão de Pânico Acionado";
                            m.Endereco    = Util.BuscarEndereco(m.Latitude, m.Longitude, contas);

                            #region Gravar
                            if (m.Gravar())
                            {
                                m.Tipo_Mensagem = "EMG";
                                if (r.veiculo != null)
                                {
                                    //Verifica Area de Risco/Cerca
                                    Mensagens.EventoAreaCerca(m);

                                    //Evento Por E-mail
                                    var corpoEmail = m.Tipo_Alerta + "<br /> Endereço: " + m.Endereco;
                                    Mensagens.EventoPorEmail(m.Vei_codigo, m.CodAlerta, corpoEmail);
                                }

                                #region Tensão

                                #endregion

                                #region Velocidade

                                /*if (r.Vei_codigo != 0)
                                 * {
                                 *  var veiculo = Veiculo.BuscarVeiculoVelocidade(m.Vei_codigo);
                                 *  var velocidade_nova = Convert.ToDecimal(veiculo.vei_velocidade);
                                 *  if (velocidade_nova < Convert.ToDecimal(m.Velocidade) && velocidade_nova > 0)
                                 *  {
                                 *      m.Tipo_Mensagem = "EVT";
                                 *      m.Tipo_Alerta = "Veículo Ultrapassou a Velocidade";
                                 *      m.CodAlerta = 23;
                                 *      m.GravarEvento();
                                 *
                                 *      //Evento Por E-mail
                                 *      var corpoEmail = m.Tipo_Alerta + "<br /> Velocidade: " + m.Velocidade + "<br /> Endereço: " + m.Endereco;
                                 *      Mensagens.EventoPorEmail(m.Vei_codigo, m.CodAlerta, corpoEmail);
                                 *  }
                                 * }*/
                                #endregion
                            }
                            #endregion
                        }
                    }
                    catch (Exception)
                    {
                        //LogException.GravarException("Erro: " + ex.Message.ToString() + " - Mensagem: " + (ex.InnerException != null ? ex.InnerException.ToString() : " Valor nulo na mensagem "), 12, "Escuta Suntech Novo - Método " + System.Reflection.MethodBase.GetCurrentMethod().Name);

                        /*StreamWriter txt = new StreamWriter("erros_01.txt", true);
                         * txt.WriteLine("ERRO: " + e.Message.ToString());
                         * txt.Close();*/
                    }
                    #endregion
                }
                else if (mensagem[0].Contains("STT")) //mensagem proveniente de um STATUS mensagem
                {
                    #region Mensagem de Status
                    try
                    {
                        id = mensagem[1];

                        var m = new Mensagens();
                        var r = new Rastreador();
                        r.PorId(id);

                        m.Data_Rastreador = mensagem[4] + " " + mensagem[5];
                        m.Data_Gps        = mensagem[4].Substring(0, 4) + "-" + mensagem[4].Substring(4, 2) + "-" + mensagem[4].Substring(6, 2) + " " + mensagem[5];
                        m.Data_Recebida   = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                        m.ID_Rastreador   = id;
                        m.Mensagem        = string.Join(";", mensagem);
                        m.Ras_codigo      = r.Codigo;
                        m.Tipo_Mensagem   = "STT";
                        m.Latitude        = mensagem[7];
                        m.Longitude       = mensagem[8];
                        m.Tipo_Alerta     = "";
                        m.Velocidade      = Convert.ToDecimal(mensagem[9].Replace('.', ',')).ToString("#0", CultureInfo.InvariantCulture).Replace('.', ',');
                        m.Vei_codigo      = r.Vei_codigo != 0 ? r.Vei_codigo : 0;
                        m.Ignicao         = mensagem[15].Count() == 6 ? mensagem[15][0].Equals('0') ? false : true : mensagem[15][8].Equals('0') ? false : true;
                        m.Hodometro       = (Convert.ToInt32(mensagem[13]) / 1000.0).ToString("#0.0", CultureInfo.InvariantCulture).Replace(',', '.');
                        m.Bloqueio        = mensagem[15][4] == '1' ? true : false;
                        m.Sirene          = mensagem[15][5] == '1' ? true : false;
                        m.Tensao          = mensagem[14];
                        m.Horimetro       = 0;
                        m.CodAlerta       = 0;
                        m.Endereco        = Util.BuscarEndereco(m.Latitude, m.Longitude, contas);

                        #region Gravar
                        if (m.Gravar())
                        {
                            m.Tipo_Mensagem = "EMG";

                            if (r.veiculo != null)
                            {
                                //Verifica Area de Risco/Cerca
                                Mensagens.EventoAreaCerca(m);

                                //Evento Por E-mail
                                var corpoEmail = m.Tipo_Alerta + "<br /> Endereço: " + m.Endereco;
                                Mensagens.EventoPorEmail(m.Vei_codigo, m.CodAlerta, corpoEmail);
                            }

                            #region Tensão

                            /*string voltagem = r.veiculo.voltagem.ToString().Replace(",00", "");
                             * /*voltagem = voltagem.Length == 3 ? "0" + voltagem : voltagem;
                             * string voltagem_correta = voltagem.Substring(0, 2) + "." + voltagem.Substring(2, 2);
                             * decimal voltagem_cadastro = Convert.ToDecimal(voltagem_correta);
                             */
                            /*string total = (Convert.ToDecimal(voltagem_correta) + 2).ToString();
                             *
                             * StreamWriter txt = new StreamWriter("tensao.txt", true);
                             * txt.WriteLine("Tensão: " + total);
                             * txt.Close();*/

                            //var tet = r.rastreador_evento.Where(x => x.te_codigo.Equals(26)).ToList().ForEach(x => { x.te_codigo });


                            /*var a = r.rastreador_evento.Select(tet => tet.te_codigo = 26);
                             *
                             *
                             * Console.WriteLine("----------------------------");
                             * Console.WriteLine(a.ToString());
                             * Console.WriteLine("----------------------------");
                             *
                             * var gravar_evento = true;
                             * r.rastreador_evento.ForEach(x => {
                             *  if(x.te_codigo == 26){
                             *      gravar_evento = false;
                             *  }
                             * });
                             *
                             * if (gravar_evento)
                             * {*/
                            /*if ((Convert.ToDecimal(voltagem_correta) + 200) < Convert.ToDecimal(m.Tensao))
                             * {
                             *  m.Tipo_Mensagem = "EVT";
                             *  m.Tipo_Alerta = "Tensão Acima do Ideal";
                             *  m.CodAlerta = 26;
                             *  m.GravarEvento();
                             * }*/
                            //}

                            /*StreamWriter txt = new StreamWriter("teste_bloqueio_evento.txt", true);
                             * txt.WriteLine(tet);
                             * txt.Close();*/

                            /*if (!r.rastreador_evento.Where(x => x.te_codigo.Equals(26)))
                             * {*/

                            /*decimal porcentagem_alta = voltagem_cadastro + (voltagem_cadastro * Convert.ToDecimal(0.25));
                             * /*decimal porcentagem_baixa = voltagem_cadastro - (voltagem_cadastro * Convert.ToDecimal(0.20)); ;
                             *
                             * if (porcentagem_alta < Convert.ToDecimal(m.Tensao))
                             * {
                             *  m.Tipo_Mensagem = "EVT";
                             *  m.Tipo_Alerta = "Tensão Acima do Ideal";
                             *  m.CodAlerta = 26;
                             *  m.GravarEvento();
                             * }*/
                            /*}
                             *
                             * if (!r.rastreador_evento.Where(x => x.te_codigo.Equals(25)))
                             * {
                             *   StreamWriter txt = new StreamWriter("teste_bloqueio_evento.txt", true);
                             *   txt.WriteLine("NICE");
                             *   txt.Close();
                             */
                            /*if (porcentagem_baixa > Convert.ToDecimal(m.Tensao))
                             * {
                             *  m.Tipo_Mensagem = "EVT";
                             *  m.Tipo_Alerta = "Tensão Abaixo do Ideal";
                             *  m.CodAlerta = 25;
                             *  m.GravarEvento();
                             * }*/
                            /*}
                             * else
                             * {
                             *  StreamWriter txt = new StreamWriter("teste_bloqueio_evento.txt", true);
                             *  txt.WriteLine("NOT_NICE");
                             *  txt.Close();
                             * }*/


                            #endregion

                            #region Velocidade
                            if (r.Vei_codigo != 0)
                            {
                                var veiculo         = Veiculo.BuscarVeiculoVelocidade(m.Vei_codigo);
                                var velocidade_nova = Convert.ToDecimal(veiculo.vei_velocidade);
                                if (velocidade_nova < Convert.ToDecimal(m.Velocidade) && velocidade_nova > 0)
                                {
                                    m.Tipo_Mensagem = "EVT";
                                    m.Tipo_Alerta   = "Veículo Ultrapassou a Velocidade";
                                    m.CodAlerta     = 23;
                                    m.GravarEvento();

                                    //Evento Por E-mail
                                    var corpoEmail = m.Tipo_Alerta + "<br /> Velocidade: " + m.Velocidade + "<br /> Endereço: " + m.Endereco;
                                    Mensagens.EventoPorEmail(m.Vei_codigo, m.CodAlerta, corpoEmail);
                                }
                            }
                            #endregion
                        }
                        #endregion
                    }
                    catch (Exception e)
                    {
                        //LogException.GravarException("Erro: " + ex.Message.ToString() + " - Mensagem: " + (ex.InnerException != null ? ex.InnerException.ToString() : " Valor nulo na mensagem "), 12, "Escuta Suntech Novo - Método " + System.Reflection.MethodBase.GetCurrentMethod().Name);
                        StreamWriter txt = new StreamWriter("erros_01.txt", true);
                        txt.WriteLine("ERRO: " + e.Message.ToString());
                        txt.Close();
                    }
                    #endregion
                }
                else if (mensagem[0].Contains("EMG")) //mensagem proveniente de uma EMERGÊNCIA
                {
                    #region Mensagem de Emergência
                    try
                    {
                        var r = new Rastreador();
                        var m = new Mensagens();

                        id = mensagem[1];
                        r.PorId(id);

                        m.Data_Gps      = mensagem[4].Substring(0, 4) + "-" + mensagem[4].Substring(4, 2) + "-" + mensagem[4].Substring(6, 2) + " " + mensagem[5];
                        m.Data_Recebida = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                        m.ID_Rastreador = id;
                        m.Mensagem      = string.Join(";", mensagem);
                        m.Ras_codigo    = r.Codigo;
                        m.Tipo_Mensagem = "EMG";
                        m.Latitude      = mensagem[7];
                        m.Longitude     = mensagem[8];
                        m.Velocidade    = Convert.ToDecimal(mensagem[9].Replace('.', ',')).ToString("#0", CultureInfo.InvariantCulture).Replace('.', ',');
                        m.Ignicao       = mensagem[15].Count() == 6 ? mensagem[15][0].Equals('0') ? false : true : mensagem[15][8].Equals('0') ? false : true;
                        m.Hodometro     = (Convert.ToInt32(mensagem[13]) / 1000.0).ToString("#0.0", CultureInfo.InvariantCulture).Replace(',', '.');
                        m.Bloqueio      = mensagem[15][4] == '1' ? true : false;
                        m.Sirene        = mensagem[15][5] == '1' ? true : false;
                        m.Tensao        = mensagem[14];
                        m.Horimetro     = 0;
                        m.Tipo_Alerta   = "";
                        //m.Endereco = Mensagens.RequisitarEndereco(m.Latitude, m.Longitude);
                        m.Endereco = Util.BuscarEndereco(m.Latitude, m.Longitude, contas);

                        m.CodAlerta = 0;

                        if (r.veiculo != null)
                        {
                            m.Vei_codigo = r.Vei_codigo;
                        }

                        var grava = false;

                        if (mensagem[16].Equals("2"))
                        {
                            m.Tipo_Alerta = "Parking Lock";
                            m.CodAlerta   = 1;
                            grava         = true;
                        }
                        else if (mensagem[16].Equals("3"))
                        {
                            m.Tipo_Alerta = "Energia Principal Removida";
                            m.CodAlerta   = 2;
                            grava         = true;
                        }

                        if (grava)
                        {
                            m.Gravar();
                        }

                        //Evento Por E-mail
                        var corpoEmail = m.Tipo_Alerta + "<br /> Endereço: " + m.Endereco;
                        Mensagens.EventoPorEmail(m.Vei_codigo, m.CodAlerta, corpoEmail);
                    }
                    catch (Exception)
                    {
                        //LogException.GravarException("Erro: " + ex.Message.ToString() + " - Mensagem: " + (ex.InnerException != null ? ex.InnerException.ToString() : " Valor nulo na mensagem "), 12, "Escuta Suntech Novo - Método " + System.Reflection.MethodBase.GetCurrentMethod().Name);

                        /*StreamWriter txt = new StreamWriter("erros_02.txt", true);
                         * txt.WriteLine("ERRO: " + e.Message.ToString());
                         * txt.Close();*/
                    }
                    #endregion
                }
                else if (mensagem[0].Contains("EVT")) //mensagem proveniente de um EVENTO
                {
                    #region Mensagem de Evento
                    if (!mensagem[1].Equals("Res"))
                    {
                        #region Evento Não Comando
                        try
                        {
                            id = mensagem[1];
                            var r = new Rastreador();
                            var m = new Mensagens();
                            r.PorId(id);


                            m.Data_Gps      = mensagem[4].Substring(0, 4) + "-" + mensagem[4].Substring(4, 2) + "-" + mensagem[4].Substring(6, 2) + " " + mensagem[5];
                            m.Data_Recebida = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                            m.ID_Rastreador = id;
                            m.Mensagem      = string.Join(";", mensagem);
                            m.Ras_codigo    = r.Codigo;
                            m.Tipo_Mensagem = "EVT";
                            m.Latitude      = mensagem[7];
                            m.Longitude     = mensagem[8];
                            m.Velocidade    = Convert.ToDecimal(mensagem[9].Replace('.', ',')).ToString("#0", CultureInfo.InvariantCulture).Replace('.', ',');
                            m.Ignicao       = mensagem[15].Count() == 6 ? mensagem[15][0].Equals('0') ? false : true : mensagem[15][8].Equals('0') ? false : true;
                            m.Hodometro     = (Convert.ToInt32(mensagem[13]) / 1000.0).ToString("#0.0", CultureInfo.InvariantCulture).Replace(',', '.');
                            m.Bloqueio      = mensagem[15][4] == '1' ? true : false;
                            m.Sirene        = mensagem[15][5] == '1' ? true : false;
                            m.Tensao        = mensagem[14];
                            m.Horimetro     = 0;
                            //m.Endereco = Mensagens.RequisitarEndereco(m.Latitude, m.Longitude);
                            m.Endereco    = Util.BuscarEndereco(m.Latitude, m.Longitude, contas);
                            m.CodAlerta   = 0;
                            m.Tipo_Alerta = "";

                            #region Eventos
                            if (r.veiculo != null)
                            {
                                m.Vei_codigo = r.Vei_codigo;
                            }

                            var grava = false;

                            /*if (mensagem[16].Equals("2"))
                             * {
                             *  m.Tipo_Alerta = "Botão de Pânico Acionado";
                             *  m.CodAlerta = 3;
                             *  grava = true;
                             * }
                             * else*/if (mensagem[16].Equals("3")) // entrada 2 desligada
                            {
                                m.Tipo_Alerta = "Sensor Porta Aberta";
                                m.CodAlerta   = 4;
                                grava         = true;
                            }
                            else if (mensagem[16].Equals("4")) // entrada 2 ligada
                            {
                                m.Tipo_Alerta = "Sensor Porta Fechada";
                                m.CodAlerta   = 5;
                                grava         = true;
                            }
                            else if (mensagem[16].Equals("5")) // entrada 3 Desligada
                            {
                                m.Tipo_Alerta = "Sensor Plataforma Desativada";
                                m.CodAlerta   = 6;
                                grava         = true;
                            }
                            else if (mensagem[16].Equals("6")) // entrada 3 Ligada
                            {
                                m.Tipo_Alerta = "Sensor Plataforma Ativada";
                                m.CodAlerta   = 7;
                                grava         = true;
                            }
                            else if (mensagem[15].Count() == 6)
                            {
                                if (mensagem[15][1].Equals('1'))
                                {
                                    m.Tipo_Alerta = "Sensor Painel Fechado";
                                    m.CodAlerta   = 22;
                                    grava         = true;
                                }
                                else if (mensagem[15][1].Equals('0'))
                                {
                                    m.Tipo_Alerta = "Sensor Painel Violado";
                                    m.CodAlerta   = 21;
                                    grava         = true;
                                }
                            }
                            #endregion

                            if (grava)
                            {
                                m.Gravar();
                            }

                            //Evento Por E-mail
                            var corpoEmail = m.Tipo_Alerta + "<br /> Endereço: " + m.Endereco;
                            Mensagens.EventoPorEmail(m.Vei_codigo, m.CodAlerta, corpoEmail);
                        }
                        catch (Exception)
                        {
                            //LogException.GravarException("Erro: " + ex.Message.ToString() + " - Mensagem: " + (ex.InnerException != null ? ex.InnerException.ToString() : " Valor nulo na mensagem "), 12, "Escuta Suntech Novo - Método " + System.Reflection.MethodBase.GetCurrentMethod().Name);

                            /*StreamWriter txt = new StreamWriter("erros_03_1.txt", true);
                             * txt.WriteLine("ERRO: " + e.Message.ToString());
                             * txt.Close();*/
                        }
                        #endregion
                    }
                    else // Se for um Evento de Comando
                    {
                        #region Evento Comando
                        try
                        {
                            var m = new Mensagens();
                            m.Data_Recebida = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                            m.ID_Rastreador = mensagem[0] == "SA200CMD" ? mensagem[3] : mensagem[2];
                            m.Mensagem      = string.Join(";", mensagem);
                            m.Latitude      = "+00.0000";
                            m.Longitude     = "+000.0000";
                            m.Tipo_Mensagem = "CMD";
                            m.Tipo_Alerta   = mensagem[0] == "SA200CMD" ? mensagem[5] : mensagem[4];
                            m.CodAlerta     = 0;

                            m.GravarCMD();
                        }
                        catch (Exception)
                        {
                            //LogException.GravarException("Erro: " + ex.Message.ToString() + " - Mensagem: " + (ex.InnerException != null ? ex.InnerException.ToString() : " Valor nulo na mensagem "), 12, "Escuta Suntech Novo - Método " + System.Reflection.MethodBase.GetCurrentMethod().Name);

                            /*
                             * StreamWriter txt = new StreamWriter("erros_03_2.txt", true);
                             * txt.WriteLine("ERRO: " + e.Message.ToString());
                             * txt.Close();*/
                        }
                        #endregion
                    }
                    #endregion
                }
                else if (mensagem[0].Contains("ALT")) //mensagem proveniente de um ALERT
                {
                    #region Mensagem de um ALERT
                    try
                    {
                        id = mensagem[1];
                        var r = new Rastreador();
                        var m = new Mensagens();
                        r.PorId(id);

                        m.Data_Gps      = mensagem[4].Substring(0, 4) + "-" + mensagem[4].Substring(4, 2) + "-" + mensagem[4].Substring(6, 2) + " " + mensagem[5];
                        m.Data_Recebida = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                        m.ID_Rastreador = id;
                        m.Mensagem      = string.Join(";", mensagem);
                        m.Ras_codigo    = r.Codigo;
                        m.Tipo_Mensagem = "ALT";
                        m.Latitude      = mensagem[7];
                        m.Longitude     = mensagem[8];
                        m.Velocidade    = Convert.ToDecimal(mensagem[9].Replace('.', ',')).ToString("#0", CultureInfo.InvariantCulture).Replace('.', ',');
                        m.Ignicao       = mensagem[15].Count() == 6 ? mensagem[15][0].Equals('0') ? false : true : mensagem[15][8].Equals('0') ? false : true;
                        m.Hodometro     = (Convert.ToInt32(mensagem[13]) / 1000.0).ToString("#0.0", CultureInfo.InvariantCulture).Replace(',', '.');
                        m.Bloqueio      = mensagem[15][4] == '1' ? true : false;
                        m.Sirene        = mensagem[15][5] == '1' ? true : false;
                        m.Tensao        = mensagem[14];
                        m.Horimetro     = 0;
                        m.CodAlerta     = 0;
                        m.Tipo_Alerta   = "";
                        m.Endereco      = Util.BuscarEndereco(m.Latitude, m.Longitude, contas);

                        #region Eventos
                        if (r.veiculo != null)
                        {
                            m.Vei_codigo = r.Vei_codigo;
                        }

                        var grava = false;
                        if (mensagem[16].Equals("3"))
                        {
                            m.Tipo_Alerta = "Antena GPS Desconectada";
                            m.CodAlerta   = 8;
                            grava         = true;
                        }
                        else if (mensagem[16].Equals("4"))
                        {
                            m.Tipo_Alerta = "Antena GPS Conectada";
                            m.CodAlerta   = 9;
                            grava         = true;
                        }
                        else if (mensagem[16].Equals("15"))
                        {
                            m.Tipo_Alerta = "Colisão";
                            m.CodAlerta   = 10;
                            grava         = true;
                        }
                        else if (mensagem[16].Equals("16"))
                        {
                            m.Tipo_Alerta = "Veículo sofreu batida";
                            m.CodAlerta   = 11;
                            grava         = true;
                        }
                        else if (mensagem[16].Equals("50"))
                        {
                            m.Tipo_Alerta = "Jammer Detectado";
                            m.CodAlerta   = 12;
                            grava         = true;
                        }
                        #endregion

                        if (grava)
                        {
                            m.Gravar();
                        }

                        //Evento Por E-mail
                        var corpoEmail = m.Tipo_Alerta + "<br /> Endereço: " + m.Endereco;
                        Mensagens.EventoPorEmail(m.Vei_codigo, m.CodAlerta, corpoEmail);
                    }
                    catch (Exception)
                    {
                        //LogException.GravarException("Erro: " + ex.Message.ToString() + " - Mensagem: " + (ex.InnerException != null ? ex.InnerException.ToString() : " Valor nulo na mensagem "), 12, "Escuta Suntech Novo - Método " + System.Reflection.MethodBase.GetCurrentMethod().Name);

                        /*StreamWriter txt = new StreamWriter("erros_04.txt", true);
                         * txt.WriteLine("ERRO: " + e.Message.ToString());
                         * txt.Close();*/
                    }
                    #endregion
                }
                else if (mensagem[0].Contains("CMD")) //mensagem proveniente de um COMANDO
                {
                    #region Mensagem de Comando que não for Evento
                    try
                    {
                        var m = new Mensagens();
                        m.Data_Recebida = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                        m.ID_Rastreador = mensagem[0] == "SA200CMD" ? mensagem[3] : mensagem[2];
                        m.Mensagem      = string.Join(";", mensagem);
                        m.Latitude      = "+00.0000";
                        m.Longitude     = "+000.0000";
                        m.Tipo_Mensagem = "CMD";
                        m.Tipo_Alerta   = mensagem[0] == "SA200CMD" ? mensagem[5] : mensagem[4];

                        m.GravarCMD();
                    }
                    catch (Exception)
                    {
                        //LogException.GravarException("Erro: " + ex.Message.ToString() + " - Mensagem: " + (ex.InnerException != null ? ex.InnerException.ToString() : " Valor nulo na mensagem "), 1, "Escuta Suntech Novo - Método " + System.Reflection.MethodBase.GetCurrentMethod().Name);
                        //nada

                        /*StreamWriter txt = new StreamWriter("erros_05.txt", true);
                         * txt.WriteLine("ERRO: " + e.Message.ToString());
                         * txt.Close();*/
                    }
                    #endregion
                }
            }
            catch (Exception)
            {
                //LogException.GravarException("Erro: " + ex.Message.ToString() + " - Mensagem: " + (ex.InnerException != null ? ex.InnerException.ToString() : " Valor nulo na mensagem "), 12, "Escuta Suntech Novo - Método " + System.Reflection.MethodBase.GetCurrentMethod().Name);
                //nada

                /*StreamWriter txt = new StreamWriter("erros_06.txt", true);
                 * txt.WriteLine("ERRO: " + e.Message.ToString());
                 * txt.Close();*/
            }
        }
예제 #2
0
        public static void Gravar(List <Position> objeto, string mensagem, string id)
        {
            try
            {
                var m = new Mensagens();
                var r = new Rastreador();
                r.PorId(id);

                m.Data_Rastreador = objeto[0].DataRastreador.ToString("yyyyMMdd HH:mm:ss");
                m.Data_Gps        = objeto[0].DataRastreador.ToString("yyyy-MM-dd HH:mm:ss");
                m.Data_Recebida   = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                m.ID_Rastreador   = id;
                m.Mensagem        = mensagem;
                m.Ras_codigo      = r.Codigo;
                m.Tipo_Mensagem   = "STT";
                m.Latitude        = objeto[0].La.ToString().Replace(',', '.');
                m.Longitude       = "-0" + objeto[0].Lo.ToString().Substring(1).Replace(',', '.');
                m.Tipo_Alerta     = "";
                m.Velocidade      = objeto[0].Speed.ToString();
                m.Vei_codigo      = r.Vei_codigo != 0 ? r.Vei_codigo : 0;
                m.Ignicao         = Convert.ToBoolean(objeto[0].Ignicao);
                m.Hodometro       = objeto[0].Mileage.ToString();
                m.Bloqueio        = false;
                m.Sirene          = false;
                m.Tensao          = (objeto[0].Ext_Voltage / 1000.0).ToString();
                m.Horimetro       = 0;
                m.CodAlerta       = 0;
                m.Endereco        = Util.BuscarEndereco(m.Latitude, m.Longitude, contas);

                #region Gravar
                if (m.Gravar())
                {
                    var grava = false;
                    m.Tipo_Mensagem = "EMG";

                    if (r.veiculo != null)
                    {
                        //Verifica Area de Risco/Cerca
                        Mensagens.EventoAreaCerca(m);

                        //Evento Por E-mail
                        var corpoEmail = m.Tipo_Alerta + "<br /> Endereço: " + m.Endereco;
                        Mensagens.EventoPorEmail(m.Vei_codigo, m.CodAlerta, corpoEmail);
                    }

                    #region Tensão

                    /*string voltagem = r.veiculo.voltagem.ToString().Replace(",00", "");
                     *      /*voltagem = voltagem.Length == 3 ? "0" + voltagem : voltagem;
                     *      string voltagem_correta = voltagem.Substring(0, 2) + "." + voltagem.Substring(2, 2);
                     *      decimal voltagem_cadastro = Convert.ToDecimal(voltagem_correta);
                     */
                    /*string total = (Convert.ToDecimal(voltagem_correta) + 2).ToString();
                     *
                     * StreamWriter txt = new StreamWriter("tensao.txt", true);
                     * txt.WriteLine("Tensão: " + total);
                     * txt.Close();*/

                    //var tet = r.rastreador_evento.Where(x => x.te_codigo.Equals(26)).ToList().ForEach(x => { x.te_codigo });


                    /*var a = r.rastreador_evento.Select(tet => tet.te_codigo = 26);
                     *
                     *
                     * Console.WriteLine("----------------------------");
                     * Console.WriteLine(a.ToString());
                     * Console.WriteLine("----------------------------");
                     *
                     * var gravar_evento = true;
                     * r.rastreador_evento.ForEach(x => {
                     *  if(x.te_codigo == 26){
                     *      gravar_evento = false;
                     *  }
                     * });
                     *
                     * if (gravar_evento)
                     * {*/
                    /*if ((Convert.ToDecimal(voltagem_correta) + 200) < Convert.ToDecimal(m.Tensao))
                     * {
                     *  m.Tipo_Mensagem = "EVT";
                     *  m.Tipo_Alerta = "Tensão Acima do Ideal";
                     *  m.CodAlerta = 26;
                     *  m.GravarEvento();
                     * }*/
                    //}

                    /*StreamWriter txt = new StreamWriter("teste_bloqueio_evento.txt", true);
                     * txt.WriteLine(tet);
                     * txt.Close();*/

                    /*if (!r.rastreador_evento.Where(x => x.te_codigo.Equals(26)))
                     * {*/

                    /*decimal porcentagem_alta = voltagem_cadastro + (voltagem_cadastro * Convert.ToDecimal(0.25));
                     * /*decimal porcentagem_baixa = voltagem_cadastro - (voltagem_cadastro * Convert.ToDecimal(0.20)); ;
                     *
                     * if (porcentagem_alta < Convert.ToDecimal(m.Tensao))
                     * {
                     *  m.Tipo_Mensagem = "EVT";
                     *  m.Tipo_Alerta = "Tensão Acima do Ideal";
                     *  m.CodAlerta = 26;
                     *  m.GravarEvento();
                     * }*/
                    /*}
                     *
                     * if (!r.rastreador_evento.Where(x => x.te_codigo.Equals(25)))
                     * {
                     *   StreamWriter txt = new StreamWriter("teste_bloqueio_evento.txt", true);
                     *   txt.WriteLine("NICE");
                     *   txt.Close();
                     */
                    /*if (porcentagem_baixa > Convert.ToDecimal(m.Tensao))
                     * {
                     *  m.Tipo_Mensagem = "EVT";
                     *  m.Tipo_Alerta = "Tensão Abaixo do Ideal";
                     *  m.CodAlerta = 25;
                     *  m.GravarEvento();
                     * }*/
                    /*}
                     * else
                     * {
                     *  StreamWriter txt = new StreamWriter("teste_bloqueio_evento.txt", true);
                     *  txt.WriteLine("NOT_NICE");
                     *  txt.Close();
                     * }*/


                    #endregion

                    #region Velocidade
                    if (r.Vei_codigo != 0)
                    {
                        var veiculo         = Veiculo.BuscarVeiculoVelocidade(m.Vei_codigo);
                        var velocidade_nova = Convert.ToDecimal(veiculo.vei_velocidade);
                        if (velocidade_nova < Convert.ToDecimal(m.Velocidade) && velocidade_nova > 0)
                        {
                            m.Tipo_Mensagem = "EVT";
                            m.Tipo_Alerta   = "Veículo Ultrapassou a Velocidade";
                            m.CodAlerta     = 23;
                            m.GravarEvento();

                            //Evento Por E-mail
                            var corpoEmail = m.Tipo_Alerta + "<br /> Velocidade: " + m.Velocidade + "<br /> Endereço: " + m.Endereco;
                            Mensagens.EventoPorEmail(m.Vei_codigo, m.CodAlerta, corpoEmail);
                        }
                    }
                    #endregion

                    #region Jammer
                    if (objeto[0].Jamming == 1)
                    {
                        m.Tipo_Mensagem = "ALT";
                        m.Tipo_Alerta   = "Jammer Detectado";
                        m.CodAlerta     = 12;
                        grava           = true;
                    }
                    #endregion

                    #region Colisão
                    if (objeto[0].Crash == 1 || objeto[0].Crash == 2)
                    {
                        m.Tipo_Mensagem = "ALT";
                        m.Tipo_Alerta   = "Colisão";
                        m.CodAlerta     = 10;
                        grava           = true;
                    }
                    #endregion
                }
                #endregion
            }
            catch (Exception e)
            {
                //LogException.GravarException("Erro: " + ex.Message.ToString() + " - Mensagem: " + (ex.InnerException != null ? ex.InnerException.ToString() : " Valor nulo na mensagem "), 12, "Escuta Suntech Novo - Método " + System.Reflection.MethodBase.GetCurrentMethod().Name);
                StreamWriter txt = new StreamWriter("erros_01.txt", true);
                txt.WriteLine("ERRO: " + e.Message.ToString());
                txt.Close();
            }
        }