public UsuarioQuery actualizarUsuario(UsuarioCmd usuario)
 {
     throw new NotImplementedException();
 }
        public UsuarioQuery registrarUsuario(UsuarioCmd usuario)
        {
            UsuarioQuery usrQ = null;

            try
            {
                if (!usuario.EsValido())
                {
                    throw new Exception("La información no es válida");
                }

                if ((_ufw.RepositoryQueryUsuario().Find(new UsuarioSpecification(usuario.Usuario, usuario.Email)).ToList().Count > 0))
                {
                    throw new Exception("Ya existe un usuario registrado con el Usuario/Email");
                }

                if ((_ufw.RepositoryQueryTipoAuth().Find(new TipoAuthSpecification(usuario.IdTipoAuth)).ToList().Count == 0))
                {
                    throw new Exception("El Tipo de Autenticación es inválido");
                }

                Usuario usrE = new Usuario();
                usrE.UserName       = usuario.Usuario;
                usrE.Nombres        = usuario.Nombres;
                usrE.Apellidos      = usuario.Apellidos;
                usrE.Identificacion = usuario.Identificacion;
                usrE.PhoneNumber    = usuario.TelefonoMovil;
                usrE.Email          = usuario.Email;
                usrE.IdTipoAuth     = usuario.IdTipoAuth;
                usrE.Organizacion   = usuario.Organizacion;
                usrE.Cargo          = usuario.Cargo;
                usrE.Description    = usuario.Description;
                usrE.EsExterno      = usuario.EsExterno;

                _ufw.BeginTransaction();
                _ufw.UserIdentityRepository().CreateUser(usrE, usuario.Contrasena);
                _ufw.SaveChanges();
                _ufw.Commit();

                usrE = _ufw.RepositoryQueryUsuario().Find(new UsuarioSpecification(usrE.UserName)).FirstOrDefault();

                usrQ                   = new UsuarioQuery();
                usrQ.IdUsuario         = usrE.Id;
                usrQ.Usuario           = usrE.UserName;
                usrQ.Nombres           = usrE.Nombres;
                usrQ.Apellidos         = usrE.Apellidos;
                usrQ.Identificacion    = usrE.Identificacion;
                usrQ.TelefonoMovil     = usrE.PhoneNumber;
                usrQ.Email             = usrE.Email;
                usrQ.IdTipoAuth        = usrE.IdTipoAuth;
                usrQ.TipoAutenticacion = (usrE.TipoAutenticacion != null) ? usrE.TipoAutenticacion.Autenticacion : "";
                usrQ.Organizacion      = usrE.Organizacion;
                usrQ.Cargo             = usrE.Cargo;
                usrQ.Description       = usrE.Description;
                usrQ.EsExterno         = usrE.EsExterno;


                //usrE.Roles = new List<Rol   >();

                //foreach (Rol r in usrE.Roles)
                //{
                //    RolQuery rolQ = new RolQuery();
                //    rolQ.Id = r.Id;
                //    rolQ.Nombre = r.Name;
                //    rolQ.Descripcion = r.Descripcion;
                //    usrQ.Roles.Add(rolQ);
                //}
            }
            catch (Exception e)
            {
                _ufw.Rollback();
                throw e;
            }


            return(usrQ);
        }
 private IEnumerable <string> GetErrors(UsuarioCmd request) =>
 request.ValidationResult.Errors.Select(err => err.ErrorMessage);