示例#1
0
        private ActionResult ExportDataExcel(List <ApplicationUser> usuarios)
        {
            using (ExcelPackage package = new ExcelPackage())
            {
                var ws = package.Workbook.Worksheets.Add("Usuarios");

                int rowHeader = 1;
                int i         = rowHeader + 1;

                const int colUsuario = 1;
                const int colRol     = 2;
                const int colEmpresa = 3;

                ws.Cells[rowHeader, colUsuario].Value = "Usuario";
                ws.Cells[rowHeader, colRol].Value     = "Rol";
                ws.Cells[rowHeader, colEmpresa].Value = "Empresa";

                var bgColor = Color.White;

                foreach (var u in usuarios)
                {
                    ws.Cells[i, colUsuario].Value = u.Email;
                    ws.Cells[i, colRol].Value     = UsuarioHelper.GetInstance().ObtenerRoleName(u.Roles.ElementAt(0).RoleId);
                    ws.Cells[i, colEmpresa].Value = UsuarioHelper.GetInstance().ObtenerNombreEmpresaAsociada(u.Email);

                    //se seleccionan las columnas con datos del capacitado para setear el background color.
                    if (bgColor != Color.White)
                    {
                        ws.Cells[i, colUsuario, i, colEmpresa].Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
                        ws.Cells[i, colUsuario, i, colEmpresa].Style.Fill.BackgroundColor.SetColor(bgColor);
                    }

                    //se pone un borde alrededor del renglón
                    ws.Cells[i, colUsuario, i, colEmpresa].Style.Border.BorderAround(OfficeOpenXml.Style.ExcelBorderStyle.Thin);

                    bgColor = bgColor == Color.White ? Color.WhiteSmoke : Color.White;

                    i++;
                }

                ws.Cells[ws.Dimension.Address].AutoFitColumns();

                var stream = new MemoryStream();
                package.SaveAs(stream);

                string fileName    = "usuarios.xlsx";
                string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

                stream.Position = 0;
                return(File(stream, contentType, fileName));
            }
        }
示例#2
0
        public ActionResult Edit(String id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var usuario = db.Users.Where(u => u.Id == id).FirstOrDefault();

            if (usuario == null)
            {
                return(HttpNotFound());
            }

            string rolActual = UsuarioHelper.GetInstance().ObtenerRoleName(usuario.Roles.ElementAt(0).RoleId);

            ViewBag.RoleName = new SelectList(db.Roles.OrderBy(r => r.Name).ToList(), "Name", "Name", rolActual);

            if (rolActual == "ConsultaEmpresa")
            {
                ViewBag.EmpresaID = new SelectList(dbcursos.Empresas.OrderBy(e => e.NombreFantasia).ToList(), "EmpresaID", "NombreFantasia", UsuarioHelper.GetInstance().ObtenerEmpresaAsociada(usuario.UserName).EmpresaID);
            }
            else
            {
                ViewBag.EmpresaID = new SelectList(dbcursos.Empresas.OrderBy(e => e.NombreFantasia).ToList(), "EmpresaID", "NombreFantasia");
            }

            if (rolActual == "InstructorExterno")
            {
                ViewBag.InstructorID = new SelectList(dbcursos.Instructores.Where(i => i.Activo).OrderBy(i => i.Apellido).OrderBy(i => i.Nombre).ToList(), "InstructorID", "ApellidoNombre", UsuarioHelper.GetInstance().ObtenerInstructorAsociado(usuario.UserName).InstructorID);
            }
            else
            {
                ViewBag.InstructorID = new SelectList(dbcursos.Instructores.Where(i => i.Activo).OrderBy(i => i.Apellido).OrderBy(i => i.Nombre).ToList(), "InstructorID", "ApellidoNombre");
            }

            ViewBag.PermitirInscripcionesExternas = false;

            foreach (var ur in usuario.Roles)
            {
                var role = db.Roles.Where(r => r.Id == ur.RoleId).FirstOrDefault();

                if (role.Name == "InscripcionesExternas")
                {
                    ViewBag.PermitirInscripcionesExternas = true;
                    break;
                }
            }

            return(View(usuario));
        }
