/* Esta accion se llama cuando login se ha ejecutado correctamente
         * Esta accion redirige al home correspondiente del usuario
         * No recibe argumentos
         * Regresa una redireccion hacia una accion*/
        public ActionResult RedirectToHome()
        {
            Docentes        doc   = (Docentes)Session["docente"];
            Administrativos admin = (Administrativos)Session["administ"];

            if (doc != null)
            {
                return(RedirectToAction("Home", "Docente"));
            }
            if (admin != null)
            {
                if (admin.rol == 1)
                {
                    return(RedirectToAction("Home", "Coordinador"));
                }
                if (admin.rol == 2)
                {
                    return(RedirectToAction("Home", "Subdirector"));
                }
                if (admin.rol == 3)
                {
                    return(RedirectToAction("Home", "Director"));
                }
            }
            return(RedirectToAction("Login"));
        }
        /* Esta accion recupera todos los paads activos de la base de datos segun carrera del coordinador
         * Recibe de forma opcional el id del estado si vienen vacios se omiten en el filtrado
         * Regresa una lista con los modelos de los paad*/
        public List <RegistroIAD> GetActiveIADs(int state = 0)
        {
            Administrativos    doc  = (Administrativos)Session["administ"];
            List <RegistroIAD> list = null;

            using (var db = new DB_PAAD_IADEntities())
            {
                list = (from docente in db.Docentes
                        join iad in db.IADs
                        on docente.id_docente equals iad.docente into gpaad
                        from paad in gpaad.DefaultIfEmpty()
                        join estado in db.Estados
                        on paad.estado equals estado.id_estado into gestado
                        from estado in gestado.DefaultIfEmpty()
                        where state > 0 && !(estado == null && state == 1) ? estado.id_estado == state && estado.id_estado != 3 : estado.id_estado != 3
                        join carrera in db.Carreras
                        on docente.carrera equals carrera.id_carrera
                        where carrera.id_carrera == doc.carrera
                        from periodo in db.Periodos
                        where periodo.activo == true
                        select new RegistroIAD
                {
                    id_iad = paad != null ? paad.id_iad : 0,
                    estado = estado != null ? estado.estado : (from e in db.Estados where e.id_estado == 1 select e.estado).FirstOrDefault(),
                    estado_valor = estado != null ? estado.id_estado : 1,
                    periodo = periodo.periodo,
                    carrera = carrera.carrera,
                    numero_empleado = docente.numero_empleado,
                    nombre_docente = docente.nombre,
                }).ToList();
            }
            return(list);
        }
        /* Esta accion recupera todos los paads aprobados de la base de datos segun la carrera del coordinador
         * Recibe de forma opcional el id del periodo y el id de la carrera, si vienen vacios se omiten en el filtrado
         * Regresa una lista con los modelos de los paad*/
        public List <RegistroIAD> GetRecordIADs(int period = 0)
        {
            Administrativos    doc  = (Administrativos)Session["administ"];
            List <RegistroIAD> list = null;

            using (var db = new DB_PAAD_IADEntities())
            {
                list = (from iad in db.IADs
                        join estado in db.Estados
                        on iad.estado equals estado.id_estado
                        where estado.id_estado == 3
                        join periodo in db.Periodos
                        on iad.periodo equals periodo.id_periodo
                        where period > 0 ? periodo.id_periodo == period : true
                        join carrera in db.Carreras
                        on iad.carrera equals carrera.id_carrera
                        where carrera.id_carrera == doc.carrera
                        join docente in db.Docentes
                        on iad.docente equals docente.id_docente
                        select new RegistroIAD
                {
                    id_iad = iad.id_iad,
                    estado = estado.estado,
                    periodo = periodo.periodo,
                    carrera = carrera.carrera,
                    numero_empleado = docente.numero_empleado,
                    nombre_docente = docente.nombre
                }).ToList();
            }
            return(list);
        }
        /* Esta funcion llena el modelo de InfoPAADCLS con la informacion de la base de datos
         * Recibe el id del paad
         * Regresa el modelo lleno*/
        public InfoIADCLS GetInfoIAD(int id)
        {
            InfoIADCLS      info = new InfoIADCLS();
            Administrativos doc  = (Administrativos)Session["administ"];

            using (var db = new DB_PAAD_IADEntities())
            {
                info = (from admin in db.Administrativos
                        where admin.rol == 3
                        from iad in db.IADs
                        where iad.id_iad == id && iad.estado != 1
                        join estado in db.Estados
                        on iad.estado equals estado.id_estado
                        join periodo in db.Periodos
                        on iad.periodo equals periodo.id_periodo
                        join docente in db.Docentes
                        on iad.docente equals docente.id_docente
                        select new InfoIADCLS
                {
                    id_iad = iad.id_iad,
                    status_value = iad.estado,
                    status_name = estado.estado,
                    active = periodo.activo,
                    isdirector = iad.docente == admin.docente ? true : false
                }).FirstOrDefault();
            }
            return(info);
        }
        public ActionResult Login(AuthenticationCLS credentials)
        {
            //Valida los campos del modelo de las credenciales
            if (!ModelState.IsValid)
            {
                return(Json(new
                {
                    Status = 2,
                    Message = "Invalid",
                    AjaxResponse = RenderRazorViewToString("_AuthenticateCredentials", credentials)
                }));
            }
            //Valida que la autenticacion sea correcta
            if (!util.AuthenticateCredentials(credentials.email, credentials.password))
            {
                credentials.message = "Correo y/o contraseña incorrectos";
                return(Json(new
                {
                    Status = 3,
                    Message = "Error",
                    AjaxResponse = RenderRazorViewToString("_AuthenticateCredentials", credentials)
                }));
            }
            Usuarios user_db;

            //obtiene el usario segun la contrasena y el correo
            using (var db = new DB_PAAD_IADEntities())
            {
                user_db = db.Usuarios.Where(p => p.email == credentials.email && p.password == credentials.password).FirstOrDefault();
            }
            if (user_db.tipo_usuario == 1)
            {
                //Obtiene al docente segun el correo
                using (var db = new DB_PAAD_IADEntities())
                {
                    Docentes docente = db.Docentes.Where(p => p.correo == user_db.email).FirstOrDefault();
                    //Crea una session de usuario
                    Session["docente"] = docente;
                }
            }
            else if (user_db.tipo_usuario == 2)
            {
                //Obtiene al administrativo segun el correo
                using (var db = new DB_PAAD_IADEntities())
                {
                    Administrativos admin = db.Administrativos.Where(p => p.correo == user_db.email).FirstOrDefault();
                    //Crea una session de usuario
                    Session["administ"] = admin;
                }
            }
            return(Json(new
            {
                Status = 1,
                Message = "Success"
            }));
        }
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            Administrativos admin = (Administrativos)HttpContext.Current.Session["administ"];

            if (admin == null || admin.rol != 1)
            {
                filterContext.Result = new RedirectResult("~/Login/RedirectToHome");
            }
            base.OnActionExecuting(filterContext);
        }
        /* Esta accion se llama cuando le da al boton de aceptar en el modal de credenciales
         * Esta funcion sirve para cambiar el campo isdirector de la tabla de docentes de una cuenta a otra
         * Recibe las credenciales y el id del docente que sera el nuevo director
         * Regresa un json con el estado de la respuesta, el mensaje de respuesta, y una vista parcial en string */
        public ActionResult ChangeSubdirector(AuthenticationCLS credentials, int id_docente)
        {
            //Valida los campos del modelo de las credenciales
            if (!ModelState.IsValid)
            {
                return(Json(new
                {
                    Status = 2,
                    Message = "Invalid",
                    AjaxResponse = RenderRazorViewToString("_AuthenticateCredentials", credentials)
                }));
            }
            //Obtiene los datos de la sesion del usuario
            Administrativos doc = ((Administrativos)Session["administ"]);

            //Valida que la autenticacion sea correcto, que el correo de la autenticacion se el mismo que el de la sesion y que se tengan los permisos necesario para realizar esa accion
            if (!util.AuthenticateCredentials(credentials.email, credentials.password) || doc.rol != 2 || doc.correo != credentials.email)
            {
                credentials.message = "Correo y/o contraseña incorrectos";
                return(Json(new
                {
                    Status = 3,
                    Message = "Error",
                    AjaxResponse = RenderRazorViewToString("_AuthenticateCredentials", credentials)
                }));
            }
            using (var db = new DB_PAAD_IADEntities())
            {
                Docentes docente          = db.Docentes.Where(p => p.id_docente == id_docente).FirstOrDefault();
                bool     isDirectorOrNull = docente != null?util.IsDirector(docente.id_docente) : true;

                //Si el docente no se encutra o ya es director regresa un mensaje de error, si no lo vuelve director
                if (isDirectorOrNull)
                {
                    credentials.message = "Cuenta no encontrada o esta cuenta ya es director";
                    return(Json(new
                    {
                        Status = 3,
                        Message = "Error",
                        AjaxResponse = RenderRazorViewToString("_AuthenticateCredentials", credentials)
                    }));
                }
                Administrativos director = db.Administrativos.Where(p => p.rol == 2).FirstOrDefault();
                if (director != null)
                {
                    director.docente = docente.id_docente;
                }
                db.SaveChanges();
            }
            return(Json(new
            {
                Status = 1,
                Message = "Success"
            }));
        }
