Categoria: Dicas

Habilitando username no lugar de email no nopCommerce

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Por padrão o nopCommerce utiliza o email do cliente para controle de login, e hoje em dia é a forma preferida pela maioria das pessoas, pois o cliente não precisa decorar e utilizar nenhuma informação diferente do que está acostumado apenas para sua loja. Porém, em alguns casos, você pode preferir utilizar um nome de usuário no lugar de um e-mail, e hoje vamos ver como fazer isso no nopCommerce.

Abra o painel de administração do nop, abra o menu “Configuration > Settings > Customer Settings”.

nopCommerce customer settings

nopCommerce customer settings

Na própria aba “customer settings” você deve clicar logo na primeira opção “

Username enabled

Quando você marcar a opção “Usernames enabled”, irão aparecer outras duas opções, que estão em destaque na imagem acima: “Allow customers to change their usernames” e “Allow customers to check the availability of usernames”.

A primeira delas permite que o cliente altere o seu username após o cadastro, e a segunda permite que ele verifique se o username que ele quer usar já existe ou não.

Após alterar as opções desejadas, basta salvar e pronto, o cliente passará a utilizar um username no lugar de seu email.

Um ponto importante, de acordo com a equipe do nopCommerce NÃO é recomendado alterar essa configuração após a loja já estar em produção.

Quase 20 anos de experiência no mercado de TI.
Atuação em grandes empresas como Netshoes, Borland, JBS, Bradesco, Hospital das Clínicas, Rede, Prodam, HSPE, Instituto Ayrton Senna, e também em empresas internacionais como Delta Dental, T-Mobile, Pepsi e Mckesson.

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Dica: Manipulando eventos

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Eventos, ou events, são notificações que são disparadas e podem ser ouvidos por quem desejar. O nopCommerce dispara eventos quando algum dado é inserido, alterado ou apagado. Existem duas formas de se trabalhar com eventos no nopCommerce: publicar um evento ou escutar um evento.

Escutar (listen)

Para escutar um evento, é necessário criar uma classe que implemente a interface IConsumer. Ao criar uma nova implementação de IConsumer, o nopCommerce usa reflection para achar e registrar a nova classe criada que irá escutar um determinado evento.

public class OrderDeletedConsumer : IConsumer<EntityDeleted<Order>>
    {
        public void HandleEvent(EntityDeleted<Order> eventMessage)
        {
           Console.WriteLine("Pedido número " + eventMessage.Entity.Id.ToString());            
        }
    }

Publicar (publish)

Para publicar um evento, você precisa obter uma instância de IEventPublisher e chamar o método Publish com os dados apropriados que deseja enviar através do evento.

public class OrderPublisher
{
	private readonly IEventPublisher _eventPublisher;
	private readonly IRepository<Order> _orderRepository;

	public OrderPublisher(IEventPublisher eventPublisher, 
		IRepository<Order> orderRepository,)
	{
		this._eventPublisher = eventPublisher;
		this._orderRepository = orderRepository;
	}

    public void DeleteOrder(Order order)
    {
		if (order == null)
			throw new ArgumentNullException("order");

		_orderRepository.Delete(order);	
			
		//event notification
		_eventPublisher.EntityUpdated(order);
    }
}

 

Quase 20 anos de experiência no mercado de TI.
Atuação em grandes empresas como Netshoes, Borland, JBS, Bradesco, Hospital das Clínicas, Rede, Prodam, HSPE, Instituto Ayrton Senna, e também em empresas internacionais como Delta Dental, T-Mobile, Pepsi e Mckesson.

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Erro ao compilar o nopCommerce: Operation is not supported. (Exception from HRESULT: 0x80131515)

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Pessoal gostaríamos de compartilhar um problema simples de resolver porem difícil de encontrar.

Baixamos a versão nova do nop e ao tentar compilar no modo release ou fazer o publish estávamos recebendo o seguinte erro:

Could not load file or assembly ‘file:///C:\github\nopCommerce_3.60_Source\packages\Autofac.3.5.2\lib\net40\Autofac.dll’ or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515) C:\github\nopCommerce_3.60_Source\Libraries\Nop.Services\SGEN Nop.Services

