public void cadastrarPedido(SolicitacaoMateriais objSolicitacao) { //Atualiza a solicitação no db SolicitacaoMateriaisDAO objSolicitacaoDAO = FactoryDAO.criarSolicitacaoMateriaisDAO(); if (objSolicitacaoDAO.atualizarSolicitacao(objSolicitacao)) { SolicitacaoMateriais objSolicitacaoProt = FactoryClasses.criarSolicitacaoMateriais(); objSolicitacaoProt.Codigo = objSolicitacao.Codigo; db = ServidorSingleton.obterServidor().OpenClient(); IObjectSet leitor = db.QueryByExample(objSolicitacaoProt); if (leitor.HasNext()) { objSolicitacaoProt = null; objSolicitacaoProt = (SolicitacaoMateriais)leitor.Next(); } leitor = null; Collection <Pedido> objPedidoColecao = new Collection <Pedido>(); foreach (Materiais material in objSolicitacaoProt.Materiais) { Pedido objPedido = FactoryClasses.criarPedido(); objPedido.SolicitacaoMateriais = objSolicitacaoProt; Collection <Materiais> objMateriaisColecao = new Collection <Materiais>(); objMateriaisColecao.Add(material); objPedido.Materiais = objMateriaisColecao; objPedido.Codigo = obtemNovoId(); db = ServidorSingleton.obterServidor().OpenClient(); db.Store(objPedido); db.Commit(); } //Le os pedidos Pedido objPedidoProt = FactoryClasses.criarPedido(); objPedidoProt.SolicitacaoMateriais = objSolicitacaoProt; db = ServidorSingleton.obterServidor().OpenClient(); IObjectSet leitorPedidoCache = db.QueryByExample(objPedidoProt); int codFornecedor = 0; int contador = 0; int codPedido = 0; while (leitorPedidoCache.HasNext()) { Pedido objPedidoLer = (Pedido)leitorPedidoCache.Next(); if (contador == 0) { codFornecedor = objPedidoLer.Materiais[0].Fornecedor.Codigo; } else { if (codFornecedor == objPedidoLer.Materiais[0].Fornecedor.Codigo) { //Retira os itens deste pedido e coloca no anterior Collection <Materiais> objMateriaisColecaoTmp = new Collection <Materiais>(); foreach (Materiais item in objPedidoLer.Materiais) { objMateriaisColecaoTmp.Add(item); } //exclui o pedido atual db.Delete(objPedidoLer); //Carrega o anterior em cache Pedido p = FactoryClasses.criarPedido(); p.Codigo = codPedido; IObjectSet leitorPedido2 = db.QueryByExample(p); if (leitorPedido2.HasNext()) { p = null; p = (Pedido)leitorPedido2.Next(); //Atualiza o pedido anterior com os dados do pedido que foi apagado foreach (Materiais item in p.Materiais) { objMateriaisColecaoTmp.Add(item); } p.Materiais = objMateriaisColecaoTmp; db.Store(p); db.Commit(); } leitorPedido2 = null; } } codFornecedor = objPedidoLer.Materiais[0].Fornecedor.Codigo; codPedido = objPedidoLer.Codigo; contador++; } leitorPedidoCache = null; db.Close(); db.Dispose(); } }
public Boolean validarSolicitacaoMateriais(SolicitacaoMateriais objSolicitacao) { SolicitacaoMateriaisDAO objSolicitacaoDAO = FactoryDAO.criarSolicitacaoMateriaisDAO(); return(objSolicitacaoDAO.atualizarSolicitacao(objSolicitacao)); }