Exemplo n.º 1
0
        public List <MovimientosViewModel> MovimientosRecientes(DateTime fecha)
        {
            ControlUsuario cu = new ControlUsuario();

            int[] sucursales = cu.GetSucursalesUsuario(ControlAcceso.GetUsuarioEnSession());
            using (var context = new RHEntities())
            {
                return((from k in context.Kardex
                        join emp in context.Empleado on k.IdEmpleado equals emp.IdEmpleado
                        join con in context.Empleado_Contrato on emp.IdEmpleado equals con.IdEmpleado
                        join s in context.Sucursal on emp.IdSucursal equals s.IdSucursal
                        join c in context.Cliente on s.IdCliente equals c.IdCliente
                        join e in context.Empresa on con.IdEmpresaFiscal equals e.IdEmpresa
                        where k.Fecha >= fecha && k.Tipo != 5 && k.Tipo != 6 && k.Tipo != 4 && sucursales.Contains(s.IdSucursal)
                        select new MovimientosViewModel
                {
                    IdEmpleado = emp.IdEmpleado,
                    Nombres = emp.Nombres,
                    Paterno = emp.APaterno,
                    Materno = emp.AMaterno,
                    Fecha = k.Fecha,
                    Cliente = c.Nombre,
                    Empresa = e.RazonSocial,
                    IdTipoMovimiento = k.Tipo,
                }
                        ).ToList());
            }
        }
