/// <summary>
        /// Agrega un acceso a la lista de accesos en memoria.
        /// </summary>
        /// <param name="v_acceso"></param>
        public void addAcceso(Acceso v_acceso)
        {
            Dictionary<String, Acceso>.KeyCollection claves = listaAccesos.Keys;

            string[] clavesStr = new string[claves.Count];
            claves.CopyTo(clavesStr, 0);
            string ultima = clavesStr[claves.Count-1];
            int ultimaInt = int.Parse(ultima);
            string id_acceso = (ultimaInt +1).ToString();
            if(!listaAccesos.ContainsKey(id_acceso))
            {
                listaAccesos.Add(id_acceso,v_acceso);
            }
            SaveAccesos();
        }
        void actualizeAcccess(object sender, byteArrayEventArgs e)
        {
            // Dar de alta el acceso en la lista de accesos
            Dictionary<int,Acceso> listaAccesos = mainApp.DataManager.getListaAccesos();

            string tarjeta = e.textData["TARJETA"];

            Employee emp = mainApp.DataManager.buscarEmpleadoxTarjeta(tarjeta);

            if (emp != null)
            {
                int idEmpleado = emp.Id;

                Acceso nuevoAcceso = new Acceso(idEmpleado, e.textData["HHID"], e.textData["TARJETA"], e.textData["LATITUD"], e.textData["LONGITUD"], e.textData["HORA"], e.byteData, (TiposAcceso)Enum.Parse(typeof(TiposAcceso), e.textData["TIPOACCESO"]));
                if (!mainApp.DataManager.existeAcceso(nuevoAcceso))
                {
                    mainApp.DataManager.addAcceso(nuevoAcceso);
                    actualizeListView = true;
                }
            }
            addConfirmJob(e);
        }
Example #3
0
        /// <summary>
        /// Paso final para agregar un acceso desde un GPS. Ya se reviso el tema geometrico y se tiene el Empleado, su tarjeta, la latitud, longitud, hora, tipode evento y organizacion
        /// Falta revisar que tenga accesslevel y actualizar la tabla de Accesos.
        /// </summary>
        /// <param name="v_IDEmpleadoGPS"></param>
        /// <param name="v_Latitud"></param>
        /// <param name="v_Longitud"></param>
        /// <param name="v_HHID"></param>
        /// <param name="v_Hora"></param>
        /// <param name="v_tipoEvento"></param>
        /// <param name="v_TarjetaEmpleadoGPS"></param>
        /// <param name="v_orgID"></param>
        public void agregarAccesoDesdeGPS(int v_IDEmpleadoGPS,string v_Latitud,string v_Longitud,string v_HHID,string v_Hora,TiposAcceso v_tipoEvento,string v_TarjetaEmpleadoGPS,int v_orgID, int v_LNLPanelID, int v_LNLReaderID)
        {
            // Tengo la tarjeta correspondiente al empleadoGPS, obtengo ahora su lista de accesslevels, para esa organizacion, claro.
            string accessLevels = obtenerListaAccessLevels(v_TarjetaEmpleadoGPS, v_orgID);

            string[] listaAccessLevels = accessLevels.Split(',');

            bool conAccessLevel = false;

            // Loop Principal de verificacion del accessLevel del empleado.
            foreach (string idAccess in listaAccessLevels)
            {
                if (TieneAcceso(int.Parse(idAccess), v_Hora,v_LNLPanelID, v_LNLReaderID, v_orgID))
                {
                    conAccessLevel = true;
                    break;
                }
            }

            TiposAcceso tipoAccesoFinal = TiposAcceso.INVALIDO;

            if (!conAccessLevel)
            {
                if ( v_tipoEvento == TiposAcceso.Entrada)
                {
                    tipoAccesoFinal =  TiposAcceso.EINVALIDO;
                }

                if ( v_tipoEvento == TiposAcceso.Salida)
                {
                    tipoAccesoFinal =  TiposAcceso.SINVALIDO;
                }
            }
            else
            {
                tipoAccesoFinal = v_tipoEvento;
            }

            // Por fin dar de alta en la tabla de Accesos para que lo agarre el PollPanelForEvents y se vea en el Alarm Monitoring.
            Acceso nuevoAcceso = new Acceso(v_IDEmpleadoGPS, v_HHID, v_TarjetaEmpleadoGPS, v_Latitud, v_Longitud, v_Hora, null, tipoAccesoFinal);
            addAcceso(nuevoAcceso);
        }
