//
        // Mudar Tag de uma Relação
        //
        public static bool MudarTagRelacao(string username1, string username2, string tagS)
        {
            Ligacao ligacao = Ligacao.LoadByUserNames(username1, username2);

            if (ligacao != null)
            {
                Tag tag = Tag.LoadTagByNome(tagS);

                if (tag != null)
                {
                    ligacao.IdTagRelacao = tag.ID;

                    return(true);
                }
            }

            return(false);
        }
        //
        //
        //
        public static void RefreshTagsUser(IList <string> tagsAnteriores, IList <string> tagsActuais, string username)
        {
            IList <int> idAdd = new List <int>();
            IList <int> idRem = new List <int>();

            if (tagsActuais.Count == 1 && tagsActuais[0].Equals(""))
            {
                tagsActuais.Remove(tagsActuais[0]);
            }

            IList <string> list = new List <string>(tagsActuais);

            foreach (string tagN in list)
            {
                Tag tag = Tag.LoadTagByNome(tagN);
                if (tagsAnteriores.Contains(tagN))
                {
                    tagsAnteriores.Remove(tagN);
                    tagsActuais.Remove(tagN);
                }
                else
                {
                    tag.Ocorrencia(1);
                    idAdd.Add(tag.ID);
                }
            }

            foreach (string tagR in tagsAnteriores)
            {
                Tag tag = Tag.LoadTagByNome(tagR);
                tag.Ocorrencia(-1);
                idRem.Add(tag.ID);
                var x = new IA_AR.Utils();
                x.deleteFromTag(tag.Nome.ToLower(), username.ToLower());
            }

            string userId = User.LoadByUserName(username).UniqueIdentifierUserId;

            AdicionarTagsUser(userId, idAdd);
            RemoverTagsUser(userId, idRem);
        }
        // Métodos
        //
        //
        // Adicionar uma Tag na Bd, havendo a possibilidade de retornar null
        public static Tag AdicionarTag(string nome, string username)
        {
            Tag tag = Tag.LoadTagByNome(nome);

            if (tag == null)
            {
                var proxy = new ModuloIA.ModuloIaClient();
                var n     = proxy.traduzir(nome.ToLower());

                if (n.Trim().Contains("-1"))
                {
                    tag      = new Tag(false);
                    tag.Nome = nome;
                    tag.Save();

                    var x = new IA_AR.Utils();
                    x.insertTag(nome.ToLower(), "[" + username.ToLower() + "]");
                }
                else
                {
                    tag      = new Tag(false);
                    tag.Nome = n.Trim().ToLower();
                    tag.Save();

                    var x = new IA_AR.Utils();
                    x.insertTag(n.ToLower(), "[" + username.ToLower() + "]");
                }



                return(tag);
            }
            else
            {
                var x = new IA_AR.Utils();
                x.insertIntoTag(nome.ToLower(), username.ToLower());
            }

            return(tag);
        }