public async Task <IActionResult> Create([Bind("Id,DataCadastro,DataEntrega,PacienteId,SolicitanteId,ConvenioId,PostoColetaId,ExameId,Valor,Desconto,Total,IdTemporario")] Requisicao requisicao)
        {
            double totalRequisicao = 0;

            if (ModelState.IsValid)
            {
                IEnumerable <ItemRequisicaoTemp> _exames = _context.ItemRequisicaoTemp.Where(w => w.IdTemporario.Equals(requisicao.IdTemporario)).ToList();
                requisicao.DataCadastro = DateTime.Now;
                _context.Add(requisicao);

                foreach (var item in _exames)
                {
                    ItemRequisicao exame = new ItemRequisicao
                    {
                        DataCadastro = DateTime.Now,
                        ExameId      = item.ExameId,
                        RequisicaoId = requisicao.Id,
                        Valor        = item.Valor
                    };
                    totalRequisicao += item.Valor;
                    _context.ItemRequisicao.Add(exame);
                }
                requisicao.Valor = totalRequisicao;
                requisicao.Total = totalRequisicao;
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["ConvenioId"]    = new SelectList(_context.Convenio, "Id", "Nome", requisicao.ConvenioId);
            ViewData["ExameId"]       = new SelectList(_context.Exame, "Id", "Codigo", requisicao.ExameId);
            ViewData["PacienteId"]    = new SelectList(_context.Paciente, "Id", "Nome", requisicao.PacienteId);
            ViewData["PostoColetaId"] = new SelectList(_context.PostoColeta, "Id", "Nome", requisicao.PostoColetaId);
            ViewData["SolicitanteId"] = new SelectList(_context.Solicitante, "Id", "Nome", requisicao.SolicitanteId);
            return(View(requisicao));
        }
        public async Task <UpdateQuantidadeResponse> UpdateQuantidadeAsync(ItemRequisicao itemPedido)
        {
            var itemPedidoDB = await GetItemPedidoAsync(itemPedido.Id);

            if (itemPedidoDB != null)
            {
                itemPedidoDB.AtualizaQuantidade(itemPedido.Quantidade);

                if (itemPedido.Quantidade == 0)
                {
                    await RemoveItemPedidoAsync(itemPedido.Id);
                }

                await contexto.SaveChangesAsync();

                var pedido = await GetRequisicao();

                var carrinhoViewModel = new CarrinhoViewModel(pedido.ItemRequisicao);

                return(new UpdateQuantidadeResponse(itemPedidoDB, carrinhoViewModel));
            }

            throw new ArgumentException("ItemPedido não encontrado");
        }
 public UpdateQuantidadeResponse(ItemRequisicao itemPedido, CarrinhoViewModel carrinhoViewModel)
 {
     ItemPedido        = itemPedido;
     CarrinhoViewModel = carrinhoViewModel;
 }
 public async Task <UpdateQuantidadeResponse> UpdateQuantidade([FromBody] ItemRequisicao itemPedido)
 {
     return(await RepositoryRequisicao.UpdateQuantidadeAsync(itemPedido));
 }