public IActionResult ObtenerMotivo(int id)
        {
            using (var db = new smafacpyaContext())
            {
                var valido = ValidarLogin();
                if (valido != HttpStatusCode.OK)
                {
                    if (valido == HttpStatusCode.Unauthorized)
                    {
                        return(Unauthorized(constantes.mensajes.sesionExpirada));
                    }
                    else
                    {
                        return(BadRequest(constantes.mensajes.error));
                    }
                }
                var motivo = db.Motivo.FirstOrDefault(x => x.Id == id);

                if (motivo == null)
                {
                    return(BadRequest(constantes.motivo.mensajes.motivoNoEncontrado));
                }

                var resultado = new MotivoViewModel
                {
                    Id          = motivo.Id,
                    Motivo      = motivo.Motivo1,
                    Descripcion = motivo.Descripcion,
                    Activo      = motivo.Activo
                };

                return(Ok(resultado));
            }
        }
        public IActionResult Logout()
        {
            using (var db = new smafacpyaContext())
            {
                db.Database.BeginTransaction();
                try
                {
                    var idUsuario = ObtenerUsuarioId();
                    var logins    = db.UsuarioLogin.Where(x => x.Activo && x.IdUsuario == idUsuario);
                    foreach (var login in logins)
                    {
                        login.Activo = false;
                    }

                    db.SaveChanges();
                    db.Database.CommitTransaction();

                    return(Ok());
                }
                catch (Exception ex)
                {
                    db.Database.RollbackTransaction();
                    return(BadRequest(ex.InnerException == null ? ex.Message : ex.InnerException.Message));
                }
            }
        }
        public IActionResult ObtenerRol(int id)
        {
            using (var db = new smafacpyaContext())
            {
                var valido = ValidarLogin();
                if (valido != HttpStatusCode.OK)
                {
                    if (valido == HttpStatusCode.Unauthorized)
                    {
                        return(Unauthorized(constantes.mensajes.sesionExpirada));
                    }
                    else
                    {
                        return(BadRequest(constantes.mensajes.error));
                    }
                }
                var rol = db.Rol.Include(x => x.RolModuloPantallaPermiso).FirstOrDefault(x => x.Id == id);

                if (rol == null)
                {
                    return(BadRequest(constantes.seguridad.mensajes.usuarioNoEncontrado));
                }

                var resultado = new RolViewModel
                {
                    Id          = rol.Id,
                    Nombre      = rol.Nombre,
                    Descripcion = rol.Descripcion,
                    Activo      = (bool)rol.Activo,
                    Menu        = ObtenerMenuPorRol(rol.Id)
                };

                return(Ok(resultado));
            }
        }
        public IActionResult ObtenerEstatusReporte(string nombre, int numeroPaginacion, int cantidadPaginacion, string columnaOrdenamiento, bool reversaOrdenamiento)
        {
            using (var db = new smafacpyaContext())
            {
                var valido = ValidarLogin();
                if (valido != HttpStatusCode.OK)
                {
                    if (valido == HttpStatusCode.Unauthorized)
                    {
                        return(Unauthorized(constantes.mensajes.sesionExpirada));
                    }
                    else
                    {
                        return(BadRequest(constantes.mensajes.error));
                    }
                }
                var estatus = db.Estatus.AsNoTracking().AsQueryable();

                if (!string.IsNullOrWhiteSpace(nombre))
                {
                    estatus = estatus.Where(x => x.Nombre.Contains(nombre));
                }

                switch (columnaOrdenamiento)
                {
                case "Nombre":
                    if (reversaOrdenamiento)
                    {
                        estatus = estatus.OrderByDescending(x => x.Nombre);
                    }
                    else
                    {
                        estatus = estatus.OrderBy(x => x.Nombre);
                    }
                    break;

                default:
                    if (reversaOrdenamiento)
                    {
                        estatus = estatus.OrderByDescending(x => x.Nombre);
                    }
                    else
                    {
                        estatus = estatus.OrderBy(x => x.Nombre);
                    }
                    break;
                }

                var lista = estatus.Select(x => new EstatusViewModel
                {
                    Id     = x.Id,
                    Nombre = x.Nombre,
                    Llave  = x.Llave
                });

                return(Ok(PaginacionConsulta.ObtenerPaginacion(lista, numeroPaginacion, cantidadPaginacion)));
            }
        }
        private List <MenuViewModel> ObtenerMenuPorRol(int idRol)
        {
            using (var db = new smafacpyaContext())
            {
                var menu = new List <MenuViewModel>();

                if (idRol == 0)
                {
                    return(menu);
                }

                var permisos = db.RolModuloPantallaPermiso.Where(x => x.IdRol == idRol);
                var idModulo = permisos.Select(z => z.IdModulo).ToArray();
                var modulos  = db.Modulo.Where(x => (bool)x.Activo && idModulo.Contains(x.Id)).ToList();

                foreach (var modulo in modulos)
                {
                    var idPantalla = permisos.Where(y => y.IdModulo == modulo.Id).Select(z => z.IdPantalla).ToArray();
                    var opcion     = new MenuViewModel
                    {
                        IdModulo  = modulo.Id,
                        Modulo    = modulo.Nombre,
                        Llave     = modulo.Llave,
                        Pantallas = new List <PantallaViewModel>()
                    };
                    var pantallas = db.Pantalla.
                                    Where(x => (bool)x.Activo && idPantalla.Contains(x.Id)).
                                    Select(x => new PantallaViewModel
                    {
                        IdPantalla = x.Id,
                        Pantalla   = x.Nombre,
                        Llave      = x.Llave,
                        Permisos   = new List <PermisoViewModel>()
                    }).ToList();

                    foreach (var pantalla in pantallas)
                    {
                        var idPermiso = permisos.Where(y => y.IdModulo == modulo.Id && y.IdPantalla == pantalla.IdPantalla).Select(z => z.IdPermiso).ToArray();
                        pantalla.Permisos = db.Permiso.Where(x => idPermiso.Contains(x.Id)).Select(x => new PermisoViewModel
                        {
                            IdPermiso   = x.Id,
                            Permiso     = x.Nombre,
                            Descripcion = x.Descripcion,
                            Llave       = x.Llave
                        }).ToList();

                        opcion.Pantallas.Add(pantalla);
                    }

                    menu.Add(opcion);
                }

                return(menu);
            }
        }
        public IActionResult ActualizarContrasena(LoginViewModel modelo)
        {
            var hoy = DateTime.Now;

            using (var db = new smafacpyaContext())
            {
                try
                {
                    if (string.IsNullOrWhiteSpace(modelo.Recuperar))
                    {
                        return(BadRequest(constantes.seguridad.mensajes.urlNoEncontrado));
                    }
                    if (string.IsNullOrWhiteSpace(modelo.Contraseña))
                    {
                        return(BadRequest(constantes.seguridad.mensajes.contrasenaNoValida));
                    }

                    var registros = db.UsuarioContraseña.Where(x => x.Activo && x.FechaVigencia <= hoy);
                    if (registros != null)
                    {
                        foreach (var r in registros)
                        {
                            r.Activo = false;
                        }
                    }
                    db.SaveChanges();

                    var registro = db.UsuarioContraseña.FirstOrDefault(x => x.Id == new Guid(DesEncriptar(modelo.Recuperar)) && x.Activo);

                    if (registro == null)
                    {
                        return(BadRequest(constantes.seguridad.mensajes.urlNoEncontrado));
                    }

                    registro.Activo = false;
                    var usuario    = db.Usuario.FirstOrDefault(x => x.Id == registro.IdUsuario);
                    var contraseña = new Contraseña();

                    if (usuario == null)
                    {
                        return(BadRequest(constantes.seguridad.mensajes.usuarioNoEncontrado));
                    }

                    usuario.Contraseña = contraseña.Encriptar(modelo.Contraseña);

                    db.SaveChanges();
                    return(Ok(constantes.mensajes.registroGuardado));
                }
                catch (Exception ex)
                {
                    return(BadRequest(ex.InnerException == null ? ex.Message : ex.InnerException.Message));
                }
            }
        }