示例#3
0
        public ActionResult DeleteConfirmed(String id)
        {
            var usuario = db.Users.Where(u => u.Id == id).FirstOrDefault();

            //si era un usuario de tipo ConsultaEmpresa se debe remover la asociación con la empresa
            if (UsuarioHelper.GetInstance().ObtenerRoleName(usuario.Roles.ElementAt(0).RoleId) == "ConsultaEmpresa")
            {
                RemoverAsociacionUsuarioAEmpresa(usuario.UserName);
            }

            if (UsuarioHelper.GetInstance().ObtenerRoleName(usuario.Roles.ElementAt(0).RoleId) == "InstructorExterno")
            {
                RemoverAsociacionUsuarioInstructor(usuario.UserName);
            }

            db.Users.Remove(usuario);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
示例#4
0
        public ActionResult Create(int?jornadaId)
        {
            //si el capacitado está siendo creado por un usuario con perfil para ConsultaEmpresa con InscripcionesExternas, solo se puede asignar la jornada a la empresa del usuario
            if (System.Web.HttpContext.Current.User.IsInRole("ConsultaEmpresa") && System.Web.HttpContext.Current.User.IsInRole("InscripcionesExternas"))
            {
                var empresa = UsuarioHelper.GetInstance().ObtenerEmpresaAsociada(System.Web.HttpContext.Current.User.Identity.Name);

                ViewBag.EmpresaID             = empresa.EmpresaID;
                ViewBag.EmpresaNombreFantasia = empresa.NombreFantasia;
            }
            else
            {
                ViewBag.EmpresaID = new SelectList(db.Empresas.OrderBy(e => e.NombreFantasia).ToList(), "EmpresaID", "NombreFantasia");
            }

            ViewBag.TipoDocumentoID = new SelectList(db.TiposDocumento.ToList(), "TipoDocumentoID", "Descripcion");

            ViewBag.JornadaId = jornadaId;

            Jornada j = null;

            if (jornadaId != null)
            {
                j = db.Jornada.Find(jornadaId);
            }

            if (j != null)
            {
                ViewBag.JornadaIdentificacionCompleta = j.JornadaIdentificacionCompleta;
            }
            else
            {
                ViewBag.JornadaIdentificacionCompleta = string.Empty;
            }

            return(View());
        }
示例#5
0
        public async Task <ActionResult> Edit()
        {
            string     id = Request["Id"];
            string     roleNameEditado   = Request["RoleName"];
            Empresa    empresaEditada    = dbcursos.Empresas.Find(int.Parse(Request["EmpresaID"]));
            Instructor instructorEditado = dbcursos.Instructores.Find(int.Parse(Request["InstructorID"]));

            //https://blog.productiveedge.com/asp-net-mvc-checkboxfor-explained
            bool permitirInscripcionesExternas = Request["PermitirInscripcionesExternas"].Contains("true") ? true : false;

            var usuario = db.Users.Where(u => u.Id == id).FirstOrDefault();

            bool usuarioPuedeInscripcionesExternas = UsuarioHelper.GetInstance().UsuarioTieneRol(usuario.UserName, "InscripcionesExternas");

            string roleNameActual   = UsuarioHelper.GetInstance().ObtenerRoleName(usuario.Roles.ElementAt(0).RoleId);
            var    empresaActual    = UsuarioHelper.GetInstance().ObtenerEmpresaAsociada(usuario.UserName);
            var    instructorActual = UsuarioHelper.GetInstance().ObtenerInstructorAsociado(usuario.UserName);

            bool quitarAsociacionEmpresa    = false;
            bool quitarAsociacionInstructor = false;

            //si se modificó el rol del usuario
            if (roleNameActual != roleNameEditado)
            {
                if (roleNameActual == "ConsultaEmpresa") //si antes el usuario estaba asociado a una empresa, se debe remover la asociación a esta empresa
                {
                    quitarAsociacionEmpresa = true;
                }

                if (roleNameActual == "InstructorExterno")
                {
                    quitarAsociacionInstructor = true;
                }

                this.UserManager.RemoveFromRole(id, roleNameActual);
                await this.UserManager.AddToRoleAsync(id, roleNameEditado);
            }

            //si está seleccionada la opción "PermitirInscripcionesExternas" y el usuario editado no tenía el rol asociado, se le agrega el rol "InscripcionesExternas"
            if (permitirInscripcionesExternas)
            {
                if (!usuarioPuedeInscripcionesExternas && roleNameEditado == "ConsultaEmpresa")
                {
                    await this.UserManager.AddToRoleAsync(id, "InscripcionesExternas");
                }
            }
            else //si no está seleccionada la opción "PermitirInscripcionesExternas" y el usuario editado no tenía el rol asociado anteriormente, se retira el rol
            {
                if (usuarioPuedeInscripcionesExternas)
                {
                    this.UserManager.RemoveFromRole(id, "InscripcionesExternas");
                }
            }

            int empresaActualID = -1;

            if (empresaActual != null)
            {
                empresaActualID = empresaActual.EmpresaID;
            }

            int empresaEditadaID = -1;

            if (empresaEditada != null)
            {
                empresaEditadaID = empresaEditada.EmpresaID;
            }

            //si el usuario estaba asociado a una empresa y se cambió esa empresa, o si tenía el rol "ConsultaEmpresa" y cambió por otro
            if ((empresaActualID != -1 && empresaActualID != empresaEditadaID) || quitarAsociacionEmpresa)
            {
                this.RemoverAsociacionUsuarioAEmpresa(usuario.UserName);
            }

            if (roleNameEditado == "ConsultaEmpresa")
            {
                if (empresaActualID != empresaEditadaID)
                {
                    this.AsociarUsuarioAEmpresa(empresaEditadaID, usuario.UserName);
                }
            }

            int instructorActualID = -1;

            if (instructorActual != null)
            {
                instructorActualID = instructorActual.InstructorID;
            }

            int instructorEditadoID = -1;

            if (instructorEditado != null)
            {
                instructorEditadoID = instructorEditado.InstructorID;
            }

            //si el usuario estaba asociado a una empresa y se cambió esa empresa, o si tenía el rol "ConsultaEmpresa" y cambió por otro
            if ((instructorActualID != -1 && instructorActualID != instructorEditadoID) || quitarAsociacionInstructor)
            {
                this.RemoverAsociacionUsuarioInstructor(usuario.UserName);
            }

            if (roleNameEditado == "InstructorExterno")
            {
                if (instructorActualID != instructorEditadoID)
                {
                    this.AsociarUsuarioAInstructor(instructorEditadoID, usuario.UserName);
                }
            }

            dbcursos.SaveChanges();

            return(RedirectToAction("Index"));
        }