Exemplo n.º 2
0
        public ActionResult LogInAJAX(string user, string password)
        {
            ControlUsuario cu      = new ControlUsuario();
            int            acceso  = 0;
            var            usuario = cu.GetUsuarioByCuenta(user, password);

            if (usuario != null)
            {
                var accesoApp = ControlAcceso.AccesoAplicacion(Aplicacion.Rh, usuario);
                if (accesoApp)
                {
                    SessionHelpers.IniciarSession(usuario.Usuario, usuario.IdUsuario.ToString());
                    Session["usuario"] = usuario;
                    acceso             = 1;
                }
                else
                {
                    acceso = 2;
                }
            }
            else
            {
                acceso = 3;
            }
            return(Json(acceso, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 3
0
        protected void txtPlantilla_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Limpiamos la lista de plantillas
            Repeticion.DataSource = new List <Plantilla>();
            Repeticion.DataBind();


            if (ValidarObjeto(txtPlantilla.SelectedValue))
            {
                try
                {
                    // Obtenemos el control seleccionado
                    ControlAcceso ctrl = controlAccesoDao.GetById(Int32.Parse(txtPlantilla.SelectedValue));
                    if (ctrl != null)
                    {
                        // Obtenemos la lista de plantillas para el control seleccionado
                        List <DbDominio.Plantilla> listaPlantilla = plantillaDao.GetListado(null, ctrl);
                        Repeticion.DataSource = listaPlantilla;
                        Repeticion.DataBind();
                    }
                }
                catch (Exception ex)
                {
                    log.Error(String.Format("Error en el Proceso Obtener Plantillas para la Plaza [{0}], y el Control [{1}]. Mensaje: [{2}]", txtPlaza.SelectedValue, txtPlantilla.SelectedValue, ex.Message));
                    ManejarExcepcion(ex);
                }
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Obtiene las sucursales a las que tiene acceso el usuario
        /// </summary>
        /// <returns></returns>
        public List <SucursalDatos> GetSucursalesByUser()
        {
            var user = ControlAcceso.GetUsuarioEnSession();

            if (user == null)
            {
                return(null);
            }

            //Validamos el campo sucursal no este vacio
            if (user.Sucursales.Trim() == "")
            {
                return(null);
            }

            var list = new List <SucursalDatos>();

            list = Sucursales.GetSucursales();

            if (user.IdPerfil == 1 || user.Sucursales.Trim() == "*")
            {
                return(list);
            }

            var sucursales = user.Sucursales.Split(',');

            list = list.Where(x => sucursales.Contains(x.IdSucursal.ToString())).ToList();

            return(list);
        }
Exemplo n.º 5
0
        public ActionResult Index()
        {
            var user  = ControlAcceso.GetUsuarioEnSession();
            var model = emp.GetEmpleadosFiscales(user);

            return(View(model));
        }
Exemplo n.º 6
0
        public ActionResult LogInAjax(LogInViewModel model)
        {
            int acceso = 3;

            ControlUsuario cu = new ControlUsuario();

            var usuario = cu.GetUsuarioByCuenta(model.User, model.Password);

            if (usuario != null)
            {
                var accesoApp = ControlAcceso.AccesoAplicacion(Aplicacion.SeguroSocial, usuario);
                if (accesoApp)
                {
                    SessionHelpers.IniciarSession(usuario.Usuario, usuario.IdUsuario.ToString());
                    Session["usuario"] = usuario;
                    acceso             = 1;
                }
                else
                {
                    acceso = 2;
                }
            }
            else
            {
                acceso = 3;
            }
            return(Json(acceso, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 7
0
        public JsonResult LogIn(LogInViewModel model)
        {
            ControlUsuario cu   = new ControlUsuario();
            var            user = cu.GetUsuarioByCuenta(model.User, model.Password);

            string[] array = new string[3];
            if (user != null)
            {
                var accesoApp = ControlAcceso.AccesoAplicacion(Aplicacion.Notificaciones, user);
                if (accesoApp)
                {
                    SessionHelpers.IniciarSession(user.Usuario, user.IdUsuario.ToString());
                    Session["usuario"] = user;
                    array[0]           = "1";
                    array[1]           = user.Nombres;
                    array[2]           = user.ApPaterno;
                }
                else
                {
                    array[0] = "2"; //no tiene acceso a la app
                }
            }
            else
            {
                array[0] = "3"; //las credenciales no están bien
            }
            return(Json(array, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 8
0
        public NotificacionDatos GetNotificationDetails(int id)
        {
            var user = ControlAcceso.GetUsuarioEnSession();

            return((from n in ctx.Notificaciones
                    join t in ctx.C_NotificacionTipo on n.IdTipo equals t.IdTipo
                    join su in ctx.SYA_Usuarios on n.UsuarioReg equals su.IdUsuario
                    join cli in ctx.Cliente on n.IdCliente equals cli.IdCliente
                    let f = ctx.Notificaciones_Favoritas.Where(x => x.IdNotificacion == n.IdNotificacion).FirstOrDefault()
                            let ns = ctx.Notificacion_Status.Where(x => x.IdNotificacion == n.IdNotificacion && x.IdUsuario == user.IdUsuario).OrderByDescending(x => x.Id).FirstOrDefault()
                                     where n.IdNotificacion == id
                                     select new NotificacionDatos
            {
                IdNotificacion = n.IdNotificacion,
                Usuario = su.Nombres + " " + su.ApPaterno,
                Titulo = n.Titulo,
                Contenido = n.Cuerpo,
                Fecha = n.Fecha,
                Cliente = cli.Nombre,
                TipoDescripcion = t.Descripcion,
                Favorita = f != null ? true : false,
                Status = ns == null ? 1 : ns.Status
            }
                    ).FirstOrDefault());
        }
Exemplo n.º 9
0
        private bool IsValid()
        {
            var user = ControlAcceso.GetUsuarioEnSession();

            //Si el perfil del usuario es SU se le concede acceso inmediato
            if (user.IdPerfil == 1)
            {
                return(true);
            }

            return(ControlAcceso.AccesoAccionModulo(Modulo, Accion, user.IdUsuario));
        }
Exemplo n.º 10
0
        public ActionResult Index(int id = 0)
        {
            //obtiene los datos principales de la sucursal y los asigna a una variable de sesión


            if (id > 0)
            {
                var suc = new SucursalDatos();

                if (!ControlAcceso.AccesoSucursal(id))
                {
                    return(RedirectToAction("AccesoDenegadoSuc", "Home"));
                }

                //Si ya existe datos guardado en sesion
                //validamos si el idSucursal es distinto al de la session actual.
                if (Session["Sucursal"] != null)
                {
                    suc = Session["Sucursal"] as SucursalDatos;

                    //Si la variable idSucursal es distinto al IdSucursal de la session
                    //entonces se selecciono una nueva sucursal
                    if (suc != null && suc.IdSucursal != id)
                    {
                        suc = ctx.ObtenerSucursalDatosPorId(id);
                    }
                }
                //Si la session actual es null
                else if (Session["Sucursal"] == null)
                {
                    suc = ctx.ObtenerSucursalDatosPorId(id);
                }


                //Si no se encontró la sucursal
                if (suc == null)
                {
                    return(RedirectToAction("Index", "Home"));
                }

                //Agregamos los nuevos datos a la session
                //y guardamos en la lista de mas recientes.
                if (suc.GuardadoEnReciente == false)
                {
                    suc.GuardadoEnReciente = ctx.InsertarSucursalReciente(id);
                    Session["Sucursal"]    = suc;
                }

                return(View(suc));
            }

            return(RedirectToAction("Index", "Home"));
        }
Exemplo n.º 11
0
        public bool DeleteFavorite(int id)
        {
            var user = ControlAcceso.GetUsuarioEnSession();
            var fav  = ctx.Notificaciones_Favoritas.Where(x => x.IdNotificacion == id && x.IdUsuario == user.IdUsuario).FirstOrDefault();

            if (fav != null)
            {
                ctx.Notificaciones_Favoritas.Remove(fav);
                var status = ctx.SaveChanges();
                return(status > 0 ? true : false);
            }
            return(false);
        }
        public EmpleadoControlAcceso GetByControlAcceso(ControlAcceso control, Empleado empleado)
        {
            if (control == null || empleado == null)
            {
                return(null);
            }

            List <ICriterion> lista = new List <ICriterion>();

            lista.Add(Restrictions.Eq("ControlAcceso", control));
            lista.Add(Restrictions.Eq("Empleado", empleado));
            return(GetUniqueByCriteria(lista.ToArray()));
        }
Exemplo n.º 13
0
        public ActionResult SucursalesPaginador(int pagina)
        {
            var usuario = ControlAcceso.GetUsuarioEnSession();

            var total = 0;

            var model = bll.ObtenerSucursalPaginado(10, pagina, out total, usuario.Sucursales);

            ViewBag.paginas      = total;
            ViewBag.PaginaActiva = pagina;

            return(PartialView("_HomeIndexSucursales", model));
        }
Exemplo n.º 14
0
        public Plantilla GetByControlAccesoEnrollNumberFingerIndex(ControlAcceso control, String EnrollNumber, Int32 fingerindex)
        {
            if (string.IsNullOrEmpty(EnrollNumber) || control == null)
            {
                return(null);
            }

            List <ICriterion> lista = new List <ICriterion>();

            lista.Add(Restrictions.Eq("ControlAcceso", control));
            lista.Add(Restrictions.Eq("Enrollnumber", EnrollNumber));
            lista.Add(Restrictions.Eq("Fingerindex", fingerindex));
            return(GetUniqueByCriteria(lista.ToArray()));
        }
Exemplo n.º 15
0
        public JsonResult GetLatest(DateTime date)
        {
            var userSession = Session["usuario"] as SYA_Usuarios;
            var user        = ControlAcceso.GetUsuarioEnSession();

            Notificaciones bd   = new Notificaciones();
            var            list = bd.getNuevas(user).Where(x => x.Fecha >= date);

            foreach (var item in list)
            {
                item.image = ControlUsuario.GetProfilePictureOfUser(item.IdUsuario);
            }
            return(Json(list, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 16
0
        public List <SucursalDatos> SearchSucursales(string keyword)
        {
            var user = ControlAcceso.GetUsuarioEnSession();

            if (user != null)
            {
                using (var context = new RHEntities())
                {
                    if (user.IdPerfil == 1 || user.Sucursales == "*")
                    {
                        return((from s in context.Sucursal
                                join e in context.Cliente on s.IdCliente equals e.IdCliente
                                orderby s.IdSucursal
                                where
                                s.Ciudad.Contains(keyword) || e.Nombre.Contains(keyword) ||
                                s.IdSucursal.ToString().Equals(keyword)
                                select new SucursalDatos
                        {
                            IdSucursal = s.IdSucursal,
                            Nombre = e.Nombre,
                            Ciudad = s.Ciudad
                        }
                                ).ToList());
                    }
                    else
                    {
                        var sucursales = user.Sucursales.Trim(',');
                        return((from s in context.Sucursal
                                join e in context.Cliente on s.IdCliente equals e.IdCliente
                                orderby s.IdSucursal
                                where
                                sucursales.Contains(s.IdSucursal.ToString()) &&
                                (s.Ciudad.Contains(keyword) || e.Nombre.Contains(keyword) ||
                                 e.IdCliente.ToString().Equals(keyword))
                                select new SucursalDatos
                        {
                            IdSucursal = s.IdSucursal,
                            Nombre = e.Nombre,
                            Ciudad = s.Ciudad
                        }
                                ).ToList());
                    }
                }
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 17
0
        public Incidencia GetByEmpleadoControlFechaInOutMode(Empleado empleado, ControlAcceso control, DateTime fecha, int inOutMode)
        {
            if (empleado == null || fecha == null || control == null)
            {
                return(null);
            }
            List <ICriterion> lista = new List <ICriterion>();

            lista.Add(Restrictions.Eq("Empleado", empleado));
            lista.Add(Restrictions.Eq("ControlAcceso", control));
            lista.Add(Restrictions.Eq("FechaHoraIncidencia", fecha));
            lista.Add(Restrictions.Eq("InOutMode", inOutMode));


            return(GetUniqueByCriteria(lista.ToArray()));
        }
Exemplo n.º 18
0
        //Obtiene el número de sucursales a las que tiene acceso el usuario para el paginador
        //Según el númeroq que tenga lo divide entre 10 para el paginador
        public int ObtenerNumeroSucursalesPaginador()
        {
            var    usuario         = ControlAcceso.GetUsuarioEnSession();
            double totalSucursales = 0;

            if (usuario.Sucursales.Trim() == "*")
            {
                totalSucursales = ObtenerSucursalDatos().Count();
            }
            else
            {
                totalSucursales = (usuario.Sucursales).Split(',').Count();
            }
            double paginas = totalSucursales / 10;

            paginas = paginas > 0 ? Math.Ceiling(paginas) : 0;
            return(Convert.ToInt32(paginas));
        }
Exemplo n.º 19
0
        protected void CargarDatos()
        {
            // Cargar los datos de un solo control
            if (ValidarObjeto(txtControlAcceso.SelectedValue))
            {
                try
                {
                    ControlAcceso ctrl = controlAccesoDao.GetById(Int32.Parse(txtControlAcceso.SelectedValue));

                    if (ctrl != null)
                    {
                        Repeticion.DataSource = plantillaDao.GetListado(null, ctrl);
                        Repeticion.DataBind();
                    }
                }
                catch (Exception ex)
                {
                    log.Error(String.Format("Error en el Proceso Obtener Lista de Plantillas Para el Control de Acceso [{0}]. Mensaje: [{1}]", txtControlAcceso.SelectedValue, ex.Message));
                    ManejarExcepcion(ex);
                }
            }
            else
            {
                // Cargar los datos de varios controles
                if (ValidarObjeto(txtPlaza.SelectedValue))
                {
                    try
                    {
                        List <ControlAcceso> controles = controlAccesoDao.GetListado(true, plazaDao.GetById(Int32.Parse(txtPlaza.SelectedValue)), DbDao.ControlAccesoDao.Ordenamiento.Nombre);

                        if (controles != null && controles.Count > 0)
                        {
                            Repeticion.DataSource = plantillaDao.GetListado(controles, null);
                            Repeticion.DataBind();
                        }
                    }
                    catch (Exception ex)
                    {
                        log.Error(String.Format("Error en el Proceso Obtener Lista de Plantillas Para el Control de Acceso [{0}]. Mensaje: [{1}]", txtControlAcceso.SelectedValue, ex.Message));
                        ManejarExcepcion(ex);
                    }
                }
            }
        }
Exemplo n.º 20
0
        public bool IsValid()
        {
            var user = ControlAcceso.GetUsuarioEnSession();

            //Si el perfil del usuario es SU se le concede acceso inmediato
            if (user.IdPerfil == 0)
            {
                return(true);
            }

            var reg = HttpContext.Current.Session["Sucursal"] as Sucursal;

            if (reg == null)
            {
                return(false);
            }

            return(ControlAcceso.AccesoSucursal(reg.IdSucursal));
        }
Exemplo n.º 21
0
        public bool AddFavorite(int id)
        {
            var user = ControlAcceso.GetUsuarioEnSession();
            //comprueba que no exista ya una notificación favorita
            var old = ctx.Notificaciones_Favoritas.Where(x => x.IdNotificacion == id && x.IdUsuario == user.IdUsuario).FirstOrDefault();

            if (old != null)
            {
                return(false);
            }
            Notificaciones_Favoritas fav = new Notificaciones_Favoritas();

            fav.IdNotificacion = id;
            fav.IdUsuario      = SessionHelpers.GetIdUsuario();
            ctx.Notificaciones_Favoritas.Add(fav);
            var status = ctx.SaveChanges();

            return(status > 0 ? true : false);
        }
Exemplo n.º 22
0
        public List <Plantilla> GetListado(List <ControlAcceso> controles, ControlAcceso ctrl)
        {
            if (controles == null && ctrl == null)
            {
                return(new List <Plantilla>());
            }

            List <ICriterion> lista = new List <ICriterion>();

            if (controles != null && controles.Count > 0)
            {
                lista.Add(Restrictions.In("ControlAcceso", controles));
            }

            if (ctrl != null)
            {
                lista.Add(Restrictions.Eq("ControlAcceso", ctrl));
            }
            return(GetByCriteria(lista.ToArray()));
        }
Exemplo n.º 23
0
        public JsonResult AutenticarNombreUsuario(string username)
        {
            LogIn          credentials = new LogIn();
            ControlUsuario cu          = new ControlUsuario();

            try
            {
                var user = cu.UserNameExists(username);
                if (user != null)
                {
                    var acceso = ControlAcceso.AccesoAplicacion(Aplicacion.Nominas, user);

                    if (acceso)
                    {
                        credentials.Acceso = true;
                        credentials.foto   = cu.GetProfilePicture(user.IdUsuario);

                        credentials.nombre = $"{user.Nombres} {user.ApPaterno}";
                    }
                    else
                    {
                        credentials.Acceso = false;
                        credentials.Error  = 1;
                    }
                }
                else
                {
                    credentials.Acceso = false;
                    credentials.Error  = 2;
                }
            }
            catch (InvalidOperationException) //usado para capturar la excepcion cuando no se establece la conecion al servidor
            {
                credentials.Acceso = false;
                credentials.Error  = 3;
            }


            return(Json(credentials, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 24
0
        public bool IsValid()
        {
            //Obtenemos lo datos del usuario que esta en session
            // para acceder a su lista de aplicaciones configurada
            var us = ControlAcceso.GetUsuarioEnSession();

            if (us == null)
            {
                return(false);
            }

            //Si el usuario es SU se le concede acceso inmediato
            if (us.IdPerfil == 1)
            {
                return(true);
            }

            //validamos que tenga acceso a la aplicacion actual y pasamos el tipo de aplicacion
            var acceso = ControlAcceso.AccesoAplicacion(App, us);

            return(acceso);
        }
Exemplo n.º 25
0
        /// <summary>
        /// Retorna las sucursales que estan en la cadena ids = "10,11,12,13".
        /// Puede ser usado para obtener las sucursales que tiene asignado los usuarios.
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        public List <SucursalDatos> ObtenerSucursalByIds()
        {
            List <SucursalDatos> lista;

            var user = ControlAcceso.GetUsuarioEnSession();

            if (user.IdPerfil == 1)
            {
                lista = ObtenerSucursalDatos();
            }
            else if (user.Sucursales.Trim() == "*")
            {
                lista = ObtenerSucursalDatos();
            }
            else
            {
                var array = user.Sucursales.Split(',');

                using (var context = new RHEntities())
                {
                    var datos = (from s in context.Sucursal
                                 join e in context.Cliente on s.IdCliente equals e.IdCliente
                                 where array.Contains(s.IdSucursal.ToString())
                                 orderby s.IdSucursal
                                 select new SucursalDatos {
                        IdSucursal = s.IdSucursal, Nombre = e.Nombre, Ciudad = s.Ciudad
                    });

                    lista = !datos.Any() ? null : datos.ToList();
                }
            }

            lista = lista?.OrderBy(x => x.Nombre).ToList();

            return(lista);
        }
Exemplo n.º 26
0
        public PartialViewResult GetListaNotificaciones(int[] filtros, int bandeja = 1, int numPage = 0, string keyword = "")
        {
            Notificaciones           ctx   = new Notificaciones();
            List <NotificacionDatos> model = null;
            var records     = numPage * 20;
            var userSession = Session["usuario"] as SYA_Usuarios;

            var user = ControlAcceso.GetUsuarioEnSession();

            switch (bandeja)
            {
            case 1:     //Entrada
                model = ctx.GetBandejaEntrada(user);
                break;

            case 2:     //Favoritas
                model = ctx.GetFavoritas(user);
                break;

            case 3:     //Nuevas
                model = ctx.getNuevas(user);
                break;

            case 4:     //Archivadas
                model = ctx.GetNotificationsArchivadas(user);
                break;
            }

            double paginas     = 0;
            int    totalRecors = 0;
            int    firstRecord = 0;
            int    lastRecord  = 0;

            if (model != null)
            {
                if (keyword != "")
                {
                    keyword = keyword.ToUpper();
                    model   = model.Where(x => x.Titulo.ToUpper().Contains(keyword) || x.Usuario.ToUpper().Contains(keyword) || x.Cliente.ToUpper().Contains(keyword)).ToList();
                }

                if (filtros != null)
                {
                    model = model.Where(x => filtros.Contains(x.Tipo)).ToList();
                }

                paginas     = (double)model.Count / (double)20;
                totalRecors = model.Count;

                model = model.OrderByDescending(x => x.Fecha).ToList();
                model = model.Skip(records).Take(20).ToList();

                firstRecord = model.Count == 0 ? 0 : records + 1;
                lastRecord  = records + model.Count;
            }


            ViewBag.NumPaginas = Math.Ceiling(paginas);

            ViewBag.PaginaActiva = numPage;
            ViewBag.TotalRecords = totalRecors;

            ViewBag.FirstRecord = firstRecord;
            ViewBag.LastRecord  = lastRecord;

            return(PartialView(model));
        }
Exemplo n.º 27
0
        //IDSE

        public static string IdseGenerarLayout(int idUsuario, int tipoMovimiento, int empresa, DateTime FechaI, DateTime FechaF, string path, string pathDescarga)
        {
            List <Empresa>           listaEmpresas  = new List <Empresa>();
            List <Cliente>           listaClientes  = new List <Cliente>();
            List <Empleado>          listaEmpleados = new List <Empleado>();
            List <Empleado_Contrato> listaContratos = new List <Empleado_Contrato>();
            List <Kardex>            listaKardex    = new List <Kardex>();
            var            nombreArchivo            = "REINGRESO.txt";
            Empresa        itemEmpresa;
            ControlUsuario cu         = new ControlUsuario();
            var            sucursales = cu.GetSucursalesUsuario(ControlAcceso.GetUsuarioEnSession());

            //var FechaI = new DateTime(fecI.Year, fecI.Month, fecI.Day, 05, 00, 0);
            //var FechaF = new DateTime(fecF.Year, fecF.Month, fecF.Day, 23, 50, 0);

            using (var context = new RHEntities())
            {
                itemEmpresa = context.Empresa.FirstOrDefault(x => x.IdEmpresa == empresa);

                //ALTA-REINGRESO
                switch (tipoMovimiento)
                {
                case 1:
                    nombreArchivo = "REINGRESO " + itemEmpresa.RazonSocial.Substring(0, 5) + ".txt";
                    //Buscamos los contratos con fecha de Alta imss  en el rango de fecha
                    listaContratos = (from c in context.Empleado_Contrato
                                      where c.FechaIMSS >= FechaI && c.FechaIMSS <= FechaF
                                      // && c.Status == true && c.BajaIMSS == null //querian que laas altas o bajas aparezcan en ambos reportes
                                      // && c.IdEmpresaFiscal != null
                                      && c.IdEmpresaFiscal == empresa
                                      select c).ToList();
                    break;

                case 2:
                    nombreArchivo = " BAJA " + itemEmpresa.RazonSocial.Substring(0, 5) + ".txt";
                    //Buscamos los contratos con fecha de Alta imss  en el rango de fecha
                    listaContratos = (from c in context.Empleado_Contrato
                                      where c.BajaIMSS >= FechaI && c.BajaIMSS <= FechaF &&
                                      c.Status == false && c.BajaIMSS != null
                                      // && c.IdEmpresaFiscal != null
                                      && c.IdEmpresaFiscal == empresa
                                      select c).ToList();
                    break;

                case 3:    //Cambio Salsario
                    nombreArchivo = "MODIFICACION " + itemEmpresa.RazonSocial.Substring(0, 5) + ".txt";

                    //Buscamos en Kardex los cambios de salario
                    listaKardex = (from k in context.Kardex
                                   where k.Fecha >= FechaI && k.Fecha <= FechaF &&
                                   k.Tipo == (int)TipoKardex.SDI
                                   select k).ToList();

                    //Obtener los idEMpleados
                    var arrayIdEmp = listaKardex.Select(x => x.IdEmpleado).ToList();

                    //Buscamos los cumple imss
                    //var listaCumpleImss = (from ci in context.CumpleIMSS
                    //                      where ci.FechaIMSS >= FechaI && ci.FechaIMSS <= FechaF
                    //                      select ci).ToList();


                    //Buscamos los contratos activos de los empleados
                    listaContratos = (from c in context.Empleado_Contrato
                                      where arrayIdEmp.Contains(c.IdEmpleado) &&
                                      c.Status == true
                                      select c).ToList();


                    break;
                }

                //Obtenemos el array de Id empleados
                listaContratos = listaContratos.Where(x => sucursales.Contains(x.IdSucursal)).ToList();
                var arrayIdEmpleados = listaContratos.Select(x => x.IdEmpleado).ToArray();

                listaEmpleados = (from e in context.Empleado
                                  where arrayIdEmpleados.Contains(e.IdEmpleado)
                                  select e).ToList();

                //listaEmpresas = context.Empresa.ToList();
            }

            string[] lineasArchivo = new string[listaContratos.Count];
            int      linea         = 0;

            foreach (var itemContrato in listaContratos)
            {
                //var itemEmpresa = listaEmpresas.FirstOrDefault(x => x.IdEmpresa == itemContrato.IdEmpresaFiscal.Value);
                var itemEmpleado = listaEmpleados.FirstOrDefault(x => x.IdEmpleado == itemContrato.IdEmpleado);

                string strReg = "";
                switch (tipoMovimiento)
                {
                case 1:
                    strReg = IdseRegistroAltaReingreso(itemEmpresa, itemEmpleado, itemContrato);
                    break;

                case 2:
                    strReg = IdseRegistroBaja(itemEmpresa, itemEmpleado, itemContrato);
                    break;

                case 3:
                    var itemKardex = listaKardex.FirstOrDefault(x => x.IdEmpleado == itemContrato.IdEmpleado);

                    strReg = IdseRegistroCambioSalario(itemEmpresa, itemEmpleado, itemContrato, itemKardex);
                    break;
                }

                lineasArchivo[linea] = strReg;
                linea++;
            }



            //Creamos el folder para guardar el archivo
            var pathUsuario = Utils.ValidarFolderUsuario(idUsuario, path);
            var archivoIdse = pathUsuario + nombreArchivo;

            File.WriteAllLines(archivoIdse, lineasArchivo);

            return(pathDescarga + "\\" + idUsuario + "\\" + nombreArchivo);
        }
Exemplo n.º 28
0
        protected void BtnDescargar_Click(object sender, EventArgs e)
        {
            log.Info(String.Format("El usuario [{0}] presiono el boton para descargar la plantilla del Control de Acceso con ID: [{1}]", UsuarioActual.Nombre, txtControlAcceso.SelectedValue));

            // Validar si se selecciono un control de acceso
            if (!ValidarObjeto(txtControlAcceso.SelectedValue))
            {
                MostrarAdvertencia(Constantes.MENSAJE_CAMPO_REQUERIDO_TITULO, "Por favor seleccione un control del listado");
                return;
            }

            ControlAcceso control = null;

            try
            {
                control = controlAccesoDao.GetById(Int32.Parse(txtControlAcceso.SelectedValue));
            }
            catch (Exception ex)
            {
                log.Error(String.Format("Error en el Proceso de Conexion con el control. Mensaje: [{0}]", ex.Message));
                ManejarExcepcion(ex);
            }

            if (control == null)
            {
                MostrarAdvertencia("Control de Acceso No Encontrado", String.Format("No fue Posible encontrar el Control de Acceso con identificador [0]", txtControlAcceso.SelectedValue));
                return;
            }


            // Variables de cajon
            int    iMachineNumber  = 1;
            string sdwEnrollNumber = Constantes.TEXTO_BLANCO;
            string sName           = Constantes.TEXTO_BLANCO;
            string sPassword       = Constantes.TEXTO_BLANCO;
            int    iPrivilege      = 0;
            bool   bEnabled        = false;
            int    idwErrorCode    = 0;

            int    idwFingerIndex;
            string sTmpData   = Constantes.TEXTO_BLANCO;
            int    iTmpLength = 0;
            int    iFlag      = 0;


            try
            {
                log.Info(String.Format("Se Intentará conectar con el control de acceso con ID: [{0}]. El control tiene la direccion ip: [{1}] y el puerto: [{2}]", txtControlAcceso.SelectedValue, control.DireccionIp, control.Puerto));

                CZKEMClass _control = new CZKEMClass();
                if (_control.Connect_Net(control.DireccionIp, Int32.Parse(control.Puerto.Value.ToString())))
                {
                    log.Info(String.Format("Se logro correctamente la conexion con el control con direccion ip: [{0}] y el puerto: [{1}]", control.DireccionIp, control.Puerto));

                    _control.EnableDevice(iMachineNumber, false);
                    _control.ReadAllUserID(iMachineNumber);   //read all the user information to the memory
                    _control.ReadAllTemplate(iMachineNumber); //read all the users' fingerprint templates to the memory


                    while (_control.SSR_GetAllUserInfo(iMachineNumber, out sdwEnrollNumber, out sName, out sPassword, out iPrivilege, out bEnabled))//get all the users' information from the memory
                    {
                        log.Info(String.Format("Se obtienen los datos iMachineNumber: [{0}], sdwEnrollNumber: [{1}], sName: [{2}], sPassword: [{3}], iPrivilege: [{4}], bEnabled: [{5}]", iMachineNumber, sdwEnrollNumber, sName, sPassword, iPrivilege, bEnabled));

                        for (idwFingerIndex = 0; idwFingerIndex < 10; idwFingerIndex++)
                        {
                            if (_control.GetUserTmpExStr(iMachineNumber, sdwEnrollNumber, idwFingerIndex, out iFlag, out sTmpData, out iTmpLength))//get the corresponding templates string and length from the memory
                            {
                                log.Info(String.Format("Se obtienen los datos idwFingerIndex: [{0}], iFlag: [{1}], sTmpData: [{2}], iTmpLength: [{3}]", idwFingerIndex, iFlag, sTmpData, iTmpLength));


                                try
                                {
                                    DbDominio.Plantilla planti = plantillaDao.GetByControlAccesoEnrollNumberFingerIndex(control, sdwEnrollNumber, idwFingerIndex);

                                    if (planti == null)
                                    {
                                        planti = new DbDominio.Plantilla();
                                        planti.ControlAcceso      = control;
                                        planti.Usuario_creado_por = UsuarioActual;
                                        log.Info("Se creará una plantilla nueva a partir de estos datos");
                                    }
                                    else
                                    {
                                        log.Info("Esta es una plantilla nueva que se insertara");
                                    }

                                    planti.FechaModificacion      = DateTime.Now;
                                    planti.Usuario_modificado_por = UsuarioActual;
                                    planti.Enabled           = bEnabled;
                                    planti.Enrollnumber      = sdwEnrollNumber;
                                    planti.Fingerindex       = idwFingerIndex;
                                    planti.Flag              = iFlag;
                                    planti.IpControlTemplate = control.DireccionIp;
                                    planti.Nombre            = sName;
                                    planti.Password          = sPassword;
                                    planti.Privilege         = iPrivilege;
                                    planti.Status            = true;
                                    planti.Tmpdata           = sTmpData;
                                    plantillaDao.SaveOrUpdate(planti);

                                    try
                                    {
                                        Empleado empleado = empleadoDao.GetByNumeroEmpleado(Int32.Parse(sdwEnrollNumber));
                                        if (empleado != null && control != null)
                                        {
                                            EmpleadoControlAcceso eca = empleadoControlAccesoDao.GetByControlAcceso(control, empleado);
                                            if (eca == null)
                                            {
                                                eca = new EmpleadoControlAcceso();
                                            }
                                            eca.CveEmpleado      = empleado.CveEmpleado;
                                            eca.CveControlAcceso = control.CveControlAcceso;
                                            eca.ControlAcceso    = control;
                                            eca.Empleado         = empleado;

                                            empleadoControlAccesoDao.SaveOrUpdate(eca);
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        log.Error(String.Format("Error en el Proceso Guardar Empleado Control de Acceso en la base de Datos. Mensaje: [{0}]", ex.Message));
                                        log.Error(ex);
                                    }
                                }
                                catch (Exception ex)
                                {
                                    log.Error(String.Format("Error en el Proceso Guardar Plantilla en la base de Datos. Mensaje: [{0}]", ex.Message));
                                    log.Error(ex);
                                }
                            }
                        }
                    }

                    _control.Disconnect();
                    MostrarExito("Proceso Completo", "Se completo el proceso exitosamente");
                }
                else
                {
                    _control.GetLastError(ref idwErrorCode);
                    log.Error(String.Format("Error en el Proceso de Conexion al control con ID [{0}], Direccion IP [{1}] y Puerto [{2}]. Codigo de Error [{3}]", control.IdControl, control.DireccionIp, control.Puerto, idwErrorCode));
                    MostrarExcepcion("Conexion Invalida", String.Format("Error en el Proceso de Conexion con el Control con Direccion IP: {0} y Puerto {1}", control.DireccionIp, control.Puerto));
                }
            }

            catch (Exception ex)
            {
                log.Error(String.Format("Error en el Proceso de Conexion con el control. Mensaje: [{0}]", ex.Message));
                ManejarExcepcion(ex);
            }
        }
Exemplo n.º 29
0
        //SUA

        public static string SuaGenerarLayout(int idUsuario, int tipoMovimiento, int empresa, DateTime FechaI, DateTime FechaF, string path, string pathDescarga)
        {
            List <Empresa>           listaEmpresas  = new List <Empresa>();
            List <Cliente>           listaClientes  = new List <Cliente>();
            List <Empleado>          listaEmpleados = new List <Empleado>();
            List <Empleado_Contrato> listaContratos = new List <Empleado_Contrato>();
            List <Kardex>            listaKardex    = new List <Kardex>();
            var            nombreArchivo            = "Aseg.txt";
            Empresa        itemEmpresa;
            var            itemAbrev  = new List <Sucursal_Empresa>();
            ControlUsuario cu         = new ControlUsuario();
            var            sucursales = cu.GetSucursalesUsuario(ControlAcceso.GetUsuarioEnSession());

            //var FechaI = new DateTime(fecI.Year, fecI.Month, fecI.Day, 05, 00, 0);
            //var FechaF = new DateTime(fecF.Year, fecF.Month, fecF.Day, 23, 50, 0);


            using (var context = new RHEntities())
            {
                itemEmpresa = context.Empresa.FirstOrDefault(x => x.IdEmpresa == empresa);
                itemAbrev   = context.Sucursal_Empresa.Where(x => x.IdEmpresa == itemEmpresa.IdEmpresa && x.IdEsquema == 1).ToList();
                //ALTA-REINGRESO
                switch (tipoMovimiento)
                {
                case 1:
                    nombreArchivo = "Aseg " + itemEmpresa.RazonSocial.Substring(0, 5) + ".txt";
                    //Buscamos los contratos con fecha de Alta imss  en el rango de fecha
                    listaContratos = (from c in context.Empleado_Contrato
                                      where c.FechaIMSS >= FechaI && c.FechaIMSS <= FechaF &&
                                      c.Status == true && c.BajaIMSS == null
                                      // && c.IdEmpresaFiscal != null
                                      && c.IdEmpresaFiscal == empresa && c.IsReingreso == false
                                      select c).ToList();
                    break;

                case 2:    //Baja - Reingreso
                    nombreArchivo = "Movt " + itemEmpresa.RazonSocial.Substring(0, 5) + ".txt";
                    //Buscamos los contratos con fecha de Alta imss  en el rango de fecha
                    listaContratos = (from c in context.Empleado_Contrato
                                      where c.BajaIMSS >= FechaI && c.BajaIMSS <= FechaF &&
                                      c.Status == false && c.BajaIMSS != null
                                      // && c.IdEmpresaFiscal != null
                                      && c.IdEmpresaFiscal == empresa
                                      select c).ToList();
                    break;
                }

                //Obtenemos el array de Id empleados
                listaContratos = listaContratos.Where(x => sucursales.Contains(x.IdSucursal)).ToList();
                var arrayIdEmpleados = listaContratos.Select(x => x.IdEmpleado).ToArray();

                listaEmpleados = (from e in context.Empleado
                                  where arrayIdEmpleados.Contains(e.IdEmpleado)
                                  select e).ToList();

                //listaEmpresas = context.Empresa.ToList();
            }

            //string[] lineasArchivo = new string[listaContratos.Count];
            //int linea = 0;
            //foreach (var itemContrato in listaContratos)
            //{
            //var itemEmpresa = listaEmpresas.FirstOrDefault(x => x.IdEmpresa == itemContrato.IdEmpresaFiscal.Value);
            //var itemEmpleado = listaEmpleados.FirstOrDefault(x => x.IdEmpleado == itemContrato.IdEmpleado);
            //string clave = itemAbrev.Where(x => x.IdEmpresa == itemContrato.IdEmpresaFiscal && x.IdSucursal == itemContrato.IdSucursal).Select(x => x.Clave_Imss).FirstOrDefault();
            //string strReg = "";

            List <string> strReg = new List <string>();

            switch (tipoMovimiento)
            {
            case 1:
                strReg = SuaAseg(itemEmpresa, listaEmpleados, listaContratos, itemAbrev);
                var pathUsuario = Utils.ValidarFolderUsuario(idUsuario, path);
                var archivoIdse = pathUsuario + nombreArchivo;
                File.WriteAllLines(archivoIdse, strReg);
                break;

            case 2:
                strReg = SuaMovt(itemEmpresa, listaEmpleados, listaContratos, itemAbrev);
                var pathUsuario2      = Utils.ValidarFolderUsuario(idUsuario, path);
                var archivoSuaMovBaja = pathUsuario2 + nombreArchivo;
                File.WriteAllLines(archivoSuaMovBaja, strReg);
                break;
            }

            return(pathDescarga + "\\" + idUsuario + "\\" + nombreArchivo);
        }
Exemplo n.º 30
0
        public static void iniciarColeccion()
        {
            // Variables de Cajon
            int    iMachineNumber  = 1;
            int    idwErrorCode    = 0;
            string sdwEnrollNumber = Constantes.TEXTO_BLANCO;
            int    idwVerifyMode   = 0;
            int    idwInOutMode    = 0;
            int    idwYear         = 0;
            int    idwMonth        = 0;
            int    idwDay          = 0;
            int    idwHour         = 0;
            int    idwMinute       = 0;
            int    idwSecond       = 0;
            int    idwWorkcode     = 0;

            // Variables de acceso a la base de datos
            IControlAccesoDao                controlAccesoDao                = daoFactory.GetControlAccesoDao();
            IColectorMovimientoDao           colectorMovimientoDao           = daoFactory.GetColectorMovimientosDao();
            IColectorMovimientoIncidenciaDao colectorMovimientoIncidenciaDao = daoFactory.GetColectorMovimientosIncidenciaDao();
            IEmpleadoDao   empleadoDao   = daoFactory.GetEmpleadoDao();
            IIncidenciaDao incidenciaDao = daoFactory.GetIncidenciaDao();

            logger.Info("PROCESO COLECTOR: Ejecucion automatica de la tarea de coleccion");

            List <ControlAcceso> lista = null;

            try
            {
                lista = controlAccesoDao.GetListado(true, null, DbDao.ControlAccesoDao.Ordenamiento.FechaUltimaConexion);
            }
            catch (Exception ex)
            {
                logger.Error(String.Format("Error al intentar obtener la lista de Controles de Acceso. Detalles: [{0}]", ex.Message), ex);
            }



            if (lista != null && lista.Count > 0)
            {
                foreach (ControlAcceso control in lista)
                {
                    logger.Info(String.Format("Procesando control con Nombre: [{0}], Direccion IP: [{1}] y Puerto: [{2}]", control.Nombre, control.DireccionIp, control.Puerto));

                    try
                    {
                        CZKEMClass _control = new CZKEMClass();
                        if (_control.Connect_Net(control.DireccionIp, Int32.Parse(control.Puerto.Value.ToString())))
                        {
                            // Deshabilitanos el control
                            _control.EnableDevice(iMachineNumber, false);
                            logger.Info(String.Format("Conectado al control con Nombre: [{0}], Direccion IP: [{1}] y Puerto: [{2}]", control.Nombre, control.DireccionIp, control.Puerto));

                            try
                            {
                                control.FechaUltimaConexion = DateTime.Now;
                                controlAccesoDao.SaveOrUpdate(control);
                            }
                            catch (Exception ex)
                            {
                                logger.Warn(String.Format("Error al actualizar la Fecha de Ultima Conexionc del Control con Nombre: [{0}], Direccion IP: [{1}] y Puerto: [{2}]. Codigo de Error: [{3}]", control.Nombre, control.DireccionIp, control.Puerto, idwErrorCode));
                                logger.Warn(ex);
                            }


                            if (_control.ReadGeneralLogData(iMachineNumber))
                            {
                                logger.Info(String.Format("Lectura de Datos Generales con EXITO control con Nombre: [{0}], Direccion IP: [{1}] y Puerto: [{2}]", control.Nombre, control.DireccionIp, control.Puerto));
                                while (_control.SSR_GetGeneralLogData(iMachineNumber, out sdwEnrollNumber, out idwVerifyMode,
                                                                      out idwInOutMode, out idwYear, out idwMonth, out idwDay, out idwHour, out idwMinute,
                                                                      out idwSecond, ref idwWorkcode))
                                {
                                    logger.Info(String.Format("Datos Obtenidos: CveControlAcceso: [{0}], sdwEnrollNumber: [{1}], idwVerifyMode: [{2}], idwInOutMode: [{3}], idwYear: [{4}], idwMonth: [{5}], idwDay: [{6}], idwHour: [{7}], idwMinute: [{8}], idwSecond: [{9}], idwWorkcode: [{10}]", control.CveControlAcceso, sdwEnrollNumber, idwVerifyMode, idwInOutMode, idwYear, idwMonth, idwDay, idwHour, idwMinute, idwSecond, idwWorkcode));
                                    ColectorMovimiento colector = new ColectorMovimiento(control.IdControl, control.CveControlAcceso, sdwEnrollNumber, idwVerifyMode, idwInOutMode, idwYear, idwMonth, idwDay, idwHour, idwMinute, idwSecond, idwWorkcode);
                                    ColectorMovimiento up       = colectorMovimientoDao.SaveOrUpdate(colector);
                                    colector = up;
                                }
                            }
                            else
                            {
                                _control.GetLastError(ref idwErrorCode);
                                if (idwErrorCode != 0)
                                {
                                    String strError = String.Format("ERROR de conexion al control con Nombre: [{0}], Direccion IP: [{1}] y Puerto: [{2}]. Codigo de Error [{3}]", control.Nombre, control.DireccionIp, control.Puerto, idwErrorCode);
                                    logger.Error(strError);

                                    try
                                    {
                                        ColectorMovimientoIncidencia coleMovIncidencia = new ColectorMovimientoIncidencia();
                                        coleMovIncidencia.ControlAcceso = control;
                                        coleMovIncidencia.Detalles      = strError;
                                        colectorMovimientoIncidenciaDao.Save(coleMovIncidencia);
                                    }
                                    catch (Exception ex)
                                    {
                                        logger.Warn(String.Format("No se pudo guardar la incidencia de coleccion de movimientos. Mensaje: [{0}]", ex.Message));
                                    }
                                }
                                else
                                {
                                    logger.Info(String.Format("OK. El control Reporta que NO existen movimientos. Datos de conexion son Nombre: [{0}], Direccion IP: [{1}] y Puerto: [{2}]. Codigo de Mensaje: [{3}]", control.Nombre, control.DireccionIp, control.Puerto, idwErrorCode));
                                }
                            }

                            // Limpiamos el log
                            if (_control.ClearGLog(iMachineNumber))
                            {
                                _control.RefreshData(iMachineNumber);
                            }
                            else
                            {
                                _control.GetLastError(ref idwErrorCode);
                                logger.Error(String.Format("Error en el Proceso de Limpiar el LOG del Control con Nombre: [{0}], Direccion IP: [{1}] y Puerto: [{2}]. Codigo de Error: [{3}]", control.Nombre, control.DireccionIp, control.Puerto, idwErrorCode));
                            }


                            _control.EnableDevice(iMachineNumber, true);
                            _control.Disconnect();
                        }
                        else
                        {
                            _control.GetLastError(ref idwErrorCode);

                            String strError = String.Format("Error en el Proceso de Conexion al control con Nombre: [{0}], Direccion IP: [{1}] y Puerto: [{2}]. Codigo de Error: [{3}]", control.Nombre, control.DireccionIp, control.Puerto, idwErrorCode);
                            logger.Error(strError);

                            try
                            {
                                ColectorMovimientoIncidencia coleMovIncidencia = new ColectorMovimientoIncidencia();
                                coleMovIncidencia.ControlAcceso = control;
                                coleMovIncidencia.Detalles      = strError;
                                colectorMovimientoIncidenciaDao.Save(coleMovIncidencia);
                            }
                            catch (Exception ex)
                            {
                                logger.Warn(String.Format("No se pudo guardar la incidencia de coleccion de movimientos. Mensaje: [{0}]", ex.Message));
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        String strError = String.Format("Error en el Proceso de Procesar Control con Nombre: [{0}], Direccion IP: [{1}] y Puerto: [{2}]. Codigo de Error: [{3}]", control.Nombre, control.DireccionIp, control.Puerto, idwErrorCode);
                        logger.Error(strError);
                        logger.Error(ex);

                        try
                        {
                            ColectorMovimientoIncidencia coleMovIncidencia = new ColectorMovimientoIncidencia();
                            coleMovIncidencia.ControlAcceso = control;
                            coleMovIncidencia.Detalles      = strError;
                            colectorMovimientoIncidenciaDao.Save(coleMovIncidencia);
                        }
                        catch (Exception except)
                        {
                            logger.Warn(String.Format("No se pudo guardar la incidencia de coleccion de movimientos. Mensaje: [{0}]", except.Message));
                        }
                    }
                }

                // Se inicia el purrun de la tabla de inicidencias
                List <ColectorMovimiento> listaColector = colectorMovimientoDao.GetListado();
                if (listaColector != null && listaColector.Count > 0)
                {
                    foreach (ColectorMovimiento movimiento in listaColector)
                    {
                        try
                        {
                            Empleado      empleado = empleadoDao.GetByNumeroEmpleado(Int32.Parse(movimiento.EnrollNumber));
                            ControlAcceso control  = controlAccesoDao.GetById(movimiento.CveControlAcceso);

                            DateTime fechaAlta       = DateTime.Now;
                            DateTime fechaIncidencia = new DateTime(movimiento.Year != null ? movimiento.Year.Value : fechaAlta.Year,
                                                                    movimiento.Month != null ? movimiento.Month.Value : fechaAlta.Month, movimiento.Day != null ? movimiento.Day.Value : fechaAlta.Day,
                                                                    movimiento.Hour != null ? movimiento.Hour.Value : fechaAlta.Hour, movimiento.Minute != null ? movimiento.Minute.Value : fechaAlta.Minute,
                                                                    movimiento.Second != null ? movimiento.Second.Value : fechaAlta.Second);


                            if (empleado == null)
                            {
                                String strError = String.Format("ADVERTENCIA: El Empleado con clave [{0}] no fue encontrado en la base de datos. Esta incidencia no se guardara", movimiento.EnrollNumber);
                                logger.Warn(strError);

                                try
                                {
                                    ColectorMovimientoIncidencia coleMovIncidencia = new ColectorMovimientoIncidencia();
                                    coleMovIncidencia.ControlAcceso = control;
                                    coleMovIncidencia.Detalles      = strError;
                                    coleMovIncidencia.CveEmpleado   = movimiento.EnrollNumber;
                                    colectorMovimientoIncidenciaDao.Save(coleMovIncidencia);
                                }
                                catch (Exception except)
                                {
                                    logger.Warn(String.Format("No se pudo guardar la incidencia de coleccion de movimientos. Mensaje: [{0}]", except.Message));
                                }
                            }
                            if (control == null)
                            {
                                logger.Warn(String.Format("ADVERTENCIA: El Control de Acceso con Clave: [{0}] no fue encontrado en la base de datos. Esta incidencia no se guardara", movimiento.CveControlAcceso));
                            }

                            if (empleado != null && control != null)
                            {
                                try
                                {
                                    Incidencia validacion = incidenciaDao.GetByEmpleadoControlFechaInOutMode(empleado, control, fechaIncidencia, movimiento.InOutMode.HasValue ? movimiento.InOutMode.Value : 0);

                                    if (empleado != null)
                                    {
                                        try
                                        {
                                            empleado.UltimaColeccion = String.Format("Fecha: [{0}] en el Control: [{1}]", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), control.Nombre);
                                            empleadoDao.SaveOrUpdate(empleado);
                                        }
                                        catch
                                        {
                                        }
                                    }

                                    if (validacion == null)
                                    {
                                        Incidencia incidencia = new Incidencia();
                                        incidencia.ControlAcceso       = control;
                                        incidencia.Empleado            = empleado;
                                        incidencia.EnviadoWs           = 0;
                                        incidencia.FechaAlta           = fechaAlta;
                                        incidencia.FechaHoraIncidencia = fechaIncidencia;
                                        incidencia.InOutMode           = movimiento.InOutMode;
                                        Incidencia up = incidenciaDao.SaveOrUpdate(incidencia);
                                        incidencia = up;
                                    }
                                    else
                                    {
                                        logger.Warn(String.Format("ADVERTENCIA: Esta incidencia ya estaba dada de alta con la clave [{0}]", validacion.CveIncidencia));
                                    }
                                }
                                catch (Exception ex)
                                {
                                    logger.Error(String.Format("Error: Al intentar guardar la incidencia con Control: [{0}], Empleado: [{1}], Fecha Hora [{2}]. Mensaje: [{3}]", control.Nombre, empleado.Nombre, fechaIncidencia, ex.Message));
                                    logger.Error(ex);
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            logger.Error(String.Format("Error al momento de intentar procesar los colectores de movimiento. Mensaje: [{0}] ", ex.Message));
                            logger.Error(ex);
                        }
                    }
                }

                // Se borra la tabla del colector de movimientos
                if (listaColector != null && listaColector.Count > 0)
                {
                    foreach (ColectorMovimiento movimiento in listaColector)
                    {
                        try
                        {
                            colectorMovimientoDao.Delete(movimiento);
                        }
                        catch (Exception ex)
                        {
                            logger.Error(String.Format("Error al momento de intentar limpiar los colectores de movimiento. Mensaje: [{0}] ", ex.Message));
                            logger.Error(ex);
                        }
                    }
                }
            }
            else
            {
                logger.Info("La lista de controles de acceso a procesar está vacia o nula de controles de acceso activos en la base de datos.");
            }
        }