Exemple #8
0
 private void DatosAIniciar()
 {
     if (manejadorAdministrativos.Read.Count < 1)
     {
         Administrativos administrativos = new Administrativos()
         {
             Contrasenia = "Admin",
             Correo      = "Admin"
         };
         if (!manejadorAdministrativos.Create(administrativos))
         {
             this.Close();
         }
     }
 }
        /* Esta funcion llena el modelo de InfoPAADCLS con la informacion de la base de datos
         * Recibe el id del paad
         * Regresa el modelo lleno*/
        public InfoIADCLS GetInfoIAD(int id)
        {
            InfoIADCLS      info = new InfoIADCLS();
            Administrativos doc  = (Administrativos)Session["administ"];

            using (var db = new DB_PAAD_IADEntities())
            {
                info = (from iad in db.IADs
                        where iad.id_iad == id && iad.estado != 1
                        join estado in db.Estados
                        on iad.estado equals estado.id_estado
                        join periodo in db.Periodos
                        on iad.periodo equals periodo.id_periodo
                        select new InfoIADCLS
                {
                    id_iad = iad.id_iad,
                    status_value = iad.estado,
                    status_name = estado.estado,
                    active = periodo.activo
                }).FirstOrDefault();
            }
            return(info);
        }
Exemple #10
0
 public bool Update(Administrativos EntidadModificada)
 {
     return(repositorio.Update(EntidadModificada));
 }
