public ActionResult Create(PedidoViewModel pedidoViewModel)
        {
            PedidoDto pedidoDto = new PedidoDto(){
                Data = pedidoViewModel.Data,
                Descricao = pedidoViewModel.Descricao
            };

            pedidoLogic.SalvarPedido(pedidoDto);
            return Redirect("/Retrieve");
        }
        public void SalvarPedido(PedidoDto pedidoDto)
        {
            List<PedidoDto> pedidosDaSessao = RecuperaPedidosDaSessao();
            PedidoDto ultimoPedido          = pedidosDaSessao.ElementAtOrDefault(pedidosDaSessao.Count()-1);
            if (ultimoPedido != null)
            {
                pedidoDto.Id = ultimoPedido.Id + 1;
            }
            else {
                // reinicializa o contador
                // usado quando for removido todos os itens
                pedidoDto.Id = 1;
            }

            pedidosDaSessao.Add(pedidoDto);
        }
        public void EditarPedido(PedidoDto pedidoDto)
        {
            int Id = pedidoDto.Id;
            PedidoDto pedidoDtoExistente = RecuperaPedidoPeloId(Id);
            List<PedidoDto>      pedidos = RecuperaPedidosDaSessao();

            int beforeUpdateCount = pedidos.Count();
            if (!pedidos.Remove(pedidoDtoExistente)) {
                throw new InvalidOperationException("Não foi possível remover o pedido pelo id :"+ Id);
            }

            int afterUpdateCount = pedidos.Count();
            if (afterUpdateCount >= beforeUpdateCount)
            {
                throw new InvalidOperationException("Não foi possível alterar o tamanho da lista de pedidos pelo id :" + Id);
            }

            SalvarPedido(pedidoDto);
        }
        public ActionResult Edit(PedidoViewModel pedidoViewModel)
        {
            PedidoDto pedidoDto = new PedidoDto()
            {
                Id = pedidoViewModel.Id,
                Data = pedidoViewModel.Data,
                Descricao = pedidoViewModel.Descricao

            };

            pedidoLogic.EditarPedido(pedidoDto);
            return Redirect("/Retrieve");
        }
        private List<PedidoDto> RecuperaPedidosDaSessao()
        {
            //
            // mock
            // para habilitar o uso ao HttpContext é
            // preciso habilitar a session com o System.Web em references
            var session = System.Web.HttpContext.Current.Session;
            if ( session["pedidos"] != null ) {
                return session["pedidos"] as List<PedidoDto>;
            }

            //
            // mock manualmente dos pedidos da lista
            //
            List<PedidoDto> pedidos = new List<PedidoDto>();
            PedidoDto pedidoDto1 = new PedidoDto()
            {
                Id = 1,
                Data = DateTime.Now,
                Descricao = "Exemplo de pedido"
            };
            PedidoDto pedidoDto2 = new PedidoDto()
            {
                Id = 2,
                Data = DateTime.Now,
                Descricao = "Exemplo de pedido"
            };
            PedidoDto pedidoDto3 = new PedidoDto()
            {
                Id = 3,
                Data = DateTime.Now,
                Descricao = "Exemplo de pedido"
            };
            pedidos.Add(pedidoDto1);
            pedidos.Add(pedidoDto2);
            pedidos.Add(pedidoDto3);

            session["pedidos"] = pedidos;
            return session["pedidos"] as List<PedidoDto>;
        }