Exemple #1
0
        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;
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        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");
                    }
                }
            }
        }
Exemple #5
0
        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);
            }
        }
Exemple #6
0
        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);
            }
        }