[ Commerce Server ] Criando e resgatando profiles

- terça-feira, 9 de fevereiro de 2010

Hoje vou mostrar como criar ou resgatar um profile de um contexto externo ao do Commerce Site.

Quando se utiliza profiles dentro de um site commerce, utiliza-se o default context "CommerceContext.Current.ProfileSystem", porem como fazer quando não estamos no contexto?? Imagine por exemplo que voce tenha uma rotina para importar os fornecedores para seus produtos, essa rotina seria executada por um console e logo o contexto não existiria, então obviamente voce tem que cria-lo.

 

veja o codigo abaixo, nele todas essas rotinas são demonstradas (eu tirei esse código de um projeto meu e no editor de texto fiz algumas alterações para ficar mais simples de entender, caso voce tenha algum problema pode me procurar).

Espero ter ajudado alguns.

 

namespace Console1.BusinessRules.Import

{

    public enum DebugMode

    {

        Release, Debug

    }

    public class Providers

    {

        readonly ProfileContext _profileContext;

        readonly Microsoft.CommerceServer.Runtime.Diagnostics.DebugMode _debug;

        public Providers(DebugMode debugMode)

        {

            _debug = debugMode == DebugMode.Debug ? Microsoft.CommerceServer.Runtime.Diagnostics.DebugMode.Debug : Microsoft.CommerceServer.Runtime.Diagnostics.DebugMode.Production;

            var resources = new CommerceResourceCollection("CommerceProjectName");

            var resource = resources["Biz Data Service"];

            _profileContext = new ProfileContext((string)resource["s_ProfileServiceConnectionString"], new ConsoleDebugContext(_debug));

 

        }

 

        public ProfileContext GetProfileContext()

        {

            return _profileContext;

        }

 

        public void ImportProviders(string fileName)

        { 

            Console.WriteLine(" --------------------- Importando fornecedores  --------------------- ");

            var objProfile = ProfileRepository.CreateProfile(_profileContext, "Fornecedor", "00000101");

            objProfile["GeneralInfo.Nome"].Value = "Empresa1";

            objProfile["GeneralInfo.Ativo"].Value = true;

            objProfile.Update();

 

            Console.WriteLine("fornecedor importado.");

        }

    }

}

 

namespace Console1.BusinessRules.Repositories

{

    public class ProfileRepository

    {

        /// <summary>

        /// Resgata um profile com contexto default

        /// </summary>

        /// <param name="profileType">Tipo do profile.</param>

        /// <param name="keyName">Nome da chave primária do profile.</param>

        /// <param name="keyValue">Valor pelo qual o profile será consultado.</param>

        /// <returns>O profile requisitado ou null caso não seja encontado.</returns>

        public static Profile GetProfile(string profileType, string keyName, string keyValue)

        {

            /// Return the Profile

            return CommerceContext.Current.ProfileSystem.GetProfile(keyName, keyValue, profileType);

        }

 

        /// <summary>

        /// Resgata um profile com contexto especifico

        /// </summary>

        /// <param name="profileContext">Contexto do profile.</param>

        /// <param name="profileType">Tipo do profile.</param>

        /// <param name="keyName">Nome da chave primária do profile.</param>

        /// <param name="keyValue">Valor pelo qual o profile será consultado.</param>

        /// <returns>O profile requisitado ou null caso não seja encontado.</returns>

        public static Profile GetProfile(ProfileContext profileContext, string profileType, string keyName, string keyValue)

        {

            /// Return the Profile

            return profileContext.GetProfile(keyName, keyValue, profileType);

        }

 

        /// <summary>

        /// Cria um profile com contexto especifico

        /// </summary>

        /// <param name="profileContext">Contexto do profile.</param>

        /// <param name="profileType">Tipo do profile.</param>

        /// <param name="keyValue">O valor da chave primária para o profile.</param>

        /// <returns></returns>

        public static Profile CreateProfile(ProfileContext profileContext, string profileType, string keyValue)

        {

            //Return the new Profile entity

            return profileContext.CreateProfile(keyValue, profileType);

        }

 

        /// <summary>

        /// Cria um profile com contexto default

        /// </summary>

        /// <param name="profileType">Tipo do profile.</param>

        /// <param name="keyValue">O valor da chave primária para o profile.</param>

        /// <returns></returns>

        public static Profile CreateProfile(string profileType, string keyValue)

        {

            //Return the new Profile entity

            return CommerceContext.Current.ProfileSystem.CreateProfile(keyValue, profileType);

        } 

    }

}



Blogado por Rafa Almeida as 6:33
Rafael Almeida Rafael da Silva Almeida, 22 Desenvolvedor;
C#, VB.NET, Java, C, Phyton, Linq, MVC;
VSTS, SQL, TV Digital, Xletview;
eusou@rafaelalmeida.net
SKYPE: stupied4ever
MSN: r.almeidasilva@terra.com.br
Twitter

Ultimos Posts

Amigos