Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Função GetPedidoId() retorna sempre null

Olá todos, não entendi ainda o porque mas minha função GetPedidoId() está retornando sempre null.

PedidoRepository

private int? GetPedidoId()
        {
            return contextAccessor.HttpContext.Session.GetInt32("pedidoId");
        }
public Pedido GetPedido()
        {
            var pedidoId = GetPedidoId(); //retorna sempre null.

StartUp

public void Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider serviceProvider)
        {
(...)
        app.UseStaticFiles();
            app.UseSession();
(...)

Carrossel.cshtml

<div class="text-center">
  <a asp-action="Carrinho"
     asp-route-codigo="@produto.Codigo"
     class="btn btn-success">Adicionar</a>
</div>

IPedidoRepository

public interface IPedidoRepository
    {
        Pedido GetPedido();
(...)
    }

Carrinho

public IActionResult Carrinho(string codigo)
        {
            if (!string.IsNullOrWhiteSpace(codigo))
                pedidoRepository.AddItem(codigo);

            Pedido pedido = pedidoRepository.GetPedido();
            return View(pedido.Items);
        }

Alguém saberia por favor me dizer aonde está o erro?!

1 resposta
solução!

Desculpe pessoal analisando a exception, ele da erro nao por causa do pedido retornar null, mas pelo Cadastro estar null, sendo que no banco o cadastro suas colunas são todas [required], então a solução foi deixar um cadastro default em caso de null, só para poder rodar a aplicação!

Como ficou a solução (temporária)! Obs.: solução somente para poder rodar a aplicação, não é correto setar um endereço default o correto seria enviar para a página de cadastro a pessoa fazer o cadastro e dai prosseguir com a compra ao finalizar o pedido! No caso terei de fazer mais ajustes ao código posteriormente!

na pasta Model em Pedido.cs:

public class Pedido : BaseModel
    {
        public List<ItemPedido> Items { get; private set; } = new List<ItemPedido>();

        [Required]
        public virtual Cadastro Cadastro { get; private set; }

        public Pedido()
        {
            Cadastro = new Cadastro()
            {
                Bairro = "bairro",
                CEP = "cep",
                Complemento = "complemento",
                Email = "email",
                Endereco = "endereco",
                Municipio = "municipio",
                Nome = "nome",
                Telefone = "telefone",
                UF = "uf"
            };
        }

        public Pedido(Cadastro cadastro)
        {
            Cadastro = cadastro;
        }
    }