Relacionando advertisments com Profile e Produtos
Autor: Augusto Pierzynski | Publicado: 2009-06-15T17:59:00-03:00

Olá pessoal, boa tarde.Desenvolvi uma função que busca exibe advertisments (no caso banners) filtrados por Profile e Product.Consegui informações interessantes nos sites abaixo:http://blogs.msdn.com/maxakbar/archive/2006/08/16/702257.aspxhttp://social.msdn.microsoft.com/Forums/en-US/commserver2007/thread/4d13eef3-340b-4366-93aa-c3f4cbf2f196/Abaixo segue o código da função:-------------------------------------------       Public Function GetCampanha(ByVal p_strPageGroup As String, _                                    Optional ByVal p_strGrupoFabricanteCodigo As Integer = 0, _                                    Optional ByVal p_strGrupoLinhaCodigo As Integer = 0, _                                    Optional ByVal p_strLinhaCodigo As Integer = 0) As String            Dim l_strRenderHTML As String            Dim adContentSelector As ContentSelector = CommerceContext.Current.TargetingSystem.SelectionContexts("advertising").GetSelector()            adContentSelector.Profiles.Add("TargetingContext", CommerceContext.Current.TargetingSystem.TargetingContextProfile())            '// Adicionando PageGroup            CommerceContext.Current.TargetingSystem.TargetingContextProfile("PageGroup").Value = p_strPageGroup            '// Buscado revenda logada            Dim l_objTicket As New Profile.BusinessObjects.TicketFrontEnd            If l_objTicket.TipoTicket = Profile.BusinessObjects.TicketType.LogadoFrontEnd Then                Dim objCliente As New Profile.BusinessRules.Cliente                Dim objPessoa As Profile.BusinessObjects.Pessoa = objCliente.GetClientes(l_objTicket.Cliente.Guid)                If Not (objPessoa Is Nothing) Then                    adContentSelector.Profiles.Add("UserObject", objPessoa.Profile) ' inserindo perfil para exibir Banner                End If            End If            '// Produtos selecionados            Dim productProperties As New DictionaryClass            If p_strGrupoFabricanteCodigo <> 0 Then 'ClvGrupoFabricanteCodigo                productProperties.let_Value(String.Format("_product_{0}", "ClvGrupoFabricanteCodigo"), p_strGrupoFabricanteCodigo)            End If            If p_strGrupoLinhaCodigo <> 0 Then 'p_strGrupoLinhaCodigo                productProperties.let_Value(String.Format("_product_{0}", "ClvGrupoLinhaCodigo"), p_strGrupoLinhaCodigo)            End If            If p_strLinhaCodigo <> 0 Then 'p_strLinhaCodigo                productProperties.let_Value(String.Format("_product_{0}", "ClvLinhaCodigo"), p_strLinhaCodigo)            End If            If productProperties.Count > 0 Then                adContentSelector.Profiles.Add("Product", productProperties) ' inserindo produto para exibir Banner            End If            '// Fim Produtos selecionados            Dim adContentCollector As StringCollection = adContentSelector.GetContent()            For Each adContent As String In adContentCollector                l_strRenderHTML = adContent            Next            Return l_strRenderHTML '// Retorno        End Function-------------------------------------------Na função acima, no relacionamento com produtos, necessito apenas de três ProductDefinition, por isso não carreguei todas as definitions de um produto.P.S.: A classe ticket é um controle que temos para saber se o usuário está logado ou não no site. Substitua seu controle de login nessa parte do código.Dúvidas e comentários, por favor enviem!Abraços