segunda-feira, 15 de junho de 2009

Relacionando advertisments com Profile e Produtos

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.aspx

http://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

Nenhum comentário: