private void ImportarCiclo(ImportarCiclo ciclo) { try { // Inclui o ciclo no banco de dados CicloDAO.inserirCiclo(ciclo.ciclo); ciclo.ciclo.id = CicloDAO.retornaId(ciclo.ciclo); // Insere as leituras da ciclo if (ciclo.ciclo.tipoCRG == 2) { LeiturasCicloDAO.inserirLeiturasCiclo150(ciclo.leiturasCiclo, 0, ciclo.ciclo); } else { LeiturasCicloDAO.inserirLeiturasCiclo(ciclo.leiturasCiclo, 0, ciclo.ciclo); } // Caso haja tratamento, insere-se neste método if (ciclo.leiturasTratamento.Count > 0) { if (ciclo.ciclo.tipoCRG == 2) { LeiturasTratDAO.inserirLeiturasTratamento150(ciclo.leiturasTratamento, 0, ciclo.ciclo); } else { LeiturasTratDAO.inserirLeiturasTratamento(ciclo.leiturasTratamento, 0, ciclo.ciclo); } } foreach (var p in ciclo.produtosCiclo) { //Insere produtos do ciclo p.ciclo.id = ciclo.ciclo.id; ProdutoCicloDAO.inserirProdutoCiclo(p); } } catch (Exception exception) { throw new Exception(exception.Message); } }
private void Arquivo_Click(object sender, EventArgs e) { var crg = 0; if (Exportar.Checked) { salvarCiclo.RestoreDirectory = true; salvarCiclo.Title = "Exportar Ciclo para..."; salvarCiclo.Filter = "crg08 files(*.crg08)|*.crg08"; salvarCiclo.DefaultExt = "crg08"; salvarCiclo.CheckPathExists = true; var dialogResult = salvarCiclo.ShowDialog(this); if (dialogResult == DialogResult.OK) { var writer = new XmlTextWriter(salvarCiclo.FileName, null); // Gera o XML de cada ciclo try { writer.Formatting = Formatting.Indented; writer.WriteStartDocument(); writer.WriteStartElement("Ciclos"); for (int i = 0; i < dtgAndamento.RowCount; i++) { if (dtgAndamento.Rows[i].Cells[0].Value.ToString() == "True") { var id = int.Parse(dtgAndamento.Rows[i].Cells[1].Value.ToString()); crg = int.Parse(dtgAndamento.Rows[i].Cells[2].Value.ToString()); var ciclo = CicloDAO.buscaCiclo(crg, id); ExportarCiclo(writer, ciclo, i + 1); } } for (int i = 0; i < dtgFinalizados.RowCount; i++) { if (dtgFinalizados.Rows[i].Cells[0].Value.ToString() == "True") { var id = int.Parse(dtgFinalizados.Rows[i].Cells[1].Value.ToString()); crg = int.Parse(dtgFinalizados.Rows[i].Cells[2].Value.ToString()); var ciclo = CicloDAO.buscaCiclo(crg, id); ExportarCiclo(writer, ciclo, i + 1); } } writer.WriteFullEndElement(); writer.WriteEndDocument(); } catch (Exception error) { VO.LogErro logErro = new VO.LogErro(); logErro.crg = crg; logErro.descricao = "Erro ao tentar exportar"; string dataHora = DateTime.Now.ToString(); logErro.data = DateTime.Now; logErro.maisDetalhes = error.Message; LogErroDAO.inserirLogErro(logErro, logErro.crg); MessageBox.Show("Erro ao tentar exportar.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information); } finally { writer.Flush(); writer.Close(); var xmlDoc = new XmlDocument(); try { xmlDoc.PreserveWhitespace = true; xmlDoc.Load(salvarCiclo.FileName); } catch (Exception er) { Console.WriteLine(er.Message); } var cspParams = new CspParameters(); cspParams.KeyContainerName = "CRG08"; var rsaKey = new RSACryptoServiceProvider(cspParams); try { Crypto.Encrypt(xmlDoc, "Ciclo", "Ciclo", rsaKey, "rsaKey"); xmlDoc.Save(salvarCiclo.FileName); } catch (Exception er) { VO.LogErro logErro = new VO.LogErro(); logErro.crg = crg; logErro.descricao = "Erro ao tentar exportar"; string dataHora = DateTime.Now.ToString(); logErro.data = DateTime.Now; logErro.maisDetalhes = er.Message; LogErroDAO.inserirLogErro(logErro, logErro.crg); MessageBox.Show("Erro ao tentar exportar.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information); } CarregaCiclos(); MessageBox.Show("Ciclo exportado com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.None); } } } else { var listaCiclos = new List <ImportarCiclo>(); var importacaoCiclo = new ImportarCiclo(); var listaLeituras = new List <LeiturasCiclo>(); var listaTratamento = new List <LeiturasTrat>(); var produtosCiclos = new List <ProdutoCiclo>(); var tag = ""; var stream = new MemoryStream(); var xmlDocument = new XmlDocument(); var cspParams = new CspParameters(); abrirCiclo.RestoreDirectory = true; abrirCiclo.Title = "Importar Ciclo"; abrirCiclo.Filter = "crg08 files(*.crg08)|*.crg08"; abrirCiclo.DefaultExt = "crg08"; abrirCiclo.CheckPathExists = true; VO.Ciclos cicloTemp; VO.Ciclos cic = new VO.Ciclos(); var dialogResult = abrirCiclo.ShowDialog(this); if (dialogResult == DialogResult.OK) { try { cspParams.KeyContainerName = "CRG08"; var rsaKey = new RSACryptoServiceProvider(cspParams); xmlDocument.PreserveWhitespace = true; xmlDocument.Load(abrirCiclo.FileName); Crypto.Decrypt(xmlDocument, rsaKey, "rsaKey"); xmlDocument.Save(stream); stream.Flush(); stream.Position = 0; // Carrega os dados no Reader para ler var reader = new XmlTextReader(stream); reader.WhitespaceHandling = WhitespaceHandling.None; // Para ignorar espaço em branco // Carrega os dados de um ciclo, verifica se já existe e questiona // o usuário se ele deseja substituir e os próximos ciclos também while ((reader.Read())) { switch (reader.NodeType) { case XmlNodeType.EndElement: if (reader.Name == "Ciclo") { importacaoCiclo.leiturasCiclo = listaLeituras; importacaoCiclo.leiturasTratamento = listaTratamento; importacaoCiclo.produtosCiclo = produtosCiclos; importacaoCiclo.ciclo = cic; listaCiclos.Add(importacaoCiclo); importacaoCiclo = new ImportarCiclo(); listaLeituras = new List <LeiturasCiclo>(); listaTratamento = new List <LeiturasTrat>(); produtosCiclos = new List <ProdutoCiclo>(); cic = new VO.Ciclos(); } break; case XmlNodeType.Element: tag = reader.Name; if (tag == "LeituraCiclo") { listaLeituras.Add(CarregaLeiturasCiclo(reader.ReadSubtree())); } else if (tag == "LeituraTratamento") { listaTratamento.Add(CarregaLeituraTratamento(reader.ReadSubtree())); } else if (tag == "ProdutoCiclo") { produtosCiclos.Add(CarregaProdutos(reader.ReadSubtree())); } break; case XmlNodeType.Text: switch (tag) { // Cabeçalho case "Id": cic.id = Convert.ToInt32(reader.Value); break; case "CRG": cic.crg = Convert.ToInt32(reader.Value); break; case "NTrat": cic.nTrat = Convert.ToInt32(reader.Value); break; case "NL": cic.nl = Convert.ToInt32(reader.Value); break; case "BaseTempo": cic.baseTempo = Convert.ToInt32(reader.Value); break; case "NLT": cic.nlt = Convert.ToInt32(reader.Value); break; case "DataColeta": cic.dataColeta = Convert.ToDateTime(reader.Value); break; case "Descricao": cic.descricao = reader.Value; break; case "DataInicio": cic.dataInicio = Convert.ToDateTime(reader.Value); break; case "DataFim": cic.dataFim = Convert.ToDateTime(reader.Value); break; case "NLIniTrat": cic.NLIniTrat = Convert.ToInt32(reader.Value); break; case "TemperaturaControle": cic.temperaturaControle = Convert.ToSingle(reader.Value); break; case "TemperaturaTrat": cic.temperaturaTrat = Convert.ToSingle(reader.Value); break; case "TempoTrat": cic.tempoTrat = Convert.ToInt32(reader.Value); break; case "Responsavel": cic.responsavel = reader.Value; break; case "Operador": cic.operador = reader.Value; break; case "Situacao": cic.situacao = Convert.ToInt32(reader.Value); break; case "NumSerie": cic.numSerie = reader.Value; break; case "VersaoEquip": cic.versaoEquip = reader.Value; break; case "Histerese": cic.histerese = Convert.ToInt32(reader.Value); break; case "TControl": cic.tControl = Convert.ToInt32(reader.Value); break; case "NLAntesTrat": cic.nlAntesTrat = Convert.ToInt32(reader.Value); break; case "NLPostTrat": cic.nlPostTrat = Convert.ToInt32(reader.Value); break; case "Sensor": cic.sensor = Convert.ToInt32(reader.Value); break; case "CA": cic.CA = reader.Value; break; case "tipoCRG": cic.tipoCRG = Convert.ToInt32(reader.Value); break; } break; } } foreach (var ciclo in listaCiclos) { // Verifica se o ciclo está no banco de dados e add em um Obj temporário = cicloTemp cicloTemp = CicloDAO.testaCiclo(ciclo.ciclo); if (cicloTemp != null) { // Se o obj for diferente de nulo... if (MessageBox.Show("O ciclo de nº " + ciclo.ciclo.nTrat + " já existe no Banco de Dados. Deseja atualizar?", "Atenção", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes) { bool retorno = CicloDAO.alteraCiclo(ciclo.ciclo); if (retorno) { ProdutoCicloDAO.DeletaProdutosCiclo(ciclo.ciclo.id, ciclo.ciclo.crg); for (int i = 0; i < ciclo.produtosCiclo.Count; i++) { ciclo.produtosCiclo[i].ciclo = ciclo.ciclo; ProdutoCicloDAO.inserirProdutoCiclo(ciclo.produtosCiclo[i]); } if (ciclo.leiturasCiclo.Count > 0) { if (ciclo.ciclo.tipoCRG == 2) { LeiturasCicloDAO.inserirLeiturasCiclo150(ciclo.leiturasCiclo, ciclo.ciclo.nl, ciclo.ciclo); } else { LeiturasCicloDAO.inserirLeiturasCiclo(ciclo.leiturasCiclo, ciclo.ciclo.nl, ciclo.ciclo); } } if (ciclo.leiturasTratamento.Count > 0) { if (ciclo.ciclo.tipoCRG == 2) { LeiturasTratDAO.inserirLeiturasTratamento150(ciclo.leiturasTratamento, ciclo.ciclo.nlt, ciclo.ciclo); } else { LeiturasTratDAO.inserirLeiturasTratamento(ciclo.leiturasTratamento, ciclo.ciclo.nlt, ciclo.ciclo); } } } CarregaCiclos(); } } else { // Inclui a ciclo ImportarCiclo(ciclo); CarregaCiclos(); } } MessageBox.Show("Importação realizada com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.None); } catch (Exception ex) { VO.LogErro logErro = new VO.LogErro(); logErro.crg = crg; logErro.descricao = "Erro ao tentar importar ciclo"; logErro.data = DateTime.Now; logErro.maisDetalhes = ex.Message; LogErroDAO.inserirLogErro(logErro, logErro.crg); MessageBox.Show("Erro ao tentar importar.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } }