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)); } }
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)); }
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")); }
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()); }
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")); }