private void Button_Guardar_Click(object sender, EventArgs e)
        {
            Models.Incidentes incidentes = db.Incidentes.Where(x => x.Id == IdIncidente).FirstOrDefault();
            db.UpdateIncidente(IdIncidente, incidentes.IdCliente, incidentes.IdLog, this.TextBox_Comentarios.Text, TiempoInicio, DateTime.Now, "Completo", true, DateTime.Now, IdUsuario);
            if (string.IsNullOrEmpty(Button.Text))
            {
                Button.Text    = "";
                Button.Visible = false;
            }
            else
            {
                Button.Text = (int.Parse(Button.Text) - 1) + "";
                if ((int.Parse(Button.Text)) == 0)
                {
                    Button.Visible = false;
                }
            }

            DialogResult result = MetroFramework.MetroMessageBox.Show(this, "Listo! Se guardo correctamente", "Monitoreo 360", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);

            this.FormClosing -= ClienteAlerta_FormClosing_1;
            if (result == DialogResult.OK)
            {
                close = true;
                this.Close();
            }
        }
Beispiel #2
0
        private void Button_Alerta_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(Button_Badge.Text))
            {
                Button_Badge.Text    = "";
                Button_Badge.Visible = true;
            }
            else
            {
                Button_Badge.Text    = (int.Parse(Button_Badge.Text) - 1) + "";
                Button_Badge.Visible = true;
            }
            string name = ((System.Windows.Forms.Button)sender).Name;
            Guid   Id   = Guid.Parse(name);

            Models.Incidentes incidente = db.Incidentes.Where(model => model.Id == Id).FirstOrDefault();
            CultureInfo       CI        = new CultureInfo("es-MX");
            LogMonitoreo360   Log       = db.LogMonitoreo360.Where(x => x.Id == incidente.IdLog).FirstOrDefault();
            string            f         = Log.Log.Substring(0, 20);
            DateTime          fecha     = DateTime.Parse(f);

            f = Log.Log.Substring(23, 20).Replace("-", " ");
            DateTime fecha2         = DateTime.Parse(f);
            string   NumeroTelefono = Log.Log.Substring(54, 6).Replace("-", "");
            string   NumeroCuenta   = Log.Log.Substring(61, 4);
            string   report         = Log.Log.Substring(66, Log.Log.Length - 66);

            string[]              eventos       = report.Split('-')[1].Split('/');
            Models.Clientes       cliente       = db.Clientes.Where(x => x.IdCliente == incidente.IdCliente).FirstOrDefault();
            bool                  ParticionZona = false;
            List <ClienteEventos> Eventos       = new List <ClienteEventos>();
            string                Zona          = "1";

            try
            {
                if (eventos.Count() > 1)
                {
                    //List<Sensores> clienteSensores = db.GetSensores(cliente.IdCliente, 2).ToList();
                    List <GetSensores_Result> clienteSensores = db.GetSensores(cliente.IdCliente, 2).ToList();
                    //HorarioOperaciones Horario = db.GetHorarioOperaciones(cliente.IdCliente).FirstOrDefault();
                    GetHorarioOperaciones_Result Horario        = db.GetHorarioOperaciones(cliente.IdCliente).FirstOrDefault();
                    List <CodigoEventos>         CodigosEventos = db.CodigoEventos.ToList();
                    foreach (var evento in eventos)
                    {
                        ClienteEventos clienteEventos = new ClienteEventos();
                        if (evento.Contains("ri"))
                        {
                            clienteEventos.ParticionArea = evento.Split('i')[1];
                            Zona          = evento.Split('i')[1];
                            ParticionZona = true;
                        }
                        else if (CodigosEventos.Where(x => x.Codigo.Contains(evento.Substring(0, 2))).Any())
                        {
                            ParticionZona = false;
                            CodigoEventos ClienteEvento = CodigosEventos.Where(x => x.Codigo.Contains(evento.Substring(0, 2))).First();
                            clienteEventos.Tipo          = ClienteEvento.Tipo;
                            clienteEventos.Codigo        = ClienteEvento.Codigo;
                            clienteEventos.Descripcion   = ClienteEvento.Descripcion;
                            clienteEventos.Numero        = evento.Substring(2, 4);
                            clienteEventos.ParticionArea = Zona;
                            if (Horario != null)
                            {
                                if (ClienteEvento.Codigo.Contains("OP") || ClienteEvento.Codigo.Contains("CL") || ClienteEvento.Codigo.Contains("OR") || ClienteEvento.Codigo.Contains("CR"))
                                {
                                    TimeSpan Inicial = new TimeSpan();
                                    TimeSpan Final   = new TimeSpan();
                                    TimeSpan H       = new TimeSpan(fecha.Hour, fecha.Minute, fecha.Second);
                                    if (fecha.ToString("dddd", CI) == "lunes")
                                    {
                                        Inicial = new TimeSpan(Horario.LunesInicio.Value.Hours, Horario.LunesInicio.Value.Minutes, Horario.LunesInicio.Value.Seconds);
                                        Final   = new TimeSpan(Horario.LunesFinal.Value.Hours, Horario.LunesFinal.Value.Minutes, Horario.LunesFinal.Value.Seconds);
                                    }
                                    if (fecha.ToString("dddd", CI) == "martes")
                                    {
                                        Inicial = new TimeSpan(Horario.MartesInicio.Value.Hours, Horario.MartesInicio.Value.Minutes, Horario.MartesInicio.Value.Seconds);
                                        Final   = new TimeSpan(Horario.MartesFinal.Value.Hours, Horario.MartesFinal.Value.Minutes, Horario.MartesFinal.Value.Seconds);
                                    }
                                    if (fecha.ToString("dddd", CI) == "miercoles")
                                    {
                                        Inicial = new TimeSpan(Horario.MiercolesInicio.Value.Hours, Horario.MiercolesInicio.Value.Minutes, Horario.MiercolesInicio.Value.Seconds);
                                        Final   = new TimeSpan(Horario.MiercolesFinal.Value.Hours, Horario.MiercolesFinal.Value.Minutes, Horario.MiercolesFinal.Value.Seconds);
                                    }
                                    if (fecha.ToString("dddd", CI) == "jueves")
                                    {
                                        Inicial = new TimeSpan(Horario.JuevesInicio.Value.Hours, Horario.JuevesInicio.Value.Minutes, Horario.JuevesInicio.Value.Seconds);
                                        Final   = new TimeSpan(Horario.JuevesFinal.Value.Hours, Horario.JuevesFinal.Value.Minutes, Horario.JuevesFinal.Value.Seconds);
                                    }
                                    if (fecha.ToString("dddd", CI) == "viernes")
                                    {
                                        Inicial = new TimeSpan(Horario.ViernesInicio.Value.Hours, Horario.ViernesInicio.Value.Minutes, Horario.ViernesInicio.Value.Seconds);
                                        Final   = new TimeSpan(Horario.ViernesFinal.Value.Hours, Horario.ViernesFinal.Value.Minutes, Horario.ViernesFinal.Value.Seconds);
                                    }
                                    if (fecha.ToString("dddd", CI) == "sabado")
                                    {
                                        Inicial = new TimeSpan(Horario.SabadoInicio.Value.Hours, Horario.SabadoInicio.Value.Minutes, Horario.SabadoInicio.Value.Seconds);
                                        Final   = new TimeSpan(Horario.SabadoFinal.Value.Hours, Horario.SabadoFinal.Value.Minutes, Horario.SabadoFinal.Value.Seconds);
                                    }
                                    if (fecha.ToString("dddd", CI) == "domingo")
                                    {
                                        Inicial = new TimeSpan(Horario.DomingoInicio.Value.Hours, Horario.DomingoInicio.Value.Minutes, Horario.DomingoInicio.Value.Seconds);
                                        Final   = new TimeSpan(Horario.DomingoFinal.Value.Hours, Horario.DomingoFinal.Value.Minutes, Horario.DomingoFinal.Value.Seconds);
                                    }
                                    if (H < Inicial || H > Final)
                                    {
                                        ClienteEventos horarioDesfasado = new ClienteEventos();
                                        horarioDesfasado.Codigo        = "00";
                                        horarioDesfasado.Descripcion   = "La alarma se activo/Desactivo fuera de sus horarios de operaciones";
                                        horarioDesfasado.Numero        = "N/A";
                                        horarioDesfasado.ParticionArea = "N/A";
                                        horarioDesfasado.Tipo          = "N/A";
                                        Eventos.Add(horarioDesfasado);
                                    }
                                }
                            }
                            if (ClienteEvento.Tipo == "Sensor")
                            {
                                if (clienteSensores.Where(x => x.NumeroDeSensor == clienteEventos.Numero).Any())
                                {
                                    clienteEventos.Ubicacion = clienteSensores.Where(x => x.NumeroDeSensor == clienteEventos.Numero).First().Ubicacion;
                                }
                                else
                                {
                                    clienteEventos.Ubicacion = "Ubicacion desconocidad";
                                }
                            }
                            else if (ClienteEvento.Tipo == "Usuario")
                            {
                                clienteEventos.Ubicacion = "N/A";
                            }
                            else
                            {
                                clienteEventos.Ubicacion = "N/A";
                            }
                            clienteEventos.ParticionArea = Zona;
                        }
                        if (!ParticionZona)
                        {
                            Eventos.Add(clienteEventos);
                        }
                    }
                    bool           IsOpen = false;
                    FormCollection forms  = Application.OpenForms;
                    foreach (var form in forms)
                    {
                        if (((Form)form).Name == "ClienteAlerta")
                        {
                            if (((ClienteAlerta)form).IdI.Text == incidente.Id.ToString())
                            {
                                IsOpen = true;
                            }
                        }
                    }
                    if (!IsOpen)
                    {
                        ClienteAlerta alerta = new ClienteAlerta(this.IdUsuario, incidente.Id);
                        db.UpdateIncidente(incidente.Id, incidente.IdCliente, incidente.IdLog, incidente.Comentarios, incidente.FechaHoraInicio, incidente.FechaHoraFin, "Pendiente", true, incidente.FechaCreacion, incidente.UsuarioCreacion);
                        alerta.setInfo(cliente, Log.Id);
                        alerta.setButton(this.Button_Badge, panel_Notificaciones);
                        alerta.setEventos(Eventos);
                        alerta.Text = "Alerta - Incidente sin seguimiento";
                        alerta.ShowDialog();
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error:" + ex.Message + " Inner:" + ex.InnerException);
            }
        }
Beispiel #3
0
        private void timer_Tick(object sender, EventArgs e)
        {
            this.timer.Stop();
            CultureInfo CI = new CultureInfo("es-MX");
            //*********************************************************************************
            //*************************** Incidentes Pendientes *******************************
            //*********************************************************************************
            List <Models.Incidentes> Incidentes = new List <Models.Incidentes>();

            Incidentes = db.Incidentes.Where(x => x.Activo == true && x.Estatus != "Completo" && x.Estatus != "Pendiente").ToList();
            foreach (var incidente in Incidentes)
            {
                LogMonitoreo360 Log   = db.LogMonitoreo360.Where(x => x.Id == incidente.IdLog).FirstOrDefault();
                string          f     = Log.Log.Substring(0, 20);
                DateTime        fecha = DateTime.Parse(f);
                f = Log.Log.Substring(23, 20).Replace("-", " ");
                DateTime              fecha2         = DateTime.Parse(f);
                string                NumeroTelefono = Log.Log.Substring(54, 6).Replace("-", "");
                string                NumeroCuenta   = Log.Log.Substring(61, 4);
                string                report         = Log.Log.Substring(66, Log.Log.Length - 66);
                string[]              eventos        = report.Split('-')[1].Split('/');
                Models.Clientes       cliente        = db.Clientes.Where(x => x.IdCliente == incidente.IdCliente).FirstOrDefault();
                bool                  ParticionZona  = false;
                List <ClienteEventos> Eventos        = new List <ClienteEventos>();
                string                Zona           = "1";
                try
                {
                    if (eventos.Count() > 1)
                    {
                        List <GetSensores_Result>    clienteSensores = db.GetSensores(cliente.IdCliente, 2).ToList();
                        GetHorarioOperaciones_Result Horario         = db.GetHorarioOperaciones(cliente.IdCliente).FirstOrDefault();
                        List <CodigoEventos>         CodigosEventos  = db.CodigoEventos.ToList();
                        foreach (var evento in eventos)
                        {
                            ClienteEventos clienteEventos = new ClienteEventos();
                            if (evento.Contains("ri"))
                            {
                                clienteEventos.ParticionArea = evento.Split('i')[1];
                                Zona          = evento.Split('i')[1];
                                ParticionZona = true;
                            }
                            else if (CodigosEventos.Where(x => x.Codigo.Contains(evento.Substring(0, 2))).Any())
                            {
                                ParticionZona = false;
                                CodigoEventos ClienteEvento = CodigosEventos.Where(x => x.Codigo.Contains(evento.Substring(0, 2))).First();
                                clienteEventos.Tipo          = ClienteEvento.Tipo;
                                clienteEventos.Codigo        = ClienteEvento.Codigo;
                                clienteEventos.Descripcion   = ClienteEvento.Descripcion;
                                clienteEventos.Numero        = evento.Substring(2, 4);
                                clienteEventos.ParticionArea = Zona;
                                if (Horario != null)
                                {
                                    if (ClienteEvento.Codigo.Contains("OP") || ClienteEvento.Codigo.Contains("CL") || ClienteEvento.Codigo.Contains("OR") || ClienteEvento.Codigo.Contains("CR"))
                                    {
                                        TimeSpan Inicial = new TimeSpan();
                                        TimeSpan Final   = new TimeSpan();
                                        TimeSpan H       = new TimeSpan(fecha.Hour, fecha.Minute, fecha.Second);
                                        if (fecha.ToString("dddd", CI) == "lunes")
                                        {
                                            Inicial = new TimeSpan(Horario.LunesInicio.Value.Hours, Horario.LunesInicio.Value.Minutes, Horario.LunesInicio.Value.Seconds);
                                            Final   = new TimeSpan(Horario.LunesFinal.Value.Hours, Horario.LunesFinal.Value.Minutes, Horario.LunesFinal.Value.Seconds);
                                        }
                                        if (fecha.ToString("dddd", CI) == "martes")
                                        {
                                            Inicial = new TimeSpan(Horario.MartesInicio.Value.Hours, Horario.MartesInicio.Value.Minutes, Horario.MartesInicio.Value.Seconds);
                                            Final   = new TimeSpan(Horario.MartesFinal.Value.Hours, Horario.MartesFinal.Value.Minutes, Horario.MartesFinal.Value.Seconds);
                                        }
                                        if (fecha.ToString("dddd", CI) == "miercoles")
                                        {
                                            Inicial = new TimeSpan(Horario.MiercolesInicio.Value.Hours, Horario.MiercolesInicio.Value.Minutes, Horario.MiercolesInicio.Value.Seconds);
                                            Final   = new TimeSpan(Horario.MiercolesFinal.Value.Hours, Horario.MiercolesFinal.Value.Minutes, Horario.MiercolesFinal.Value.Seconds);
                                        }
                                        if (fecha.ToString("dddd", CI) == "jueves")
                                        {
                                            Inicial = new TimeSpan(Horario.JuevesInicio.Value.Hours, Horario.JuevesInicio.Value.Minutes, Horario.JuevesInicio.Value.Seconds);
                                            Final   = new TimeSpan(Horario.JuevesFinal.Value.Hours, Horario.JuevesFinal.Value.Minutes, Horario.JuevesFinal.Value.Seconds);
                                        }
                                        if (fecha.ToString("dddd", CI) == "viernes")
                                        {
                                            Inicial = new TimeSpan(Horario.ViernesInicio.Value.Hours, Horario.ViernesInicio.Value.Minutes, Horario.ViernesInicio.Value.Seconds);
                                            Final   = new TimeSpan(Horario.ViernesFinal.Value.Hours, Horario.ViernesFinal.Value.Minutes, Horario.ViernesFinal.Value.Seconds);
                                        }
                                        if (fecha.ToString("dddd", CI) == "sabado")
                                        {
                                            Inicial = new TimeSpan(Horario.SabadoInicio.Value.Hours, Horario.SabadoInicio.Value.Minutes, Horario.SabadoInicio.Value.Seconds);
                                            Final   = new TimeSpan(Horario.SabadoFinal.Value.Hours, Horario.SabadoFinal.Value.Minutes, Horario.SabadoFinal.Value.Seconds);
                                        }
                                        if (fecha.ToString("dddd", CI) == "domingo")
                                        {
                                            Inicial = new TimeSpan(Horario.DomingoInicio.Value.Hours, Horario.DomingoInicio.Value.Minutes, Horario.DomingoInicio.Value.Seconds);
                                            Final   = new TimeSpan(Horario.DomingoFinal.Value.Hours, Horario.DomingoFinal.Value.Minutes, Horario.DomingoFinal.Value.Seconds);
                                        }
                                        if (H < Inicial || H > Final)
                                        {
                                            ClienteEventos horarioDesfasado = new ClienteEventos();
                                            horarioDesfasado.Codigo        = "00";
                                            horarioDesfasado.Descripcion   = "La alarma se activo/Desactivo fuera de sus horarios de operaciones";
                                            horarioDesfasado.Numero        = "N/A";
                                            horarioDesfasado.ParticionArea = "N/A";
                                            horarioDesfasado.Tipo          = "N/A";
                                            Eventos.Add(horarioDesfasado);
                                        }
                                    }
                                }
                                if (ClienteEvento.Tipo == "Sensor")
                                {
                                    if (clienteSensores.Where(x => x.NumeroDeSensor == clienteEventos.Numero).Any())
                                    {
                                        clienteEventos.Ubicacion = clienteSensores.Where(x => x.NumeroDeSensor == clienteEventos.Numero).First().Ubicacion;
                                    }
                                    else
                                    {
                                        clienteEventos.Ubicacion = "Ubicacion desconocidad";
                                    }
                                }
                                else if (ClienteEvento.Tipo == "Usuario")
                                {
                                    clienteEventos.Ubicacion = "N/A";
                                }
                                else
                                {
                                    clienteEventos.Ubicacion = "N/A";
                                }
                                clienteEventos.ParticionArea = Zona;
                            }
                            if (!ParticionZona)
                            {
                                Eventos.Add(clienteEventos);
                            }
                        }
                        bool           IsOpen = false;
                        FormCollection forms  = Application.OpenForms;
                        foreach (var form in forms)
                        {
                            if (((Form)form).Name == "ClienteAlerta")
                            {
                                if (((ClienteAlerta)form).IdI.Text == incidente.Id.ToString())
                                {
                                    IsOpen = true;
                                }
                            }
                        }
                        if (!IsOpen)
                        {
                            ClienteAlerta alerta = new ClienteAlerta(this.Idusuario, incidente.Id);
                            db.UpdateIncidente(incidente.Id, incidente.IdCliente, incidente.IdLog, incidente.Comentarios, incidente.FechaHoraInicio, incidente.FechaHoraFin, "Pendiente", true, incidente.FechaCreacion, incidente.UsuarioCreacion);
                            alerta.setInfo(cliente, Log.Id);
                            alerta.setButton(this.Button_Badge, panel_Notificaciones);
                            alerta.setEventos(Eventos);
                            alerta.Text = "Alerta - Incidente sin seguimiento";
                            //form.MdiParent = this.MdiParent;
                            alerta.ShowDialog();
                        }
                    }
                    /**/
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error:" + ex.Message + " Inner:" + ex.InnerException);
                }
            }
            Console.WriteLine("Termino");

            //*********************************************************************************
            //****************************** Dias sin Incidentes ******************************
            //*********************************************************************************
            try
            {
                List <Models.Clientes> Clients = db.Clientes.Where(x => x.Activo == true && x.NumeroTelefonoAlarma != null && x.NumeroDeCuenta != null).OrderBy(x => x.Nombres).ToList();
                List <LogMonitoreo360> Logs    = db.LogMonitoreo360.ToList();
                foreach (var client in Clients.OrderBy(x => x.Nombres))
                {
                    foreach (var log in Logs)
                    {
                        var findLog = db.Incidentes.Where(x => x.IdLog == log.Id).Any();
                        if (!findLog)
                        {
                            string NumeroTelefono = log.Log.Substring(54, 6).Replace("-", "");
                            string NumeroCuenta   = log.Log.Substring(61, 4);
                            Console.WriteLine(NumeroCuenta);
                            string   f     = log.Log.Substring(0, 20);
                            DateTime fecha = DateTime.Parse(f);
                            f = log.Log.Substring(23, 20).Replace("-", " ");
                            DateTime fecha2 = DateTime.Parse(f);
                            bool     find   = client.NumeroDeCuenta.Contains(NumeroCuenta) && client.NumeroTelefonoAlarma.Contains(NumeroTelefono);
                            Console.WriteLine("Lo encontro " + client.Nombres + "? " + find);
                            if (find != false)
                            {
                                List <ClienteEventos> Eventos = new List <ClienteEventos>();
                                var Days = (DateTime.Now - fecha2).Days;
                                if (Days >= 2)
                                {
                                    ClienteEventos Evento = new ClienteEventos();
                                    Evento.Codigo        = "00";
                                    Evento.Descripcion   = "El cliente lleva mas de " + Days + " dias sin llegar Algun evento";
                                    Evento.Numero        = "N/A";
                                    Evento.ParticionArea = "N/A";
                                    Evento.Ubicacion     = "N/A";
                                    Eventos.Add(Evento);
                                    Guid IdIncidente = Guid.NewGuid();
                                    db.InsertIncidentes(IdIncidente, client.IdCliente, log.Id, "", DateTime.Now, null, "Pendiente", true, DateTime.Now, this.Idusuario);
                                    ClienteAlerta form = new ClienteAlerta(this.Idusuario, IdIncidente);
                                    form.setInfo(client, log.Id);
                                    form.setEventos(Eventos);
                                    form.setButton(this.Button_Badge, this.panel_Notificaciones);
                                    //form.MdiParent = this.MdiParent;
                                    form.ShowDialog();
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error:" + ex.Message + " Inner:" + ex.InnerException);
            }
            this.timer.Start();
        }