public void DarBaixa(PedidoDao pedidoDao) { try { Pedido pedido; ValidarDarBaixa(pedidoDao, out pedido); // pedido produto var pedidoProduto = pedido.PedidoProduto.FirstOrDefault(x => x.ProdutoID == pedidoDao.PedidoProdutoDao.FirstOrDefault().ProdutoID); pedidoProduto.DataBaixa = pedidoDao.PedidoProdutoDao.FirstOrDefault().DataBaixa; pedidoProduto.UsuarioBaixaID = pedidoDao.PedidoProdutoDao.FirstOrDefault().UsuarioBaixaDao.UsuarioID; // se não há data de entrega cadastrada, a data e usuário da baixa são iguais a da data e usuario da entrega if (pedidoProduto.DataEntrega == null || pedidoProduto.DataEntrega == DateTime.MinValue) { pedidoProduto.DataEntrega = pedidoDao.PedidoProdutoDao.FirstOrDefault().DataBaixa; pedidoProduto.UsuarioEntregaID = pedidoDao.PedidoProdutoDao.FirstOrDefault().UsuarioBaixaDao.UsuarioID; } // loja saída var ls = pedido.LojaSaida.LojaProduto.FirstOrDefault(x => x.ProdutoID == pedidoProduto.ProdutoID && x.LojaID == pedidoDao.LojaSaidaDao.FirstOrDefault().LojaID); if (ls == null) { throw new BusinessException($"Produto {pedidoProduto.ProdutoID} não cadastrado na loja {pedidoDao.LojaSaidaDao.FirstOrDefault().LojaID}"); } ls.Quantidade = Convert.ToInt16(ls.Quantidade - pedidoProduto.Quantidade); pedidoRepository.DarBaixa(pedido, pedidoDao.PedidoStatusDao.FirstOrDefault().PedidoStatusID); } catch (BusinessException ex) { throw ex; } catch (Exception ex) { logRepository.Incluir(new Log() { Descricao = ex.ToString(), DataHora = DateTime.Now }); throw ex; } }