Creating a Shopping Cart [closed]

0

I want to create a Cart, where I have the Products that I'm going to sell, the quantity and the total value. Anyone have an idea how I can start development?

Just to clarify, it follows my Product class, which starts from a Menu:

public class Produto
{
    [Key]
    public int ProdutoID { get; set; }

    [Required(ErrorMessage = "Preencha o nome do produto")]
    [DisplayName("Produto")]
    [StringLength(20, MinimumLength = 5, ErrorMessage = "O nome do produto deve ter entre 5 a 20 caracteres")]
    public string Nome { get; set; }

    [Required(ErrorMessage = "Preencha a descrição do produto")]
    [DisplayName("Descrição")]
    [StringLength(50, MinimumLength = 5, ErrorMessage = "O nome do produto deve ter entre 5 a 50 caracteres")]
    public string Descricao { get; set; }

    [DisplayName("Foto")]
    public string Foto { get; set; }

    [Required(ErrorMessage = "Preencha o valor do produto")]
    [DisplayName("Valor R$")]
    public decimal Valor { get; set; }

    //relacionamentos
    public int RestauranteID { get; set; }
    public virtual Restaurante Restaurante { get; set; }
}
    
asked by anonymous 13.10.2016 / 02:46

1 answer

3
___ erkimt ___ Creating a Shopping Cart [closed] ______ qstntxt ___

I want to create a Cart, where I have the Products that I'm going to sell, the quantity and the total value. Anyone have an idea how I can start development?

Just to clarify, it follows my Product class, which starts from a Menu:

using System.Web;
using Hamburgueria.Models;
using System.Collections.Generic;

namespace Hamburgueria
{
    public class DadosTemporarios
    {
        const string CHAVE_PEDIDOS = "PEDIDOS";

    internal static void ArmazenaPedidos(Produto produtoDoPedido)
    {
        List<Produto> pedidos = RetornaPedidos() != null ?
            Retornapedidos() : new List<Produto>();

        pedidos.Add(produtoDoPedido);
        HttpContext.Current.Session[CHAVE_PEDIDOS] = pedidos;
    }

    internal static void RemovePedidos(int id)
    {
        List<Produto> pedidos = RetornaPedidos();
        pedidos.RemoveAt(id);
        HttpContext.Current.Session[CHAVE_PEDIDOS] = pedidos;
    }

    internal static void RemovePedidos()
    {
        HttpContext.Current.Session[CHAVE_PEDIDOS] = new List<Produto>();
    }

    internal static List<Produto> RetornaPedidos()
    {
        return HttpContext.Current.Session[CHAVE_PEDIDOS] != null ?
            (List<Produto>)HttpContext.Current.Session[CHAVE_PEDIDOS] : null;
    }
}
 }
    
______ ___ azszpr158449

Dude, in MVC I create temporary data that is saved in the session. I'll give you an example of a system I've done for a haburgueria taking into consideration your Model:

Temporary Data

Here you will store the order data in the session. Let's suppose that an order is a list of products that the user chose

public ActionResult AdicionarProdutoAoCarrinho(Produto produto)
        {
            if(ModelState.IsValid)
                DadosTemporarios.ArmazenaPedidos(produto);
            else{
                ///TODO
            }

            return View("Index", produtos);
        }

Right, but what now? Simple! in your Controller you only need to use the methods of this class to save in the session, like this:

using System.Web;
using Hamburgueria.Models;
using System.Collections.Generic;

namespace Hamburgueria
{
    public class DadosTemporarios
    {
        const string CHAVE_PEDIDOS = "PEDIDOS";

    internal static void ArmazenaPedidos(Produto produtoDoPedido)
    {
        List<Produto> pedidos = RetornaPedidos() != null ?
            Retornapedidos() : new List<Produto>();

        pedidos.Add(produtoDoPedido);
        HttpContext.Current.Session[CHAVE_PEDIDOS] = pedidos;
    }

    internal static void RemovePedidos(int id)
    {
        List<Produto> pedidos = RetornaPedidos();
        pedidos.RemoveAt(id);
        HttpContext.Current.Session[CHAVE_PEDIDOS] = pedidos;
    }

    internal static void RemovePedidos()
    {
        HttpContext.Current.Session[CHAVE_PEDIDOS] = new List<Produto>();
    }

    internal static List<Produto> RetornaPedidos()
    {
        return HttpContext.Current.Session[CHAVE_PEDIDOS] != null ?
            (List<Produto>)HttpContext.Current.Session[CHAVE_PEDIDOS] : null;
    }
}
 }

In your view you can still call the method that returns the cart of items to show how many have still:)

In case of this project I went a little further with the database. In my case it's just a restaurant but you can change that easy. Follow the schematic

Just follow this path that you can easily :) Thanks.

    
___
13.10.2016 / 05:30