Example #4
0
        /// <summary>
        /// Agrega un acceso a la lista de accesos en memoria.
        /// </summary>
        /// <param name="v_acceso"></param>
        public void addAcceso(Acceso v_acceso)
        {
            // Agrega el acceso a la lista en memoria

            Dictionary<int, Acceso> listaAccesos = mainApp.DataManager.LoadAccesos();
            try
            {
                List<int> keyList = new List<int>(listaAccesos.Keys);

                int id_acceso;
                if (keyList.Count > 0)
                {
                    id_acceso = keyList[0] + 1;
                }
                else
                {
                    id_acceso = 1;
                }

                // Agrega el acceso a la BD
                SqlConnection cnn = new SqlConnection(conexion);
                SqlCommand cmd = new SqlCommand("AgregarAcceso", cnn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@idHandHeld", v_acceso.HHID);
                cmd.Parameters.AddWithValue("@idEmpleado", v_acceso.idEmpleado);
                cmd.Parameters.AddWithValue("@Latitud", v_acceso.Latitud);
                cmd.Parameters.AddWithValue("@Longitud", v_acceso.Longitud);
                cmd.Parameters.AddWithValue("@Fecha", v_acceso.Hora);
                cmd.Parameters.AddWithValue("@Tarjeta", v_acceso.Tarjeta);
                cmd.Parameters.AddWithValue("@TipoAcceso", v_acceso.tipoAcceso.ToString());

                string imageFileName = "";
                if (v_acceso.imagen != null)
                {
                    if (v_acceso.imagen.Length > 0)
                    {

                        DateTime fechaActual = DateTime.Now;
                        // crea un identificador unico para la imagen a guardar.
                        string idImagen = fechaActual.Year.ToString() + fechaActual.Month.ToString() + fechaActual.Day.ToString() + fechaActual.Hour.ToString() + fechaActual.Minute.ToString() + fechaActual.Second.ToString();
                        imageFileName = v_acceso.HHID + "_" + idImagen + ".jpg";
                        Thread.Sleep(1000);         // Espera un segundo para que el proximo identificador de imagenes sea DIFERENTE

                    }
                }
                if (imageFileName != "")
                {
                    string imagePath = SystemConfiguration.ImagesPath;
                    File.WriteAllBytes(imagePath + @"\" + imageFileName, v_acceso.imagen);
                    cmd.Parameters.AddWithValue("@Imagen", @"~/Imagenes/" + imageFileName);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@Imagen", "");
                }

                try
                {
                    cnn.Open();
                    cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    throw new Exception("No se pudo agregar el acceso,consulte con el administrador. Error: " + ex.Message);
                }
                finally
                {
                    cnn.Close();
                }
            }
            catch (Exception ex)
            {
                loguearString("Excepcion en addAcceso: " + ex.Message, TiposLOG.LENEL);
            }
        }
Example #5
0
        public Dictionary<int, Acceso> LoadAccesos()
        {
            Dictionary<int, Acceso> listaAccesos = new Dictionary<int, Acceso>();
                byte[] imageBytes = null;
                int id;
                string hhid;
                string tarjeta;
                string latitud;
                string longitud;
                string hora;
                string TipoAccesoStr;
                string imagen;
                int idempleado;
                TiposAcceso tipoAcceso = new TiposAcceso();
                List<Acceso> lista = new List<Acceso>();
                SqlConnection cn = new SqlConnection(conexion);
                cn.Open();
                SqlCommand cmd = cn.CreateCommand();
                cmd.CommandText = "select * from Accesos";
                cmd.CommandType = CommandType.Text;

                SqlDataReader lector = cmd.ExecuteReader();

               while (lector.Read())
                {
                    imagen = lector["imagen"].ToString();
                    id = Convert.ToInt16(lector["idAcceso"]);
                    hhid = lector["IdHandHeld"].ToString();
                    tarjeta = lector["Tarjeta"].ToString();
                    latitud = lector["Latitud"].ToString();
                    longitud = lector["Longitud"].ToString();
                    try
                    {
                        hora = lector["Fecha"].ToString();
                    }
                    catch (Exception )
                    {
                        hora = "01-01-20000 01:01:00";
                    }

                    TipoAccesoStr = lector["Tipoacceso"].ToString();
                    tipoAcceso = (TiposAcceso)Enum.Parse(typeof(TiposAcceso), TipoAccesoStr);
                    idempleado = Convert.ToInt32(lector["idEmpleado"].ToString());

                    if (imagen != "")
                    {
                        try
                        {
                            string fileName = Path.GetFileName(imagen);
                            string imagePath = SystemConfiguration.ImagesPath;
                            imageBytes = File.ReadAllBytes(imagePath + @"/" + fileName);
                        }
                        catch (Exception )
                        {
                            imageBytes = null;
                        }
                    }
                    else
                    {
                        imageBytes = null;
                    }

                    Acceso nuevoAcceso = new Acceso(idempleado, hhid, tarjeta, latitud, longitud, hora, imageBytes, tipoAcceso);
                    listaAccesos.Add(id, nuevoAcceso);

                }
                cn.Close();
                return listaAccesos;
        }
Example #6
0
        /// <summary>
        /// Verifica si ya hay un acceso con la misma hora.
        /// </summary>
        /// <param name="v_acceso"></param>
        /// <returns></returns>
        public bool existeAcceso(Acceso v_acceso)
        {
            Dictionary<int,Acceso> lstAccesos = mainApp.DataManager.LoadAccesos();
            foreach (Acceso _acceso in lstAccesos.Values)
            {
                if (_acceso.Hora.Trim() == v_acceso.Hora.Trim())
                {
                    return true;
                }
            }

            return false;
        }
        private void LoadAccesos()
        {
            //byte[] bytes = File.ReadAllBytes(imagename);
            //v_emp.attachImage(bytes);
            if (File.Exists(dataSource + @"\\accesos.xml"))
            {
                XmlDocument xDoc = new XmlDocument();
                xDoc.Load(dataSource + @"\\accesos.xml");

                listaAccesos.Clear();

                foreach (XmlElement elem in xDoc.SelectNodes("/Accesos/Acceso"))
                {
                    string id = elem.Attributes["id"].Value;
                    string HHID = elem.Attributes["HHID"].Value;
                    string tarjeta = elem.Attributes["tarjeta"].Value;
                    string latitud = elem.Attributes["latitud"].Value;
                    string longitud = elem.Attributes["longitud"].Value;
                    string hora = elem.Attributes["hora"].Value;
                    string imageFile = elem.Attributes["imageFile"].Value;

                    TiposAcceso tipoAcceso = (TiposAcceso)Enum.Parse(typeof(TiposAcceso),elem.Attributes["tipoAcceso"].Value);
                    byte[] imageBytes = null;

                    if (imageFile != "")
                    {
                        imageBytes = File.ReadAllBytes(imageFile);
                    }

                    if (!listaAccesos.ContainsKey(id))
                    {
                        Acceso nuevoAcceso = new Acceso(HHID, tarjeta, latitud, longitud, hora, imageBytes, tipoAcceso);

                        listaAccesos.Add(id, nuevoAcceso);
                    }
                }
            }
        }