public async Task <IActionResult> Create([FromBody] UserDto user)
        {
            var validar = await userRepository.Find(x => x.Correo == user.Correo);

            if (validar != null)
            {
                return(BadRequest("El correo ya existe"));
            }

            user.Password = user.NroIdentificacion.ToString();

            byte[] passwordHash, passwordSalt;

            Utils.CreatePasswordHash(user.Password, out passwordHash, out passwordSalt);

            var usuario = new User
            {
                Id = Guid.NewGuid(),
                NroIdentificacion = user.NroIdentificacion,
                Nombres           = user.Nombres,
                Apellidos         = user.Apellidos,
                Correo            = user.Correo,
                Telefono          = user.Telefono,
                FechaCreacion     = DateTime.Now,
                FechaModificacion = DateTime.Now,
                PasswordHash      = passwordHash,
                PasswordSalt      = passwordSalt,
                Activo            = user.Activo,
                CambioPassword    = false
            };

            usuario = await userRepository.Add(usuario);

            var objCambioPassword = await cambioPasswordRepository.Add(new CambioPassword
            {
                Id = Guid.NewGuid(),
                MinutosExpiracion = 60,
                Usuario           = usuario,
                Activo            = true,
                FechaCreacion     = DateTime.Now,
                FechaModificacion = DateTime.Now
            });

            SendEmailUtils.SendEmail(usuario.Correo, $"({usuario.Nombres} {usuario.Apellidos})", objCambioPassword.Id.ToString());

            return(Ok());
        }
        public async Task <IActionResult> Create([FromBody] UserDto user)
        {
            var result = await userRepository.Find(x => x.Correo == user.Correo);

            if (result != null)
            {
                return(BadRequest("El correo ya existe"));
            }

            user.Password = user.NroIdentificacion.ToString();

            byte[] passwordHash, passwordSalt;

            UtilsPassword.CreatePasswordHash(user.Password, out passwordHash, out passwordSalt);

            //var usuario = new User
            //{
            //    Id = Guid.NewGuid(),
            //    NroIdentificacion = user.NroIdentificacion,
            //    Nombres = user.Nombres,
            //    Apellidos = user.Apellidos,
            //    Correo = user.Correo,
            //    Telefono = user.Telefono,
            //    PasswordHash = passwordHash,
            //    PasswordSalt = passwordSalt,
            //    Activo = user.Activo,
            //    CambioPassword = false,
            //    FechaCreacion = DateTime.Now,
            //    FechaModificacion = DateTime.Now
            //};

            var usuario = mapper.Map <User>(user);

            usuario.Id                = Guid.NewGuid();
            usuario.FechaCreacion     = DateTime.Now;
            usuario.FechaModificacion = DateTime.Now;
            usuario.PasswordHash      = passwordHash;
            usuario.PasswordSalt      = passwordSalt;
            usuario.CambioPassword    = false;

            usuario.Rol = ValidarRol(usuario.Rol);

            usuario = await userRepository.Add(usuario);

            var objCambioPassword = await cambioPasswordRepository.Add(new CambioPassword
            {
                Id = Guid.NewGuid(),
                MinutosExpiracion = 120,
                Usuario           = usuario,
                Activo            = true,
                FechaCreacion     = DateTime.Now,
                FechaModificacion = DateTime.Now
            });

            var sender         = configuration.GetSection("Settings").GetSection("EnvioCorreo").GetSection("Sender").Value;
            var senderPassword = configuration.GetSection("Settings").GetSection("EnvioCorreo").GetSection("Password").Value;

            UtilsSendEmail.SendEmailChangePassword(usuario.Correo, $"({usuario.Nombres} {usuario.Apellidos})", objCambioPassword.Id.ToString(), sender, senderPassword);

            return(Ok());
        }