/// <summary> /// Método para listar os Itens /// </summary> /// <param name="Item">Objeto com os dados do filtro</param> /// <returns>Contrato.RetornoItem</returns> internal static Contrato.RetornoItemPedido ListarItem(Contrato.EntradaItemPedido entradaItemPedido) { // Objeto que recebe o retorno do método Contrato.RetornoItemPedido retItemPedido = new Contrato.RetornoItemPedido(); // Objeto que recebe o retorno da sessão Contrato.RetornoSessao retSessao = Negocio.Sessao.ValidarSessao(new Contrato.Sessao() { Login = entradaItemPedido.UsuarioLogado, Chave = entradaItemPedido.Chave }); // Verifica se o usuário está autenticado if (retSessao.Codigo == Contrato.Constantes.COD_RETORNO_SUCESSO) { // Verifica se o fornecedor não foi informado if (entradaItemPedido.ItemPedido.Pedido == null) { entradaItemPedido.ItemPedido.Pedido = new Contrato.Pedido(); } // Loga no banco de dados Dados.BRASIL_DIDATICOS context = new Dados.BRASIL_DIDATICOS(); // Busca o produto no banco List<Dados.ITEM_PEDIDO> lstItems = null; if (entradaItemPedido.Paginar) { lstItems = (from i in context.T_ITEM_PEDIDO where (entradaItemPedido.ItemPedido.Pedido.Id == Guid.Empty || i.ID_PEDIDO == entradaItemPedido.ItemPedido.Pedido.Id) select i ).OrderBy(o => o.ID_PRODUTO).Skip(entradaItemPedido.PosicaoUltimoItem).Take(entradaItemPedido.CantidadeItens).ToList(); } else { lstItems = (from i in context.T_ITEM_PEDIDO where (entradaItemPedido.ItemPedido.Pedido.Id == Guid.Empty || i.ID_PEDIDO == entradaItemPedido.ItemPedido.Pedido.Id) select i ).ToList(); } // Verifica se foi encontrado algum registro if (lstItems.Count > 0) { // Preenche o objeto de retorno retItemPedido.Codigo = Contrato.Constantes.COD_RETORNO_SUCESSO; retItemPedido.Itens = new List<Contrato.ItemPedido>(); foreach (Dados.ITEM_PEDIDO item in lstItems) { retItemPedido.Itens.Add(new Contrato.ItemPedido() { Id = item.ID_ITEM_PEDIDO, Produto = Negocio.Produto.BuscarProduto(item.T_PRODUTO), Quantidade = item.NUM_QUANTIDADE, Valor = item.NUM_VALOR, ValorDesconto = item.NUM_DESCONTO, Pedido = Negocio.Pedido.BuscarPedido(item.T_PEDIDO) }); }; } else { // Preenche o objeto de retorno retItemPedido.Codigo = Contrato.Constantes.COD_RETORNO_VAZIO; retItemPedido.Mensagem = "Não existe dados para o filtro informado."; } } else { // retorna quando o usuário não está autenticado retItemPedido.Codigo = retSessao.Codigo; retItemPedido.Mensagem = retSessao.Mensagem; } // retorna os dados return retItemPedido; }
/// <summary> /// Método para salvar os item do pedido /// </summary> /// <param name="ItemPedido">Objeto com os dados do item</param> /// <returns>Contrato.RetornoItem</returns> internal static Contrato.RetornoItemPedido SalvarItemPedidoPedido(Dados.PEDIDO Pedido, string UsuarioLogado, Contrato.ItemPedido ItemPedido) { // Objeto que recebe o retorno do método Contrato.RetornoItemPedido retItemPedido = new Contrato.RetornoItemPedido(); // Loga no banco de dados Dados.BRASIL_DIDATICOS context = new Dados.BRASIL_DIDATICOS(); // Cria o item Dados.ITEM_PEDIDO tItemPedido = new Dados.ITEM_PEDIDO() { ID_ITEM_PEDIDO = Guid.NewGuid(), ID_PEDIDO = Pedido.ID_PEDIDO, NUM_QUANTIDADE = ItemPedido.Quantidade, NUM_VALOR = ItemPedido.Valor, NUM_DESCONTO = ItemPedido.ValorDesconto, LOGIN_USUARIO = UsuarioLogado, DATA_ATUALIZACAO = DateTime.Now }; if (ItemPedido.Produto != null) { tItemPedido.ID_PRODUTO = ItemPedido.Produto.Id; if (ItemPedido.UnidadeMedida != null) tItemPedido.ID_UNIDADE_MEDIDA = ItemPedido.UnidadeMedida.Id; // Verifica se o pedido foi aprovado if (Pedido.T_ESTADO_PEDIDO != null && Pedido.T_ESTADO_PEDIDO.COD_ESTADO_PEDIDO == string.Format("0{0}", (int)Contrato.Enumeradores.EstadoPedido.Aprovado)) { // Atualiza a quantidade de produtos if (ItemPedido.UnidadeMedida != null && ItemPedido.UnidadeMedida.Id != Guid.Empty) { Contrato.UnidadeMedida uMedida = ItemPedido.Produto.UnidadeMedidas.Where(um => um.Id == ItemPedido.UnidadeMedida.Id).FirstOrDefault(); if (uMedida != null) { uMedida.Quantidade = uMedida.Quantidade + ItemPedido.Quantidade; context.T_PRODUTO.Where(p => p.ID_PRODUTO == ItemPedido.Produto.Id).FirstOrDefault().NUM_VALOR = ItemPedido.Valor / uMedida.QuantidadeItens; context.T_PRODUTO_UNIDADE_MEDIDA.Where(pum => pum.ID_UNIDADE_MEDIDA == uMedida.Id && pum.ID_PRODUTO == ItemPedido.Produto.Id).FirstOrDefault().NUM_QUANTIDADE = uMedida.Quantidade; } } else { ItemPedido.Produto.Quantidade = ItemPedido.Produto.Quantidade + ItemPedido.Quantidade; Dados.PRODUTO objProduto = context.T_PRODUTO.Where(p => p.ID_PRODUTO == ItemPedido.Produto.Id).FirstOrDefault(); objProduto.NUM_QUANTIDADE = ItemPedido.Quantidade; objProduto.NUM_VALOR = ItemPedido.Valor; } } } Pedido.T_ITEM_PEDIDO.Add(tItemPedido); // Salva as alterações context.SaveChanges(); // Preenche o objeto de retorno retItemPedido.Codigo = Contrato.Constantes.COD_RETORNO_SUCESSO; // retorna dos dados return retItemPedido; }