Exemple #7
0
        public IActionResult ObtenerReporteAdministradorPorId(int id)
        {
            using (var db = new smafacpyaContext())
            {
                var reporte = db.Reporte.Include(x => x.IdMotivoNavigation)
                              .Include(x => x.IdProyectoNavigation)
                              .Include(x => x.IdEstatusReporteNavigation).AsNoTracking().FirstOrDefault(x => x.Id == id);

                if (reporte == null)
                {
                    return(BadRequest(constantes.reporte.mensajes.reporteNoEncontrado));
                }

                var resultado = new ReporteViewModel
                {
                    Id                     = reporte.Id,
                    Folio                  = reporte.Folio,
                    IdMotivo               = reporte.IdMotivo,
                    IdProyecto             = reporte.IdProyecto,
                    FechaReporte           = reporte.FechaReporte,
                    ComentarioReporte      = reporte.ComentarioReporte,
                    IdEstatusReporte       = reporte.IdEstatusReporte,
                    IdUsuarioAsignacion    = reporte.IdUsuarioAsignacion,
                    FechaAsignacion        = reporte.FechaAsignacion,
                    ComentarioAsignacion   = reporte.ComentarioAsignacion,
                    FechaFinalizacion      = reporte.FechaFinalizacion,
                    ComentarioFinalizacion = reporte.ComentarioFinalizacion,
                    Motivo                 = reporte.IdMotivoNavigation == null ? null : new MotivoViewModel
                    {
                        Id     = reporte.IdMotivoNavigation.Id,
                        Motivo = reporte.IdMotivoNavigation.Motivo1
                    },
                    Proyecto = reporte.IdProyecto == null ? null : new ProyectoViewModel
                    {
                        Id     = reporte.IdProyectoNavigation.Id,
                        Nombre = reporte.IdProyectoNavigation.Nombre
                    },
                    Estatus = reporte.IdEstatusReporteNavigation == null ? null : new EstatusViewModel
                    {
                        Id     = reporte.IdEstatusReporteNavigation.Id,
                        Nombre = reporte.IdEstatusReporteNavigation.Nombre
                    },
                    Usuario = reporte.IdUsuarioAsignacionNavigation == null ? null : new UsuarioViewModel
                    {
                        Id     = reporte.IdUsuarioAsignacionNavigation.Id,
                        Nombre = reporte.IdUsuarioAsignacionNavigation.Nombre
                    }
                };

                return(Ok(resultado));
            }
        }
        public IActionResult GuardarMotivo(MotivoViewModel modelo)
        {
            using (var db = new smafacpyaContext())
            {
                var valido = ValidarLogin();
                if (valido != HttpStatusCode.OK)
                {
                    if (valido == HttpStatusCode.Unauthorized)
                    {
                        return(Unauthorized(constantes.mensajes.sesionExpirada));
                    }
                    else
                    {
                        return(BadRequest(constantes.mensajes.error));
                    }
                }
                try
                {
                    db.Database.BeginTransaction();
                    if (modelo.Id > 0)
                    {
                        var motivo = db.Motivo.FirstOrDefault(x => x.Id == modelo.Id);
                        motivo.Motivo1     = modelo.Motivo;
                        motivo.Descripcion = modelo.Descripcion;
                        motivo.Activo      = modelo.Activo;
                    }
                    else
                    {
                        var motivo = new Motivo
                        {
                            Id          = modelo.Id,
                            Motivo1     = modelo.Motivo,
                            Descripcion = modelo.Descripcion,
                        };
                        motivo.Activo = true;
                        db.Motivo.Add(motivo);
                        db.SaveChanges();
                    }

                    db.SaveChanges();
                    db.Database.CommitTransaction();
                    return(Ok(constantes.mensajes.registroGuardado));
                }
                catch (Exception ex)
                {
                    db.Database.RollbackTransaction();
                    return(BadRequest(ex.InnerException == null ? ex.Message : ex.InnerException.Message));
                }
            }
        }
