Example #1
0
        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);
            }
        }
Example #2
0
        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);
                    }
                }
            }
        }