Exemple #11
0
 public bool Create(Administrativos Entidad)
 {
     return(repositorio.Create(Entidad));
 }
        /* Esta accion aplica las acciones sobre el paad como rechazar paad, aprobar paad, aprobar modificacion y rechazar modificacion
         * Recibe las credenciales a autenticar, el id del padd, la accion a realizar y el mensaje de rechazo de manera opcional
         * devuelve un json con el estado de la respuesta, el mensaje de respuesta, y una vista parcial en string */
        public ActionResult ApplyActionPAAD(AuthenticationCLS credentials, int id_paad, int action_paad, string reject_message)
        {
            //Valida los campos del modelo de las credenciales
            if (!ModelState.IsValid)
            {
                return(Json(new
                {
                    Status = 2,
                    Message = "Invalid",
                    AjaxResponse = RenderRazorViewToString("_AuthenticateCredentials", credentials)
                }));
            }
            //Obtiene los datos de la sesion del usuario
            Administrativos doc = ((Administrativos)Session["administ"]);

            //Valida que la autenticacion sea correcta, que el correo de la autenticacion se el mismo que el de la sesion y que la cuenta tenga el nivel de permisos necesarios
            if (!util.AuthenticateCredentials(credentials.email, credentials.password) || doc.rol < 2 || doc.correo != credentials.email)
            {
                credentials.message = "Correo y/o contraseña incorrectos";
                return(Json(new
                {
                    Status = 3,
                    Message = "Error",
                    AjaxResponse = RenderRazorViewToString("_AuthenticateCredentials", credentials)
                }));
            }
            using (var db = new DB_PAAD_IADEntities())
            {
                Mensajes mssg = null;
                PAADs    paad = db.PAADs.Where(p => p.id_paad == id_paad).FirstOrDefault();
                bool     isNotDirectorOrNull = paad != null ? !util.IsDirector(paad.docente) : true;
                //Valida que el paad sea del director
                if (isNotDirectorOrNull)
                {
                    credentials.message = "Correo y/o contraseña incorrectos";
                    return(Json(new
                    {
                        Status = 3,
                        Message = "Error",
                        AjaxResponse = RenderRazorViewToString("_AuthenticateCredentials", credentials)
                    }));
                }
                else if (action_paad == 1)
                {
                    //Acciones para el caso de Rechazar PAAD
                    paad.estado        = 1;
                    paad.firma_docente = null;
                    db.Mensajes.Add(new Mensajes
                    {
                        paad    = paad.id_paad,
                        tipo    = 1,
                        mensaje = reject_message
                    });
                }
                else if (action_paad == 2)
                {
                    //Acciones para el caso de Aprobar PAAD
                    paad.estado         = 3;
                    paad.firma_director = Guid.NewGuid().ToString("N");
                }
                else if (action_paad == 3)
                {
                    //Acciones para el caso de Rechazar Solicitud
                    paad.estado = 3;
                    db.Mensajes.Add(new Mensajes
                    {
                        paad    = paad.id_paad,
                        tipo    = 3,
                        mensaje = reject_message
                    });
                    mssg = db.Mensajes.Where(p => p.paad == id_paad && p.tipo == 2).FirstOrDefault();
                }
                else if (action_paad == 4)
                {
                    //Acciones para el caso de Aprobar Solicitud
                    paad.estado         = 1;
                    paad.firma_docente  = null;
                    paad.firma_director = null;
                    mssg = db.Mensajes.Where(p => p.paad == id_paad && p.tipo == 2).FirstOrDefault();
                }
                //Si hay mensajes que borrar los elimina, por lo generar por cada paad solo hay un mensaje activo que mostrar, en caso de eliminar varios al mismo tiempo se debera modificar.
                if (mssg != null)
                {
                    db.Mensajes.Remove(mssg);
                }
                db.SaveChanges();
            }
            return(Json(new
            {
                Status = 1,
                Message = "Success"
            }));
        }