public int justificarAsistencia(AsistenciaCLS oAsistenciaCLS, int titulo)
        {
            int ok = 0;

            using (var bd = new asistenciaEntities())
            {
                Models.asistencia asi = bd.asistencia.Where(p => p.ASI_ID.Equals(titulo)).First();

                asi.ASI_OBSERVACION = oAsistenciaCLS.observacion;
                ok = bd.SaveChanges();
            }

            return(ok);
        }
        public ActionResult Filtrar(AsistenciaCLS oAsistenciaCLS)
        {
            string termino = oAsistenciaCLS.termino;
            List <AsistenciaCLS> listaAsistencia = new List <AsistenciaCLS>();

            using (var bd = new asistenciaEntities())
            {
                if (termino == null)
                {
                    listaAsistencia = (from historial in bd.asistencia
                                       join usuario in bd.usuarios
                                       on historial.USU_ID equals usuario.USU_ID
                                       orderby historial.ASI_FECHA descending
                                       select new AsistenciaCLS
                    {
                        idAsistencia = historial.ASI_ID,
                        empleadoAsistencia = usuario.USU_NOMBRES,
                        fecha = (DateTime)historial.ASI_FECHA,
                        horaIngreso = historial.ASI_HORA_INGRESO,
                        horaSalida = historial.ASI_HORA_SALIDA,
                        estadoAsistencia = (int)historial.ASI_ESTADO,
                        observacion = historial.ASI_OBSERVACION
                    }).ToList();
                    Session["listaHistorial"] = listaAsistencia;
                }
                else
                {
                    listaAsistencia = (from historial in bd.asistencia
                                       join usuario in bd.usuarios
                                       on historial.USU_ID equals usuario.USU_ID
                                       where usuario.USU_NOMBRES.Contains(termino)
                                       orderby historial.ASI_FECHA descending
                                       select new AsistenciaCLS
                    {
                        idAsistencia = historial.ASI_ID,
                        empleadoAsistencia = usuario.USU_NOMBRES,
                        fecha = (DateTime)historial.ASI_FECHA,
                        horaIngreso = historial.ASI_HORA_INGRESO,
                        horaSalida = historial.ASI_HORA_SALIDA,
                        estadoAsistencia = (int)historial.ASI_ESTADO,
                        observacion = historial.ASI_OBSERVACION
                    }).ToList();
                    Session["listaHistorial"] = listaAsistencia;
                }
            }

            return(PartialView("_tablaAsistencia", listaAsistencia));
        }
        public int justificar(AsistenciaCLS asistenciaCLS)
        {
            int rpta = 0;

            try
            {
                using (var bd = new asistenciaEntities())
                {
                }
            }
            catch (Exception)
            {
                throw;
            }
            return(rpta);
        }
        //Editar justificación
        public JsonResult recuperarDatos(int id)
        {
            AsistenciaCLS oAsistenciaCLS = new AsistenciaCLS();

            try
            {
                using (var bd = new asistenciaEntities())
                {
                    Models.asistencia oAsistencia = bd.asistencia.Where(p => p.ASI_ID == id).First();
                    oAsistenciaCLS.observacion = oAsistencia.ASI_OBSERVACION;
                }
            }
            catch (Exception)
            {
                throw;
            }

            return(Json(oAsistenciaCLS, JsonRequestBehavior.AllowGet));
        }
        public int justificar(AsistenciaCLS asistenciaCLS)
        {
            int rpta             = 0;
            int idUsuarioSession = (int)Session["Id"];

            try
            {
                using (var bd = new asistenciaEntities())
                {
                    Models.asistencia asi = bd.asistencia.Where(p => p.USU_ID.Equals(idUsuarioSession) &&
                                                                p.ASI_FECHA.Equals(asistenciaCLS.fechaJustificar)).First();
                    asi.ASI_OBSERVACION = asistenciaCLS.observacion;
                    rpta = bd.SaveChanges();
                }
            }
            catch (Exception)
            {
                throw;
            }
            return(rpta);
        }
        // GET: Home
        public ActionResult Index()
        {
            //condicion si existe un ID de usuario al hacer login
            if (Session["Id"] == null)
            {
                return(RedirectToAction("Index", "Login"));
            }
            //guardarmos variables de session luego de hacer login en variables locales
            int      idUsuarioSession = (int)Session["Id"];
            DateTime fechaSession     = DateTime.Parse(Session["fechaActual"].ToString());

            List <UsuariosCLS> ListaUsuarios = new List <UsuariosCLS>();
            AsistenciaCLS      asisCLS       = new AsistenciaCLS();

            using (var bd = new asistenciaEntities())
            {
                //CONSULTANDO EN BASE DE DATOS SI HAY REGISTROS CON LA FECHA DE HOY
                int numeroVeces = bd.asistencia.Where(p => p.USU_ID.Equals(idUsuarioSession) &&
                                                      p.ASI_FECHA.Equals(fechaSession)).Count();
                //SI NO HAY REGISTRO INGRESA PROCEDE A REGISTRAR
                if (numeroVeces < 1)
                {
                    //RECUPERANDO TODOS LOS USUARIOS
                    ListaUsuarios = (from usu in bd.usuarios
                                     where usu.USU_ESTADO == 1
                                     select new UsuariosCLS
                    {
                        idUsuario = usu.USU_ID
                    }).ToList();

                    //AGREGANDO REGISTRO DE FECHA DIARIA POR USUARIO A HISTORIAL
                    foreach (UsuariosCLS usuario in ListaUsuarios)
                    {
                        Models.asistencia asi = new Models.asistencia();
                        asi.USU_ID     = usuario.idUsuario;
                        asi.ASI_FECHA  = fechaSession;
                        asi.ASI_ESTADO = 0;
                        asi.ASI_ATRASO = 0;
                        bd.asistencia.Add(asi);
                        bd.SaveChanges();
                    }
                }
                //Actualizar total Atrasos por mes
                if (Session["perfil"].Equals("Administrador"))
                {
                    ListaUsuarios = (from usu in bd.usuarios
                                     select new UsuariosCLS
                    {
                        idUsuario = usu.USU_ID
                    }).ToList();
                    foreach (UsuariosCLS usuario in ListaUsuarios)
                    {
                        //Metodo registrrar total atrasos por usuarioz
                        Atrasos(usuario.idUsuario);
                    }
                }
                //Recuperando información del registro que sea igual al login
                Models.asistencia asistenciaUsuario = bd.asistencia.Where(p => p.USU_ID.Equals(idUsuarioSession) &&
                                                                          p.ASI_FECHA.Equals(fechaSession)).First();

                asisCLS.horaIngreso = asistenciaUsuario.ASI_HORA_INGRESO;
                asisCLS.horaSalida  = asistenciaUsuario.ASI_HORA_SALIDA;
            }


            return(View(asisCLS));
        }