💻 Veja o projeto em produção aqui
- Página de detalhes de produto
- Carrinho de compras (Adicionar ou remover produtos, cálculo de frete), necessário registro para acessar
- Cadastrar contas / Login
- Perfil (Trocar senha, username)
- Operações de CRUD em produto, categoria e fornecedor
- Necessário instalar a versão mais recente do Visual Studio Community 2022;
- Versão mais recente (ou a mais estável) do .NET 6;
- Entity Framework Core 6
Siga os passos abaixo para ter acesso ao seu ambiente de desenvolvimento:
- Clone o repositório:
git clone https://github.com/michaelsribeiro/ASP.NET_Core_Ecommerce.git
-
Configure a string de conexão no arquivo appsettings.json apontando para o seu banco de dados SQL Server;
-
Para criar o banco de dados SQL Server e suas respectivas tabelas, abra o Package Manager Console em seu Visual Studio e digite os comandos:
-
Criação das tabelas do Identity:
update-database -verbose -context ApplicationDbContext
-
Criação das tabelas da camada de negócios:
update-database -verbose -context CustomDbContext
-
-
Pressione
F5 ou Ctrl+F5
para rodar o projeto no seu navegador.
O Projeto foi dividido em camadas, utilizando 3 projetos:
- Application
- Properties
- wwwroot
- Areas
- AutoMapper
- Controllers
- Data
- Extensions
- ViewComponents
- ViewModels
- Views
- Business
- Interfaces
- Models
- Notifications
- Services
- Data
- Context
- Mapping
- Migrations
- Repository
Foi implementada a aquitetura de camadas juntamente com o padrão MVC (Model-View-Controller) que foca na separação de resposabilidades dentro de um projeto web, cada camada é uma porção de código que realiza uma tarefa específica, possuindo a reponsabilidade de interagir com outras camadas para realizar um objetivo específico.
Camada responsável por apresentar as páginas da aplicação que foram construídas com Razor Pages, esta é a interface onde o usuário interage com a aplicação. Os dados apresentados nesta camada são oriundos da camada Business, que envia os dados para a camada de apresentação através da lib AutoMapper.
A camada de negócios contém as classes (entidades) e validações (regras de negócio), que são feitas antes de realizar chamadas aos métodos da camada de acesso a dados, garantindo que os dados sejam informados de forma correta.
A criação das tabelas é feita através do ORM (Object Relational Mapping) Entity Framework Core utilizando o fluxo de trabalho Code First, que cria as tabelas do banco de dados com base nas entidades.
Você pode saber mais sobre o Code First neste link.
Abaixo é possível visualizar um exemplo de entidade do projeto.
public class Produto : Entity
{
public Produto(Guid categoriaId, Guid fornecedorId, string nome, string? descricao, string marca, int quantidade, decimal valorUnitario, string imagem)
{
CategoriaId = categoriaId;
FornecedorId = fornecedorId;
Nome = nome;
Descricao = descricao;
Marca = marca;
DefinirQuantidade(quantidade);
ValorUnitario = valorUnitario;
Imagem = imagem;
DefinirStatus(quantidade);
}
public Guid CategoriaId { get; private set; }
public Guid FornecedorId { get; private set; }
public string Nome { get; private set; }
public string? Descricao { get; private set; }
public string Marca { get; private set; }
public int Quantidade { get; private set; }
public decimal ValorUnitario { get; private set; }
public string Imagem { get; private set; }
public StatusProduto Status { get; private set; }
public Categoria Categoria { get; private set; }
public IEnumerable<Categoria>? Categorias { get; private set; }
public Fornecedor Fornecedor { get; private set; }
public IEnumerable<Fornecedor>? Fornecedores { get; private set; }
}
Camada de acesso a dados, onde a informação é armazenada e retornada da fonte de dados (SQL Server), a informação é passada de volta para a camada de negócio e enfim apresentada ao usuário.
Classe integrante do Entity Framework que representa uma sessão com o banco de dados que pode ser usada para consultar e salvar entidades em um banco de dados.
Para utilizar o contexto é preciso criar uma classe que herde de DbContext, no caso deste projeto foi criada uma classe nomeada de CustomDbContext, neste contexto são incluídas as propriedades DbSet<TEntity>
para cada model (entidade).
Abaixo é possível visualizar a classe de contexto do projeto.
public class CustomDbContext : DbContext
{
public CustomDbContext(DbContextOptions<CustomDbContext> options) : base(options) { }
public DbSet<ItemPedido> ItensPedido { get; set; }
public DbSet<Categoria> Categorias { get; set; }
public DbSet<Endereco> Enderecos { get; set; }
public DbSet<Fornecedor> Fornecedores { get; set; }
public DbSet<Pedido> Pedidos { get; set; }
public DbSet<Produto> Produtos { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}
Para criar uma nova migration, abra o Package Manager Console e digite os seguintes comandos:
-
Para adicionar uma nova migration do Identity:
add-migration nomeMigration -verbose -context ApplicationDbContext
-
Para adicionar uma nova migration da camada de negócios:
add-migration nomeMigration -verbose -context CustomDbContext
- .NET 6
- ASP.NET Core
- ASP.NET Identity
- Entity Framework Core
- Razor Pages
- Bootstrap 5
- SQL Server
- Azure Cloud Services
- Painel de Administração
- Integração com API de pagamentos
- Busca de Produtos ou Categorias
- Envio de Email (SendGrid)
Se você gostou deste projeto ou se te ajudou em algo, por favor, deixe uma estrela. Caso queira contribuir, basta dar um fork no projeto e enviar seus pull-requests. Caso encontre algum problema, por favor, abra uma issue.
Este repositório está sob a Licença MIT. Mais informações: LICENÇA