Metadata file ‘C:\github\nopCommerce_3.60_Source\Libraries\Nop.Services\bin\Release\Nop.Services.dll’ could not be found C:\github\nopCommerce_3.60_Source\Tests\Nop.Web.MVC.Tests\CSC Nop.Web.MVC.Tests
Metadata file ‘C:\github\nopCommerce_3.60_Source\Presentation\Nop.Web.Framework\bin\Release\Nop.Web.Framework.dll’ could not be found C:\github\nopCommerce_3.60_Source\Tests\Nop.Web.MVC.Tests\CSC Nop.Web.MVC.Tests
Metadata file ‘C:\github\nopCommerce_3.60_Source\Libraries\Nop.Services\bin\Release\Nop.Services.dll’ could not be found C:\github\nopCommerce_3.60_Source\Presentation\Nop.Web.Framework\CSC Nop.Web.Framework
Metadata file ‘C:\github\nopCommerce_3.60_Source\Libraries\Nop.Services\bin\Release\Nop.Services.dll’ could not be found C:\github\nopCommerce_3.60_Source\Presentation\Nop.Web\CSC Nop.Web
Metadata file ‘C:\github\nopCommerce_3.60_Source\Presentation\Nop.Web.Framework\bin\Release\Nop.Web.Framework.dll’ could not be found C:\github\nopCommerce_3.60_Source\Presentation\Nop.Web\CSC Nop.Web
Metadata file ‘C:\github\nopCommerce_3.60_Source\Libraries\Nop.Services\bin\Release\Nop.Services.dll’ could not be found C:\github\nopCommerce_3.60_Source\Tests\Nop.Services.Tests\CSC Nop.Services.Tests

Porem ao compilar no modo debug funcionava sem problemas:

debug

O Motivo desse problema não tem muito haver com o nopCommerce ou com o .Net e sim com o Windows.
Por motivos de segurança o windows bloqueia os arquivos “zipados” em outro computador, para resolver o problema é simples, feche o visual studio e retire o bloqueio do .rar (esse é o rar que foi baixado no site do nopCommerce) antes de descompactar o código fonte.

bloqueio-rar

Apos desbloquear o .rar e descompacta-lo novamente:

sucesso

Até o próximo post !

Quase 20 anos de experiência no mercado de TI.
Atuação em grandes empresas como Netshoes, Borland, JBS, Bradesco, Hospital das Clínicas, Rede, Prodam, HSPE, Instituto Ayrton Senna, e também em empresas internacionais como Delta Dental, T-Mobile, Pepsi e Mckesson.

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Dica: Resolvendo erro ao fazer upload de arquivo (upload failed)

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Pessoal, quando tentamos fazer o upload de um arquivo que seja maior que 4MB, ocorre um erro e recebemos a mensagem de erro upload failed, como podemos ver na imagem abaixo:

UploadFailed

Isso ocorre pois por padrão, o IIS limita um request, seja para upload ou download em 4MB. Esse erro não ocorre por causa do nopCommerce, e não é possível resolver através de configurações pelo painel de administração do nop. Então, como resolver? É simples, basta alterarmos o arquivo web.config do projeto Nop.Web. Precisamos inserir duas configurações, sendo a primeira delas maxRequestLength, que deve ser inserida dentro da tag httpRuntime e a segunda delas maxAllowedContentLength que deve ser inserida dentro de um bloco requestFiltering. Abra o arquivo web.config, e altere conforme o código abaixo:

WebConfigMaxSize

O exemplo acima mostra como alterar o limite para 10MB, basta você substituir o valor de 10000 pelo tamanho em bytes que você necessita, por exemplo, se você precisar de 100MB, basta utilizar 100000. Se você quiser reduzir o limite de 4MB para 1MB por exemplo, basta utilizar o valor 1000.

Após fazer a alteração, que no nosso caso foi alterado para 10MB, podemos subir nosso arquivo de 5MB que tentamos inicialmente e não conseguimos, e dessa vez, teremos uma mensagem de sucesso.

Quase 20 anos de experiência no mercado de TI.
Atuação em grandes empresas como Netshoes, Borland, JBS, Bradesco, Hospital das Clínicas, Rede, Prodam, HSPE, Instituto Ayrton Senna, e também em empresas internacionais como Delta Dental, T-Mobile, Pepsi e Mckesson.

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Dica: Configurar conta do Gmail para envio de emails (smtp)

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Se você utiliza o Gmail e deseja utilizar sua conta para envio de emails através do nopCommerce, a configuração é simples e rápida, basta preencher os campos de acordo com as definições abaixo:

Email address: seu endereço de email, por exemplo: nopcommercebrasil@nopcommercebrasil.com
Email display name: o nome que você quer que seja exibido para quem receber o email, por exemplo: NopCommerce Brasil
Host: smtp.gmail.com
Port: 587
User: seu endereço de email do Gmail, por exemplo nopcommercebrasil@nopcommercebrasil.com
Password: sua senha da conta do Gmail
SSL: marcar essa opção
Use default credentials: não marcar essa opção

Os campos em vermelho, devem ser preenchidos exatamente dessa forma, e os campos em azul, são os dados específicos de sua conta. Segue abaixo uma imagem da tela de configuração com os dados do nopBrasil preenchidos:

GmailConfig

Após preencher as informações acima, e clicar em salvar, podemos testar se tudo está funcionando enviando um email de teste. Para isso, coloque algum email no campo Send email to e clique no botão Send teste email, se tudo correr bem, você verá uma notificação na parte superior da tela informando que o email foi enviado com sucesso. Veja um exemplo na figura abaixo:

GmailConfigTest

