public SolicitacaoTransporte CriarSolicitacaoTransporte(InformacoesColetaDTO _infoColeta) { using (var dbs = new dabbawalaContext()) { // Busca o cliente Cliente cliente = new ClienteDAL().GetByCNPJ(_infoColeta.CNPJCliente); if (cliente == null) { throw new Exception("Não foi encontrado cliente com o CNPJ informado"); } // Busca o destinatário PessoaJuridica destinatario = new PessoaJuridicaDAL().GetByCNPJ(_infoColeta.CNPJDestinatario); if (destinatario == null) { throw new Exception("Não foi encontrado destinatário com o CNPJ informado"); } // Busca o local de coleta; Endereco enderecoColeta = new EnderecoDAL().GetEndereco(_infoColeta.LocalColeta.Logradouro, _infoColeta.LocalColeta.Numero, _infoColeta.LocalColeta.Bairro, _infoColeta.LocalColeta.Municipio, _infoColeta.LocalColeta.UF); if (enderecoColeta == null) { throw new Exception("Não foi encontrado o endereco de coleta informado"); } // Busca o local de coleta; Endereco enderecoEntrega = new EnderecoDAL().GetEndereco(_infoColeta.LocalEntrega.Logradouro, _infoColeta.LocalEntrega.Numero, _infoColeta.LocalEntrega.Bairro, _infoColeta.LocalEntrega.Municipio, _infoColeta.LocalEntrega.UF); if (enderecoEntrega == null) { throw new Exception("Não foi encontrado o endereco de coleta informado"); } using (var trans = dbs.Database.BeginTransaction()) { var solicitacao = new SolicitacaoTransporte { // IdSolicitacao = dbs.SolicitacaoTransporte.Select(s => s.IdSolicitacao).DefaultIfEmpty(0).Max(), IdCliente = cliente.IdPessoa, IdLocalColeta = enderecoColeta.IdEndereco, IdDestinatario = destinatario.IdPessoa, IdLocalEntrega = enderecoEntrega.IdEndereco, IdTransportador = null, Observacoes = _infoColeta.Observacoes }; if (_infoColeta.Itens != null) { foreach (InformacoesItemsDTO infoItemDTO in _infoColeta.Itens) { // Busca o produto; Produto produto = new ProdutoDAL().GetProduto(infoItemDTO.Produto); if (produto == null) { throw new Exception("Não foi encontrado o produto informado"); } // Busca a unidade; Unidade unidade = new UnidadeDAL().GetUnidade(infoItemDTO.Unidade); if (unidade == null) { throw new Exception("Não foi encontrada a unidade informada"); } int qtde = 0; Int32.TryParse(infoItemDTO.Quantidade, out qtde); var item = new ItensSolicitacao { IdProduto = produto.IdProduto, IdUnidade = unidade.IdUnidade, Quantidade = qtde, IdSolicitacaoNavigation = solicitacao }; solicitacao.ItensSolicitacao.Add(item); } } dbs.SolicitacaoTransporte.Add(solicitacao); dbs.SaveChanges(); trans.Commit(); return(solicitacao); } } }
public void EditarSolicitacaoTransporte(InformacoesColetaDTO _infoColeta) { using (var dbs = new dabbawalaContext()) { // Busca o cliente Cliente cliente = new ClienteDAL().GetByCNPJ(_infoColeta.CNPJCliente); if (cliente == null) { throw new Exception("Não foi encontrado cliente com o CNPJ informado"); } // Busca o destinatário PessoaJuridica destinatario = new PessoaJuridicaDAL().GetByCNPJ(_infoColeta.CNPJDestinatario); if (destinatario == null) { throw new Exception("Não foi encontrado destinatário com o CNPJ informado"); } // Busca o local de coleta; Endereco enderecoColeta = new EnderecoDAL().GetEndereco(_infoColeta.LocalColeta.Logradouro, _infoColeta.LocalColeta.Numero, _infoColeta.LocalColeta.Bairro, _infoColeta.LocalColeta.Municipio, _infoColeta.LocalColeta.UF); if (enderecoColeta == null) { throw new Exception("Não foi encontrado o endereco de coleta informado"); } // Busca o local de coleta; Endereco enderecoEntrega = new EnderecoDAL().GetEndereco(_infoColeta.LocalEntrega.Logradouro, _infoColeta.LocalEntrega.Numero, _infoColeta.LocalEntrega.Bairro, _infoColeta.LocalEntrega.Municipio, _infoColeta.LocalEntrega.UF); if (enderecoEntrega == null) { throw new Exception("Não foi encontrado o endereco de coleta informado"); } using (var trans = dbs.Database.BeginTransaction()) { SolicitacaoTransporte solicitacao = dbs.SolicitacaoTransporte.Find(_infoColeta.ID); solicitacao.IdCliente = cliente.IdPessoa; solicitacao.IdLocalColeta = enderecoColeta.IdEndereco; solicitacao.IdDestinatario = destinatario.IdPessoa; solicitacao.IdLocalEntrega = enderecoEntrega.IdEndereco; solicitacao.IdTransportador = null; solicitacao.Observacoes = _infoColeta.Observacoes; // Remove todos os itenr atuais //solicitacao.ItensSolicitacao.Clear(); if (_infoColeta.Itens != null) { foreach (InformacoesItemsDTO infoItemDTO in _infoColeta.Itens) { // Busca o produto; Produto produto = new ProdutoDAL().GetProduto(infoItemDTO.Produto); if (produto == null) { throw new Exception("Não foi encontrado o produto informado"); } // Busca a unidade; Unidade unidade = new UnidadeDAL().GetUnidade(infoItemDTO.Unidade); if (unidade == null) { throw new Exception("Não foi encontrada a unidade informada"); } int qtde = 0; Int32.TryParse(infoItemDTO.Quantidade, out qtde); // Busca o item atual //ItensSolicitacao item = solicitacao.ItensSolicitacao.Where<ItensSolicitacao>(i => i.IdItemSolicitacao == infoItemDTO.ID).First(); ItensSolicitacao item = dbs.ItensSolicitacao.Find(infoItemDTO.ID); // Altera os valores do item atual item.IdProduto = produto.IdProduto; item.IdUnidade = unidade.IdUnidade; item.Quantidade = qtde; item.IdSolicitacaoNavigation = solicitacao; } } //dbs.SolicitacaoTransporte.Attach(solicitacao); dbs.SaveChanges(); trans.Commit(); } } }