Exemple #9
0
        public IActionResult AsignarReporte(ReporteViewModel modelo)
        {
            var hoy = DateTime.Now;

            using (var db = new smafacpyaContext())
            {
                var valido = ValidarLogin();
                if (valido != HttpStatusCode.OK)
                {
                    if (valido == HttpStatusCode.Unauthorized)
                    {
                        return(Unauthorized(constantes.mensajes.sesionExpirada));
                    }
                    else
                    {
                        return(BadRequest(constantes.mensajes.error));
                    }
                }
                try
                {
                    var idUsuario = ObtenerUsuarioId();
                    db.Database.BeginTransaction();

                    if (modelo.Id > 0)
                    {
                        var reporte = db.Reporte.FirstOrDefault(x => x.Id == modelo.Id);

                        reporte.IdEstatusReporte = 2;
                        reporte.UsuarioEdicion   = idUsuario;
                        reporte.FechaEdicion     = hoy;
                        //checar esto lo puse setiado por el momento
                        reporte.IdUsuarioAsignacion  = 2;
                        reporte.FechaAsignacion      = modelo.FechaAsignacion;
                        reporte.ComentarioAsignacion = modelo.ComentarioAsignacion;
                    }
                    db.SaveChanges();
                    db.Database.CommitTransaction();
                    return(Ok(constantes.mensajes.registroGuardado));
                }
                catch (Exception ex)
                {
                    db.Database.RollbackTransaction();
                    return(BadRequest(ex.InnerException == null ? ex.Message : ex.InnerException.Message));

                    throw;
                }
            }
        }
        public IActionResult ObtenerMenus()
        {
            using (var db = new smafacpyaContext())
            {
                var menu    = new List <MenuViewModel>();
                var modulos = db.Modulo.Where(x => (bool)x.Activo).ToList();

                foreach (var modulo in modulos)
                {
                    var idPantalla = db.ModuloPantalla.Where(y => y.IdModulo == modulo.Id).Select(y => y.IdPantalla).ToArray();
                    var opcion     = new MenuViewModel
                    {
                        IdModulo  = modulo.Id,
                        Modulo    = modulo.Nombre,
                        Llave     = modulo.Llave,
                        Pantallas = new List <PantallaViewModel>()
                    };
                    opcion.Pantallas.AddRange(
                        db.Pantalla.
                        Where(x => (bool)x.Activo && idPantalla.Contains(x.Id)).
                        Select(x => new PantallaViewModel
                    {
                        IdPantalla = x.Id,
                        Pantalla   = x.Nombre,
                        Llave      = x.Llave
                    })
                        );

                    foreach (var pantalla in opcion.Pantallas)
                    {
                        var idPermiso = db.PantallaPermiso.Where(y => y.IdPantalla == pantalla.IdPantalla).Select(y => y.IdPermiso).ToArray();
                        pantalla.Permisos = new List <PermisoViewModel>();
                        pantalla.Permisos = db.Permiso.Where(x => idPermiso.Contains(x.Id)).Select(x => new PermisoViewModel
                        {
                            IdPermiso   = x.Id,
                            Permiso     = x.Nombre,
                            Descripcion = x.Descripcion,
                            Llave       = x.Llave
                        }).ToList();
                    }

                    menu.Add(opcion);
                }

                return(Ok(menu));
            }
        }
