private void CrearObjetoUsuario(UserRolesUnidadCategoria usuario) { usuario.Id = usuario.Id; usuario.Nombre = usuario.Nombre; usuario.PrimerApellido = usuario.PrimerApellido; usuario.SegundoApellido = usuario.SegundoApellido; usuario.Email = usuario.Email; usuario.FechaIngreso = usuario.FechaIngreso; usuario.FechaCreacion = usuario.FechaCreacion; usuario.EstaActivo = usuario.EstaActivo; usuario.PhoneNumber = usuario.PhoneNumber; usuario.Foto = usuario.Foto; usuario.FotoRuta = usuario.FotoRuta; usuario.Categoria = _userServicio.ObtenerUsuarioPorId(usuario.Id).Categoria; usuario.Role = _userServicio.ObtenerUsuarioPorId(usuario.Id).Role; usuario.Categorias = usuario.Role != null? _categoriaServicio.ObtenerCategoriasPorRoleId(usuario.Role.Id).ToList() : new List <Categoria>(); usuario.UnidadTecnica = _userServicio.ObtenerUsuarioPorId(usuario.Id).UnidadTecnica; usuario.Roles = _roleServicio.GetAllRoles().ToList(); usuario.UnidadesTecnicas = _unidadTecnicaServicio.ObtenerUnidadesTecnicas().ToList(); usuario.SelectedCategoriaId = usuario.SelectedCategoriaId; usuario.SelectedRoleId = usuario.SelectedRoleId; usuario.SelectedUnidadTecnicaId = usuario.SelectedUnidadTecnicaId; }
public async Task <ActionResult> Create(UserRolesUnidadCategoria user) { if (!ModelState.IsValid) { CrearObjetoUsuario(user); return(View(user)); } try { var succeeded = await _userServicio.Crear(user); if (succeeded) { return(RedirectToAction("Index")); } ModelState.AddModelError("", "Hubo un problema al tratar de crear al usuario. Por favor contacte a soporte si sigue teniendo este problema."); } catch (Exception ex) { if (ex.Message.Contains("Ya existe")) { ModelState.AddModelError("", ex.Message); } else { ModelState.AddModelError("", "Hubo un problema al tratar de crear al usuario. Por favor contacte a soporte si sigue teniendo este problema."); } } CrearObjetoUsuario(user); return(View(user)); }
public ActionResult Editar(UserRolesUnidadCategoria usuario) { if (!ModelState.IsValid) { CrearObjetoUsuario(usuario); return(View(usuario)); } var resultado = _userServicio.ActualizarUsuario(usuario.Id, usuario); if (resultado) { return(RedirectToAction("Index")); } CrearObjetoUsuario(usuario); return(View(usuario)); }
private void VerificarExistenciaJefaturas(UserRolesUnidadCategoria usuario) { var jefaturaRole = _roleService.ObtenerRolPorNombre("Jefatura"); var directorRole = _roleService.ObtenerRolPorNombre("Director"); if (usuario.SelectedRoleId == jefaturaRole.Id) { var jefe = ObtenerJefePorUnidadTecnica(Convert.ToInt32(usuario.SelectedUnidadTecnicaId)); if (jefe != null) { throw new Exception("Ya existe el puesto de jefatura para la unidad técnica seleccionada"); } } if (usuario.SelectedRoleId == directorRole.Id) { var directorGeneral = ObtenerDirectorGeneral(); var directorAdministrativo = ObtenerDirectorAdministrativo(); if (directorGeneral != null) { if (directorGeneral.Categoria.CategoriaId == Convert.ToInt32(usuario.SelectedCategoriaId)) { throw new Exception("Ya existe el puesto de director general"); } } if (directorAdministrativo != null) { if (directorAdministrativo.Categoria.CategoriaId == Convert.ToInt32(usuario.SelectedCategoriaId)) { throw new Exception("Ya existe el puesto de director administrativo"); } } } }
public async Task <bool> Crear(UserRolesUnidadCategoria usuario) { VerificarExistenciaJefaturas(usuario); try { var role = await _roleManager.FindByIdAsync(usuario.SelectedRoleId); var contrasenaTemporal = Membership.GeneratePassword(15, 2); var newUser = new ApplicationUser() { Id = usuario.Id, Nombre = usuario.Nombre, PrimerApellido = usuario.PrimerApellido, SegundoApellido = usuario.SegundoApellido, Email = usuario.Email, PhoneNumber = usuario.PhoneNumber, UserName = usuario.Email, FechaIngreso = usuario.FechaIngreso, FechaCreacion = DateTime.Now, UnidadTecnicaId = Convert.ToInt32(usuario.SelectedUnidadTecnicaId), CategoriaId = Convert.ToInt32(usuario.SelectedCategoriaId), EstaActivo = true, EsContrasenaTemporal = true, FotoRuta = usuario.Foto != null ? usuario.Foto.FileName : null, SaldoDiasEmpleado = new SaldoDiasPorEmpleado() { Cedula = usuario.Id, SaldoDiasDisponibles = 0, UltimaActualizacion = DateTime.Now } }; var result = await _userManager.CreateAsync(newUser, contrasenaTemporal); if (result.Succeeded) { var userSaved = await _userManager.FindByEmailAsync(usuario.Email); await _userManager.AddToRoleAsync(userSaved.Id.ToString(), role.Name); if (usuario.EsSuperusuario) { await _userManager.AddToRoleAsync(userSaved.Id.ToString(), "Manager"); } // Guardar foto de usuario, en caso que se haya seleccionado alguna GuardarFoto(usuario.Foto); // Envio contrasena temporal al correo del usuario try { await _userManager.SendEmailAsync(userSaved.Id, "Contraseña Temporal", $"Su contraseña temporal para el sistema de solicitud de vacaciones es: <strong>{ contrasenaTemporal }</strong>"); } catch (Exception ex) { Console.WriteLine(ex); throw; } return(true); } return(false); } catch (Exception ex) { return(false); } }
public bool ActualizarUsuario(string id, UserRolesUnidadCategoria usuario) { try { string fotoRuta = usuario.FotoRuta; if (usuario.Foto != null) { fotoRuta = usuario.Foto.FileName; } var user = _userManager.FindById(id); if (user == null) { return(false); } // Guardar foto de usuario, en caso que se haya seleccionado alguna GuardarFoto(usuario.Foto); // Reemplazo el rol del usuario en caso que se haya seleccionado uno diferente var roleId = user.Roles.FirstOrDefault().RoleId; var role = _roleManager.Roles.FirstOrDefault(r => r.Id == roleId); var newRole = _roleManager.Roles.FirstOrDefault(r => r.Id == usuario.SelectedRoleId); if (newRole.Id != role.Id) { _userManager.RemoveFromRole(user.Id, role.Name); _userManager.AddToRole(user.Id, newRole.Name); } if (usuario.EsSuperusuario && !_userManager.IsInRole(user.Id, "Manager")) { _userManager.AddToRole(user.Id, "Manager"); } if (!usuario.EsSuperusuario && _userManager.IsInRole(user.Id, "Manager")) { _userManager.RemoveFromRole(user.Id, "Manager"); } // Actualizo usuario con nuevos datos user.Id = usuario.Id; user.Nombre = usuario.Nombre; user.PrimerApellido = usuario.PrimerApellido; user.SegundoApellido = usuario.SegundoApellido; user.Email = usuario.Email; user.UserName = usuario.Email; user.PhoneNumber = usuario.PhoneNumber; user.FechaIngreso = usuario.FechaIngreso; user.UnidadTecnicaId = Convert.ToInt32(usuario.SelectedUnidadTecnicaId); user.CategoriaId = Convert.ToInt32(usuario.SelectedCategoriaId); user.EstaActivo = usuario.EstaActivo; user.FotoRuta = string.IsNullOrEmpty(fotoRuta) ? null : fotoRuta; user.SaldoDiasEmpleado.SaldoDiasDisponibles = usuario.SaldoDiasDisponibles; var resultado = _userManager.Update(user); if (resultado.Succeeded) { return(true); } return(false); } catch (Exception ex) { return(false); } }