Quase 20 anos de experiência no mercado de TI.
Atuação em grandes empresas como Netshoes, Borland, JBS, Bradesco, Hospital das Clínicas, Rede, Prodam, HSPE, Instituto Ayrton Senna, e também em empresas internacionais como Delta Dental, T-Mobile, Pepsi e Mckesson.

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Dica: Tarefas agendadas

Facebooktwittergoogle_plusredditpinterestlinkedinmail

O nopCommerce permite a criação de tarefas agendadas (scheduled tasks), que podem ser executadas periodicamente em segundo plano (background). Por exemplo, você pode agendar o envio de emails promocionais aos clientes uma vez ao dia, ou agendar a consulta do status do pagamento dos pedidos, para efetuar a confirmação de pagamento automaticamente, a cada 15 minutos.

As tasks são executadas em uma thread separada, que faz parte do pool de threads do ASP.NET. Os passos básicos para criar uma tarefa agendada são:

  1. Crie uma classe que implemente a interface ITask. Ela possui apenas um método que não possui nenhum parâmetro. Esse método é executado quando a task precisa ser executada.
  2. Para agendar uma tarefa, é necessário inserir um novo registro ScheduleTask na tabela do banco de dados. Você pode utilizar IScheduleTaskService para fazer a inserção do registro no banco.

Quase 20 anos de experiência no mercado de TI.
Atuação em grandes empresas como Netshoes, Borland, JBS, Bradesco, Hospital das Clínicas, Rede, Prodam, HSPE, Instituto Ayrton Senna, e também em empresas internacionais como Delta Dental, T-Mobile, Pepsi e Mckesson.

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Dica: Como registrar novas rotas no nopCommerce (MVC)

Facebooktwittergoogle_plusredditpinterestlinkedinmail

As rotas (routes) são responsáveis por realizar o mapeamento entre as requisições (request) do browser para os controllers MVC (classes de controle). Você pode encontrar mais informações sobre rotas aqui.

Registrar novas rotas no nopCommerce não é complexo, e você pode fazer isso facilmente já que o nopCommerce possui uma interface chamada IRouteProvider, que é utilizada para registrar as rotas durante a inicialização da aplicação. Todas as rotas que pertencem ao core do nop são registradas na classe RouteProvider, localizada no projeto Nop.Web.

public partial class RouteProvider : IRouteProvider
    {
        public void RegisterRoutes(RouteCollection routes)
        {
            //home page
            routes.MapLocalizedRoute("HomePage",
                            "",
                            new { controller = "Home", action = "Index"},
                            new[] { "Nop.Web.Controllers" });

Você pode criar quantas classes RouteProvider você precisar. Por exemplo, se o seu plugin possui alguma rota que você deseja registrar, você deve criar uma nova classe, que implemente a interface IRouteProvider, e efetuar o registro de suas rotas no seu plugin.

Quase 20 anos de experiência no mercado de TI.
Atuação em grandes empresas como Netshoes, Borland, JBS, Bradesco, Hospital das Clínicas, Rede, Prodam, HSPE, Instituto Ayrton Senna, e também em empresas internacionais como Delta Dental, T-Mobile, Pepsi e Mckesson.

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Dica: Resolvendo erro ao criar banco de dados na instalação do nopCommerce

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Ao instalar o nopCommerce é comum ocorrer um problema no momento da criação automática do banco de dados. Eu já vi o problema ocorrer em minha máquina local e também em servidores onde já instalei o nopCommerce. A mensagem de erro que é gerada segue abaixo.

Falha na configuração: Ocorreu um erro ao criar o banco: Erro de rede ou específico à instância ao estabelecer conexão com o SQL Server. O servidor não foi encontrado ou não estava acessível. Verifique se o nome da instância está correto e se o SQL Server está configurado para permitir conexões remotas. (provider: Named Pipes Provider, error: 40 – Não foi possível abrir uma conexão com o SQL Server)

Mesmo que o endereço do servidor, a instância do banco e o usuário estejam corretos esse problema pode ocorrer. O que venho percebendo é que a instalação do nopCommerce não consegue criar o database (banco de dados) de forma automática. A forma mais simples que encontrei para resolver o erro é criar um banco de dados vazio no SQL Server manualmente antes de efetuar a instalação do nopCommerce. O banco de dados pode ser criado pelo Management Studio ou através de qualquer outra ferramenta administrativa do SQL Server.

Após criar o banco de dados, basta fazer a instalação, fornecendo no wizard (formulário) de instalação o nome do banco já criado, que ela ocorrerá sem nenhum problema, e todas as tabelas e objetos serão criados.

Quase 20 anos de experiência no mercado de TI.
Atuação em grandes empresas como Netshoes, Borland, JBS, Bradesco, Hospital das Clínicas, Rede, Prodam, HSPE, Instituto Ayrton Senna, e também em empresas internacionais como Delta Dental, T-Mobile, Pepsi e Mckesson.

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Desenvolvido em WordPress & Tema por Anders Norén