Exemple #11
0
        protected HttpStatusCode ValidarLogin()
        {
            var resultado = HttpStatusCode.BadRequest;

            try
            {
                var idUsuario = ObtenerUsuarioId();
                var idLogin   = ObtenerLoginId();
                using (var db = new smafacpyaContext())
                {
                    var hoy    = DateTime.Now;
                    var logins = db.UsuarioLogin.Where(x => x.IdUsuario == idUsuario && x.FechaVigencia <= hoy && x.Activo);

                    if (logins != null)
                    {
                        foreach (var login in logins)
                        {
                            login.Activo = false;
                        }
                    }

                    db.SaveChanges();

                    var vigencia = db.UsuarioLogin.FirstOrDefault(x => x.IdUsuario == idUsuario && x.Id == idLogin && x.Activo);

                    if (vigencia == null)
                    {
                        resultado = HttpStatusCode.Unauthorized;
                    }
                    else
                    {
                        resultado = HttpStatusCode.OK;
                    }
                }
            }
            catch (Exception ex)
            {
                resultado = HttpStatusCode.BadRequest;
            }

            return(resultado);
        }
        public IActionResult ObtenerUsuario(int id)
        {
            using (var db = new smafacpyaContext())
            {
                var valido = ValidarLogin();
                if (valido != HttpStatusCode.OK)
                {
                    if (valido == HttpStatusCode.Unauthorized)
                    {
                        return(Unauthorized(constantes.mensajes.sesionExpirada));
                    }
                    else
                    {
                        return(BadRequest(constantes.mensajes.error));
                    }
                }
                var usuario = db.Usuario.Include(x => x.UsuarioRol).ThenInclude(x => x.IdRolNavigation).FirstOrDefault(x => x.Id == id);

                if (usuario == null)
                {
                    return(BadRequest(constantes.seguridad.mensajes.usuarioNoEncontrado));
                }

                var resultado = new UsuarioViewModel
                {
                    Id              = usuario.Id,
                    Nombre          = usuario.Nombre,
                    ApellidoPaterno = usuario.ApellidoPaterno,
                    ApellidoMaterno = usuario.ApellidoMaterno,
                    Correo          = usuario.Correo,
                    FechaNacimiento = usuario.FechaNacimiento,
                    Activo          = usuario.Activo,
                    Rol             = usuario.UsuarioRol.Select(x => new RolViewModel
                    {
                        Id     = x.IdRolNavigation.Id,
                        Nombre = x.IdRolNavigation.Nombre
                    }).ToList()
                };

                return(Ok(resultado));
            }
        }
        public IActionResult RestablecerContrasena(string id)
        {
            var hoy = DateTime.Now;

            using (var db = new smafacpyaContext())
            {
                try
                {
                    if (string.IsNullOrWhiteSpace(id))
                    {
                        return(BadRequest(constantes.seguridad.mensajes.urlNoEncontrado));
                    }

                    var registros = db.UsuarioContraseña.Where(x => x.Activo && x.FechaVigencia <= hoy);
                    if (registros != null)
                    {
                        foreach (var r in registros)
                        {
                            r.Activo = false;
                        }
                    }
                    db.SaveChanges();

                    var registro = db.UsuarioContraseña.AsNoTracking().FirstOrDefault(x => x.Id == new Guid(DesEncriptar(id)) && x.Activo);

                    if (registro == null)
                    {
                        return(BadRequest(constantes.seguridad.mensajes.urlNoEncontrado));
                    }

                    return(Ok(new UsuarioViewModel
                    {
                        Id = registro.IdUsuario
                    }));
                }
                catch (Exception ex)
                {
                    return(BadRequest(ex.InnerException == null ? ex.Message : ex.InnerException.Message));
                }
            }
        }
        public IActionResult RecuperarContrasena(LoginViewModel modelo)
        {
            var hoy = DateTime.Now;

            using (var db = new smafacpyaContext())
            {
                try
                {
                    if (modelo == null)
                    {
                        return(BadRequest(constantes.seguridad.mensajes.correoVacio));
                    }
                    if (modelo.Correo == null)
                    {
                        return(BadRequest(constantes.seguridad.mensajes.correoVacio));
                    }

                    var usuarios = db.Usuario.Where(x => !string.IsNullOrWhiteSpace(x.Correo) && x.Activo);
                    var usuario  = usuarios.FirstOrDefault(x => x.Correo.Trim().Equals(modelo.Correo.Trim()));

                    if (usuario == null)
                    {
                        return(BadRequest(constantes.seguridad.mensajes.usuarioNoEncontrado));
                    }

                    var registros = db.UsuarioContraseña.Where(x => x.Activo && x.IdUsuario == usuario.Id);
                    if (registros != null)
                    {
                        foreach (var r in registros)
                        {
                            r.Activo = false;
                        }
                    }
                    db.SaveChanges();

                    var id = Guid.NewGuid();

                    db.UsuarioContraseña.Add(new UsuarioContraseña
                    {
                        Id            = id,
                        IdUsuario     = usuario.Id,
                        FechaCreacion = hoy,
                        FechaVigencia = hoy.AddMinutes(constantes.recuperarContrasena.minutosActivo),
                        Activo        = true
                    });
                    db.SaveChanges();

                    var link    = constantes.linkWeb + "/restablecerContrasena/" + Encriptar(id.ToString());
                    var mensaje = constantes.recuperarContrasena.correo.mensaje.Replace("@Link", link);
                    mensaje = mensaje.Replace("@Ruta", constantes.linkWeb);
                    var envio = EnviarCorreo(usuario.Nombre + " " + usuario.ApellidoPaterno, usuario.Correo, constantes.recuperarContrasena.correo.asunto, mensaje);
                    if (envio == null)
                    {
                        return(Ok(constantes.seguridad.mensajes.correoContrasena));
                    }
                    return(BadRequest(string.IsNullOrWhiteSpace(envio) ? constantes.mensajes.error : envio));
                }
                catch (Exception ex)
                {
                    return(BadRequest(ex.InnerException == null ? ex.Message : ex.InnerException.Message));
                }
            }
        }
        public IActionResult GuardarUsuario(UsuarioViewModel modelo)
        {
            var hoy = DateTime.Now;

            using (var db = new smafacpyaContext())
            {
                var valido = ValidarLogin();
                if (valido != HttpStatusCode.OK)
                {
                    if (valido == HttpStatusCode.Unauthorized)
                    {
                        return(Unauthorized(constantes.mensajes.sesionExpirada));
                    }
                    else
                    {
                        return(BadRequest(constantes.mensajes.error));
                    }
                }
                try
                {
                    var idUsuario = ObtenerUsuarioId();
                    db.Database.BeginTransaction();
                    var contraseña = new Contraseña();

                    if (modelo.Id > 0)
                    {
                        var usuario = db.Usuario.Include(x => x.UsuarioRol).FirstOrDefault(x => x.Id == modelo.Id);
                        usuario.Nombre          = modelo.Nombre;
                        usuario.ApellidoPaterno = modelo.ApellidoPaterno;
                        usuario.ApellidoMaterno = modelo.ApellidoMaterno;
                        usuario.FechaNacimiento = modelo.FechaNacimiento;
                        usuario.Correo          = modelo.Correo;
                        usuario.FechaEdicion    = hoy;
                        usuario.UsuarioEdicion  = idUsuario;

                        if (!string.IsNullOrWhiteSpace(modelo.ContraseñaCadena))
                        {
                            usuario.Contraseña = contraseña.Encriptar(modelo.ContraseñaCadena);
                        }

                        if (usuario.Activo && !modelo.Activo)
                        {
                            usuario.FechaEliminacion   = hoy;
                            usuario.UsuarioEliminacion = idUsuario;
                        }
                        usuario.Activo = modelo.Activo;

                        if (usuario.UsuarioRol != null)
                        {
                            db.UsuarioRol.RemoveRange(usuario.UsuarioRol);
                        }

                        foreach (var rolViewModel in modelo.Rol)
                        {
                            var rol = db.Rol.FirstOrDefault(x => x.Id == rolViewModel.Id);
                            db.UsuarioRol.Add(new UsuarioRol {
                                IdRol = (short)rol.Id, IdUsuario = usuario.Id
                            });
                        }
                    }
                    else
                    {
                        var usuario = new Usuario
                        {
                            Id              = modelo.Id,
                            Nombre          = modelo.Nombre,
                            ApellidoPaterno = modelo.ApellidoPaterno,
                            ApellidoMaterno = modelo.ApellidoMaterno,
                            Correo          = modelo.Correo,
                            FechaNacimiento = modelo.FechaNacimiento
                        };
                        usuario.Activo          = true;
                        usuario.Contraseña      = contraseña.Encriptar(modelo.ContraseñaCadena);
                        usuario.FechaCreacion   = hoy;
                        usuario.UsuarioCreacion = idUsuario;
                        db.Usuario.Add(usuario);
                        db.SaveChanges();

                        foreach (var rolViewModel in modelo.Rol)
                        {
                            var rol = db.Usuario.FirstOrDefault(x => x.Id == rolViewModel.Id);
                            db.UsuarioRol.Add(new UsuarioRol {
                                IdRol = (short)rol.Id, IdUsuario = usuario.Id
                            });
                        }
                    }

                    db.SaveChanges();
                    db.Database.CommitTransaction();

                    return(Ok(constantes.mensajes.registroGuardado));
                }
                catch (Exception ex)
                {
                    db.Database.RollbackTransaction();
                    return(BadRequest(ex.InnerException == null ? ex.Message : ex.InnerException.Message));
                }
            }
        }
        public IActionResult ObtenerProyectos(string nombre, string descripcion, bool todos, int numeroPaginacion, int cantidadPaginacion, string columnaOrdenamiento, bool reversaOrdenamiento)
        {
            using (var db = new smafacpyaContext())
            {
                var valido = ValidarLogin();
                if (valido != HttpStatusCode.OK)
                {
                    if (valido == HttpStatusCode.Unauthorized)
                    {
                        return(Unauthorized(constantes.mensajes.sesionExpirada));
                    }
                    else
                    {
                        return(BadRequest(constantes.mensajes.error));
                    }
                }
                var proyectos = db.Proyecto.AsNoTracking().AsQueryable();

                if (!string.IsNullOrWhiteSpace(nombre))
                {
                    proyectos = proyectos.Where(x => x.Nombre.Contains(nombre));
                }
                if (!string.IsNullOrWhiteSpace(descripcion))
                {
                    proyectos = proyectos.Where(x => x.Descripcion.Contains(descripcion));
                }
                if (!todos)
                {
                    proyectos = proyectos.Where(x => (bool)x.Activo);
                }

                switch (columnaOrdenamiento)
                {
                case "Nombre":
                    if (reversaOrdenamiento)
                    {
                        proyectos = proyectos.OrderByDescending(x => x.Nombre);
                    }
                    else
                    {
                        proyectos = proyectos.OrderBy(x => x.Nombre);
                    }
                    break;

                case "Descripcion":
                    if (reversaOrdenamiento)
                    {
                        proyectos = proyectos.OrderByDescending(x => x.Descripcion);
                    }
                    else
                    {
                        proyectos = proyectos.OrderBy(x => x.Descripcion);
                    }
                    break;

                case "Activo":
                    if (reversaOrdenamiento)
                    {
                        proyectos = proyectos.OrderByDescending(x => x.Activo);
                    }
                    else
                    {
                        proyectos = proyectos.OrderBy(x => x.Activo);
                    }
                    break;

                default:
                    if (reversaOrdenamiento)
                    {
                        proyectos = proyectos.OrderByDescending(x => x.Nombre);
                    }
                    else
                    {
                        proyectos = proyectos.OrderBy(x => x.Nombre);
                    }
                    break;
                }

                var lista = proyectos.Select(x => new ProyectoViewModel
                {
                    Id          = x.Id,
                    Nombre      = x.Nombre,
                    Descripcion = x.Descripcion,
                    Activo      = x.Activo
                });

                return(Ok(PaginacionConsulta.ObtenerPaginacion(lista, numeroPaginacion, cantidadPaginacion)));
            }
        }
