___ 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;
}
}
}
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.