Exemple #17
0
        public IActionResult GuardarReporte(ReporteViewModel modelo)
        {
            var hoy = DateTime.Now;

            using (var db = new smafacpyaContext())
            {
                var valido = ValidarLogin();
                if (valido != HttpStatusCode.OK)
                {
                    if (valido == HttpStatusCode.Unauthorized)
                    {
                        return(Unauthorized(constantes.mensajes.sesionExpirada));
                    }
                    else
                    {
                        return(BadRequest(constantes.mensajes.error));
                    }
                }
                try
                {
                    var idUsuario = ObtenerUsuarioId();
                    db.Database.BeginTransaction();
                    if (modelo.Id > 0)
                    {
                        var reporte = db.Reporte.FirstOrDefault(x => x.Id == modelo.Id);

                        reporte.IdMotivo               = modelo.IdMotivo;
                        reporte.IdProyecto             = modelo.IdProyecto;
                        reporte.FechaReporte           = modelo.FechaReporte;
                        reporte.ComentarioReporte      = modelo.ComentarioReporte;
                        reporte.UsuarioEdicion         = idUsuario;
                        reporte.FechaEdicion           = hoy;
                        reporte.IdUsuarioAsignacion    = idUsuario;
                        reporte.FechaAsignacion        = modelo.FechaAsignacion;
                        reporte.ComentarioAsignacion   = modelo.ComentarioAsignacion;
                        reporte.FechaFinalizacion      = modelo.FechaFinalizacion;
                        reporte.ComentarioFinalizacion = modelo.ComentarioFinalizacion;
                    }
                    else
                    {
                        var reporte = new Reporte
                        {
                            IdMotivo          = modelo.IdMotivo,
                            IdProyecto        = modelo.IdProyecto,
                            FechaReporte      = modelo.FechaReporte,
                            ComentarioReporte = modelo.ComentarioReporte,
                            IdEstatusReporte  = 1,
                            UsuarioCreacion   = idUsuario,
                            FechaCreacion     = hoy
                        };
                        db.Reporte.Add(reporte);
                        db.SaveChanges();
                        string formato = "RP00";
                        reporte.Folio = string.Concat(formato + reporte.Id.ToString());
                    }
                    db.SaveChanges();
                    db.Database.CommitTransaction();
                    return(Ok(constantes.mensajes.registroGuardado));
                }
                catch (Exception ex)
                {
                    db.Database.RollbackTransaction();
                    return(BadRequest(ex.InnerException == null ? ex.Message : ex.InnerException.Message));

                    throw;
                }
            }
        }
        public IActionResult ObtenerUsuarios(string nombre, string correo, bool todos, int numeroPaginacion, int cantidadPaginacion, string columnaOrdenamiento, bool reversaOrdenamiento)
        {
            using (var db = new smafacpyaContext())
            {
                var valido = ValidarLogin();
                if (valido != HttpStatusCode.OK)
                {
                    if (valido == HttpStatusCode.Unauthorized)
                    {
                        return(Unauthorized(constantes.mensajes.sesionExpirada));
                    }
                    else
                    {
                        return(BadRequest(constantes.mensajes.error));
                    }
                }
                var usuarios = db.Usuario.AsNoTracking().AsQueryable();

                if (!string.IsNullOrWhiteSpace(nombre))
                {
                    usuarios = usuarios.Where(x => x.Nombre.Contains(nombre) || x.ApellidoPaterno.Contains(nombre) || x.ApellidoMaterno.Contains(nombre));
                }
                if (!string.IsNullOrWhiteSpace(correo))
                {
                    usuarios = usuarios.Where(x => x.Correo.Contains(correo));
                }
                if (!todos)
                {
                    usuarios = usuarios.Where(x => x.Activo);
                }

                switch (columnaOrdenamiento)
                {
                case "Nombre":
                    if (reversaOrdenamiento)
                    {
                        usuarios = usuarios.OrderByDescending(x => x.Nombre).ThenBy(x => x.ApellidoPaterno).ThenBy(x => x.ApellidoMaterno);
                    }
                    else
                    {
                        usuarios = usuarios.OrderBy(x => x.Nombre).ThenByDescending(x => x.ApellidoPaterno).ThenByDescending(x => x.ApellidoMaterno);
                    }
                    break;

                case "Correo":
                    if (reversaOrdenamiento)
                    {
                        usuarios = usuarios.OrderByDescending(x => x.Correo);
                    }
                    else
                    {
                        usuarios = usuarios.OrderBy(x => x.Correo);
                    }
                    break;

                case "Activo":
                    if (reversaOrdenamiento)
                    {
                        usuarios = usuarios.OrderByDescending(x => x.Activo);
                    }
                    else
                    {
                        usuarios = usuarios.OrderBy(x => x.Activo);
                    }
                    break;

                case "FechaNacimiento":
                    if (reversaOrdenamiento)
                    {
                        usuarios = usuarios.OrderByDescending(x => x.FechaNacimiento);
                    }
                    else
                    {
                        usuarios = usuarios.OrderBy(x => x.FechaNacimiento);
                    }
                    break;

                default:
                    if (reversaOrdenamiento)
                    {
                        usuarios = usuarios.OrderByDescending(x => x.Nombre).ThenBy(x => x.ApellidoPaterno).ThenBy(x => x.ApellidoMaterno);
                    }
                    else
                    {
                        usuarios = usuarios.OrderBy(x => x.Nombre).ThenByDescending(x => x.ApellidoPaterno).ThenByDescending(x => x.ApellidoMaterno);
                    }
                    break;
                }

                var lista = usuarios.Select(x => new UsuarioViewModel
                {
                    Id              = x.Id,
                    Nombre          = x.Nombre,
                    ApellidoPaterno = x.ApellidoPaterno,
                    ApellidoMaterno = x.ApellidoMaterno,
                    Correo          = x.Correo,
                    FechaNacimiento = x.FechaNacimiento,
                    Activo          = x.Activo
                });

                return(Ok(PaginacionConsulta.ObtenerPaginacion(lista, numeroPaginacion, cantidadPaginacion)));
            }
        }
Exemple #19
0
        public IActionResult ObtenerReportesUsuario(string folio, int idEstatusReporte, int numeroPaginacion, int cantidadPaginacion, string columnaOrdenamiento, bool reversaOrdenamiento)
        {
            using (var db = new smafacpyaContext())
            {
                var idUsuario = ObtenerUsuarioId();
                var valido    = ValidarLogin();
                if (valido != HttpStatusCode.OK)
                {
                    if (valido == HttpStatusCode.Unauthorized)
                    {
                        return(Unauthorized(constantes.mensajes.sesionExpirada));
                    }
                    else
                    {
                        return(BadRequest(constantes.mensajes.error));
                    }
                }
                var reportes = db.Reporte.Include(x => x.IdMotivoNavigation).AsNoTracking().Where(x => x.IdUsuarioAsignacion == idUsuario);

                if (!string.IsNullOrWhiteSpace(folio))
                {
                    reportes = reportes.Where(x => x.Folio.Contains(folio));
                }
                if (idEstatusReporte > 0)
                {
                    reportes = reportes.Where(x => x.IdEstatusReporte == idEstatusReporte);
                }

                switch (columnaOrdenamiento)
                {
                case "Folio":
                    if (reversaOrdenamiento)
                    {
                        reportes = reportes.OrderByDescending(x => x.Folio);
                    }
                    else
                    {
                        reportes = reportes.OrderBy(x => x.Folio);
                    }
                    break;

                case "Motivo":
                    if (reversaOrdenamiento)
                    {
                        reportes = reportes.OrderByDescending(x => x.IdMotivoNavigation.Motivo1);
                    }
                    else
                    {
                        reportes = reportes.OrderBy(x => x.IdMotivoNavigation.Motivo1);
                    }
                    break;

                case "FechaReporte":
                    if (reversaOrdenamiento)
                    {
                        reportes = reportes.OrderByDescending(x => x.FechaReporte);
                    }
                    else
                    {
                        reportes = reportes.OrderBy(x => x.FechaReporte);
                    }
                    break;

                case "FechaFinalizacion":
                    if (reversaOrdenamiento)
                    {
                        reportes = reportes.OrderByDescending(x => x.FechaFinalizacion);
                    }
                    else
                    {
                        reportes = reportes.OrderBy(x => x.FechaFinalizacion);
                    }
                    break;

                case "EstatusReporte":
                    if (reversaOrdenamiento)
                    {
                        reportes = reportes.OrderByDescending(x => x.IdEstatusReporteNavigation.Nombre);
                    }
                    else
                    {
                        reportes = reportes.OrderBy(x => x.IdEstatusReporteNavigation.Nombre);
                    }
                    break;

                default:
                    if (reversaOrdenamiento)
                    {
                        reportes = reportes.OrderByDescending(x => x.Folio);
                    }
                    else
                    {
                        reportes = reportes.OrderBy(x => x.Folio);
                    }
                    break;
                }

                var lista = reportes.Select(x => new ReporteViewModel
                {
                    Id                = x.Id,
                    Folio             = x.Folio,
                    FechaReporte      = x.FechaReporte,
                    FechaFinalizacion = x.FechaFinalizacion,
                    Motivo            = x.IdMotivoNavigation == null ? new MotivoViewModel() : new MotivoViewModel
                    {
                        Id     = x.IdMotivoNavigation.Id,
                        Motivo = x.IdMotivoNavigation.Motivo1
                    },
                    Proyecto = x.IdProyectoNavigation == null ? new ProyectoViewModel() : new ProyectoViewModel
                    {
                        Id     = x.IdProyectoNavigation.Id,
                        Nombre = x.IdProyectoNavigation.Nombre
                    },
                    Estatus = x.IdEstatusReporteNavigation == null ? new EstatusViewModel() : new EstatusViewModel
                    {
                        Id     = x.IdEstatusReporteNavigation.Id,
                        Nombre = x.IdEstatusReporteNavigation.Nombre
                    }
                });

                return(Ok(PaginacionConsulta.ObtenerPaginacion(lista, numeroPaginacion, cantidadPaginacion)));
            }
        }
        public IActionResult ObtenerPermisos(string llavePantalla)
        {
            using (var db = new smafacpyaContext())
            {
                var idUsuario = ObtenerUsuarioId();
                var permisos  = new List <Permiso>();
                var usuario   = db.Usuario.Include(x => x.UsuarioRol).FirstOrDefault(x => x.Id == idUsuario);
                var pantalla  = db.Pantalla.FirstOrDefault(x => x.Llave.Equals(llavePantalla));
                var valido    = ValidarLogin();

                if (valido != HttpStatusCode.OK)
                {
                    if (valido == HttpStatusCode.Unauthorized)
                    {
                        return(Unauthorized(constantes.mensajes.sesionExpirada));
                    }
                    else
                    {
                        return(BadRequest(constantes.mensajes.error));
                    }
                }

                if (pantalla == null)
                {
                    return(BadRequest(constantes.seguridad.mensajes.pantallaNoEncontrado));
                }
                if (usuario == null)
                {
                    return(BadRequest(constantes.seguridad.mensajes.usuarioNoEncontrado));
                }
                if (usuario.UsuarioRol == null)
                {
                    return(BadRequest(constantes.seguridad.mensajes.rolNoEncontrado));
                }

                var idPantalla = pantalla.Id;
                var idRol      = usuario.UsuarioRol.Select(x => x.IdRol).ToArray();
                if (idRol == null)
                {
                    return(BadRequest(constantes.seguridad.mensajes.rolNoEncontrado));
                }
                if (idRol.Length == 0)
                {
                    return(BadRequest(constantes.seguridad.mensajes.rolNoEncontrado));
                }

                permisos = db.RolModuloPantallaPermiso.
                           Include(x => x.IdPermisoNavigation).
                           Where(x => idRol.Contains(x.IdRol) && x.IdPantalla == idPantalla).
                           Select(x => x.IdPermisoNavigation).ToList();
                if (permisos == null)
                {
                    permisos = new List <Permiso>();
                }

                var menu = ObtenerMenuPorUsuario(ObtenerUsuarioId());

                return(Ok(new
                {
                    permisos,
                    menu
                }));
            }
        }
        public IActionResult Login([FromBody] LoginViewModel modelo)
        {
            using (var db = new smafacpyaContext())
            {
                db.Database.BeginTransaction();
                try
                {
                    var contraseñaHelper = new Contraseña();

                    if (string.IsNullOrWhiteSpace(modelo.Correo))
                    {
                        return(BadRequest(constantes.seguridad.mensajes.correoVacio));
                    }

                    var usuarios = db.Usuario.AsNoTracking().Include(x => x.UsuarioRol).Where(x => x.Correo.Trim().Equals(modelo.Correo.Trim()) && x.Activo);

                    if (usuarios == null)
                    {
                        return(BadRequest(constantes.seguridad.mensajes.usuarioNoEncontrado));
                    }
                    if (usuarios.Count() == 0)
                    {
                        return(BadRequest(constantes.seguridad.mensajes.usuarioNoEncontrado));
                    }

                    var usuario    = usuarios.FirstOrDefault();
                    var contraseña = contraseñaHelper.Encriptar(modelo.Contraseña);

                    if (!contraseñaHelper.CompararContraseña(contraseña, usuario.Contraseña))
                    {
                        return(BadRequest(constantes.seguridad.mensajes.usuarioContrasenaIncorrecto));
                    }

                    var logins   = db.UsuarioLogin.Where(x => x.Activo && x.IdUsuario == usuario.Id);
                    var hoy      = DateTime.Now;
                    var vigencia = DateTime.Now.AddMonths(1);
                    var idLogin  = Guid.NewGuid();
                    var roles    = new List <Rol>();
                    var menu     = ObtenerMenuPorUsuario(usuario.Id);

                    foreach (var login in logins)
                    {
                        login.Activo = false;
                    }

                    var loginNuevo = new UsuarioLogin
                    {
                        Id            = idLogin,
                        IdUsuario     = usuario.Id,
                        FechaCreacion = hoy,
                        FechaVigencia = vigencia,
                        Activo        = true
                    };

                    if (usuario.UsuarioRol != null)
                    {
                        foreach (var ur in usuario.UsuarioRol)
                        {
                            roles.Add(db.Rol.FirstOrDefault(x => x.Id == ur.IdRol));
                        }
                    }

                    db.UsuarioLogin.Add(loginNuevo);
                    var token = GenerarToken(usuario, idLogin, roles, vigencia);
                    db.SaveChanges();
                    db.Database.CommitTransaction();

                    var usuarioViewModel = new UsuarioViewModel
                    {
                        Correo = usuario.Correo
                    };
                    var rolViewModel = roles.Select(x => new RolViewModel
                    {
                        Id          = x.Id,
                        Nombre      = x.Nombre,
                        Descripcion = x.Descripcion,
                        Activo      = x.Activo.HasValue ? (bool)x.Activo : false
                    });
                    return(Ok(new
                    {
                        Usuario = usuarioViewModel,
                        Token = token,
                        Roles = rolViewModel,
                        Menu = menu
                    }));
                }
                catch (Exception ex)
                {
                    db.Database.RollbackTransaction();
                    return(BadRequest(ex.InnerException == null ? ex.Message : ex.InnerException.Message));
                }
            }
        }
        public IActionResult GuardarRol(RolViewModel modelo)
        {
            var hoy = DateTime.Now;

            using (var db = new smafacpyaContext())
            {
                var valido = ValidarLogin();
                if (valido != HttpStatusCode.OK)
                {
                    if (valido == HttpStatusCode.Unauthorized)
                    {
                        return(Unauthorized(constantes.mensajes.sesionExpirada));
                    }
                    else
                    {
                        return(BadRequest(constantes.mensajes.error));
                    }
                }
                try
                {
                    var idUsuario = ObtenerUsuarioId();
                    db.Database.BeginTransaction();
                    var contraseña = new Contraseña();

                    if (modelo.Id > 0)
                    {
                        var rol = db.Rol.Include(x => x.RolModuloPantallaPermiso).FirstOrDefault(x => x.Id == modelo.Id);
                        rol.Nombre         = modelo.Nombre;
                        rol.Descripcion    = modelo.Descripcion;
                        rol.FechaEdicion   = hoy;
                        rol.UsuarioEdicion = idUsuario;

                        if ((bool)rol.Activo && !modelo.Activo)
                        {
                            rol.FechaEliminacion   = hoy;
                            rol.UsuarioEliminacion = idUsuario;
                        }
                        rol.Activo = modelo.Activo;

                        if (rol.RolModuloPantallaPermiso != null)
                        {
                            db.RolModuloPantallaPermiso.RemoveRange(rol.RolModuloPantallaPermiso);
                        }

                        if (modelo.Menu != null)
                        {
                            foreach (var m in modelo.Menu)
                            {
                                var menu = db.Modulo.FirstOrDefault(x => x.Id == m.IdModulo);
                                if (m.Pantallas != null)
                                {
                                    foreach (var p in m.Pantallas)
                                    {
                                        if (p.Permisos != null)
                                        {
                                            foreach (var per in p.Permisos)
                                            {
                                                db.RolModuloPantallaPermiso.Add(new RolModuloPantallaPermiso
                                                {
                                                    IdRol      = rol.Id,
                                                    IdModulo   = (short)m.IdModulo,
                                                    IdPantalla = (short)p.IdPantalla,
                                                    IdPermiso  = per.IdPermiso
                                                });
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        var rol = new Rol
                        {
                            Id          = (short)modelo.Id,
                            Nombre      = modelo.Nombre,
                            Descripcion = modelo.Descripcion
                        };
                        rol.Activo          = true;
                        rol.FechaCreacion   = hoy;
                        rol.UsuarioCreacion = idUsuario;
                        db.Rol.Add(rol);
                        db.SaveChanges();

                        if (modelo.Menu != null)
                        {
                            foreach (var m in modelo.Menu)
                            {
                                var menu = db.Modulo.FirstOrDefault(x => x.Id == m.IdModulo);
                                if (m.Pantallas != null)
                                {
                                    foreach (var p in m.Pantallas)
                                    {
                                        if (p.Permisos != null)
                                        {
                                            foreach (var per in p.Permisos)
                                            {
                                                db.RolModuloPantallaPermiso.Add(new RolModuloPantallaPermiso
                                                {
                                                    IdRol      = rol.Id,
                                                    IdModulo   = (short)m.IdModulo,
                                                    IdPantalla = (short)p.IdPantalla,
                                                    IdPermiso  = per.IdPermiso
                                                });
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }

                    db.SaveChanges();
                    db.Database.CommitTransaction();

                    return(Ok(constantes.mensajes.registroGuardado));
                }
                catch (Exception ex)
                {
                    db.Database.RollbackTransaction();
                    return(BadRequest(ex.InnerException == null ? ex.Message : ex.InnerException.Message));
                }
            }
        }