예제 #1
0
        public bool FazLogin(int id, string nome, int nivel, int avatar)
        {
            try
            {
                if (this.SessaoIniciada)
                {
                    throw new Exception("Já existe uma sessão iniciada!");
                }

                HttpContext.Current.Response.Cookies["id"].Value       = id.ToString();
                HttpContext.Current.Response.Cookies["nome"].Value     = nome;
                HttpContext.Current.Response.Cookies["nivel"].Value    = nivel.ToString();
                HttpContext.Current.Response.Cookies["avatar"].Value   = avatar.ToString();
                HttpContext.Current.Response.Cookies["unixTime"].Value = Diversos.ObterTempoUnixAtual().ToString();

                return(true);
            }
            catch (Exception ex)
            {
                Debug.WriteLine("FazLogin(): " + ex.Message);
                this.LimpaDados();

                return(false);
            }
        }
        public async Task <IActionResult> Download(int id)
        {
            try
            {
                var _arquivoProjeto = _documentoRepository.GetById(id);
                //string sTipo;

                if (_arquivoProjeto.sNomeArquivo == null)
                {
                    return(Content("Arquivo não encontrado"));
                }

                string path   = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot\\arquivos", _arquivoProjeto.sNomeArquivo);
                var    memory = new MemoryStream();
                using (var stream = new FileStream(path, FileMode.Open))
                {
                    await stream.CopyToAsync(memory);
                }
                memory.Position = 0;

                return(File(memory, Diversos.GetContentType(path), Path.GetFileName(path)));
            }
            catch (Exception)
            {
                throw;
            }
        }
        public int Delete(int id)
        {
            try
            {
                var _arquivoProjeto = _arquivoRepository.GetById(id);
                _arquivoRepository.Remove(_arquivoProjeto);
                string sTipo;


                if (_arquivoProjeto.iTipo == 1)
                {
                    sTipo = "INSTITUICAO";
                }
                else
                {
                    sTipo = "PROJETO";
                }

                string path = Diversos.PathArquivo(_arquivoProjeto.sNomebase, sTipo);

                System.IO.File.Delete(path);

                return(1);
            }
            catch (System.Exception)
            {
                return(0);
            }
        }
예제 #4
0
        private void btEnviar_Click(object sender, EventArgs e)
        {
            MensagemBE mensagem = new MensagemBE();

            mensagem.Destinatario = txtPara.Text;
            mensagem.Remetente    = txtDe.Text;
            mensagem.Assunto      = txtAssunto.Text;
            mensagem.Mensagem     = txtMensagem.Text;

            erro = new List <String>();

            this.Enabled     = false;
            pnStatus.Visible = true;
            pnStatus.Enabled = true;
            lbEnv.Enabled    = true;
            lbQtd.Enabled    = true;

            if (destinatarios.Count() == 0)
            {
                lbQtd.Text = "1 de 1";
                Form.ActiveForm.Refresh();
                AcaoEnviar(mensagem);
            }
            else
            {
                var x = 0;
                foreach (var des in destinatarios)
                {
                    x++;
                    lbQtd.Text = x.ToString() + " de " + destinatarios.Count().ToString();
                    Form.ActiveForm.Refresh();
                    var le = Diversos.SepararTexto(des, ';');
                    if (le.Count() > 0)
                    {
                        mensagem.Destinatario = le[0];
                        if (le.Count() > 1)
                        {
                            mensagem.Assunto = le[1];
                        }
                        AcaoEnviar(mensagem);
                    }
                }
            }

            this.Enabled     = true;
            pnStatus.Visible = false;

            if (erro.Count() > 0)
            {
                erro.Insert(0, "Alguns erros foram encontrados: \n");
                ValidaErros();
            }
            else
            {
                MessageBox.Show("Processo de envio de e-mail concluído com sucesso...");
            }

            this.Enabled = true;
        }
        public async Task <int> UploadAsync(IFormFile file, int IDInstituicaoProjeto, int iTipo)
        {
            if (file == null)
            {
                throw new Exception("File is null");
            }
            if (file.Length == 0)
            {
                throw new Exception("File is empty");
            }

            try
            {
                using (Stream stream = file.OpenReadStream())
                {
                    using (var binaryReader = new BinaryReader(stream))
                    {
                        var      fileContent = binaryReader.ReadBytes((int)file.Length);
                        string   sTipo;
                        string[] aFoto = file.FileName.Split('.');

                        Arquivo _arquivoProjeto = new Arquivo
                        {
                            sNome                = aFoto[0],
                            sNomebase            = IDInstituicaoProjeto + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + "." + aFoto[aFoto.Count() - 1],
                            IDInstituicaoProjeto = IDInstituicaoProjeto,
                            iTipo                = iTipo
                        };

                        _arquivoRepository.Add(_arquivoProjeto);

                        if (iTipo == 1)
                        {
                            sTipo = "INSTITUICAO";
                        }
                        else
                        {
                            sTipo = "PROJETO";
                        }

                        await Diversos.SaveImage(file, sTipo, _arquivoProjeto.sNomebase);
                    }
                }

                return(1);
            }
            catch (Exception)
            {
                return(0);
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            string query = Request.QueryString["ID"];

            if (!string.IsNullOrEmpty(query) && Diversos.IsNumeric(query))
            {
                ID = Convert.ToInt32(query);
            }

            if (!IsPostBack)
            {
                #region Preenche Infos

                try
                {
                    Maquina maquina = VARS.Maquinas.First(x => x.Id == ID);

                    if (maquina != null)
                    {
                        txtNomeMaquina.Value = maquina.Nome;

                        this.lblNomeMaquina.InnerText = this.Title = "Configurações Avançadas - " + maquina.Nome;

                        txtLimConformeMin.Value = maquina.Classe.Conforme.Min.ToString("0.000");
                        txtLimConformeMax.Value = maquina.Classe.Conforme.Max.ToString("0.000");

                        txtLimClasse2Min.Value    = maquina.Classe.Classe2.Min.ToString("0.000");
                        txtLimClasse2Max.Value    = maquina.Classe.Classe2.Max.ToString("0.000");
                        txtMaxPointsclasse2.Value = maquina.Classe.MaxPontosClasse2.ToString();

                        txtLimClasse3Min.Value    = maquina.Classe.Classe3.Min.ToString("0.000");
                        txtLimClasse3Max.Value    = maquina.Classe.Classe3.Max.ToString("0.000");
                        txtMaxPointsclasse3.Value = maquina.Classe.MaxPontosClasse3.ToString();

                        txtMaxPointsNC.Value        = maquina.Classe.MaxPontosNC.ToString();
                        txtSptempoMaxPointsNC.Value = Convert.ToInt32(maquina.Classe.SpTempoMaxPontosNC.TotalSeconds).ToString();
                    }
                    else
                    {
                        throw new Exception("sem dados lidos para a maquina " + ID);
                    }
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);
                }
                #endregion
            }
        }
        public static string GetAlertasProducao(string id, string DtInicio, string DtFim, string Offset)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(Offset) || !Diversos.IsNumeric(Offset))
                {
                    Offset = "0";
                }

                Maquina maquina = VARS.Maquinas.First(x => x.Id == Convert.ToInt32(id));

                //Populating a DataTable from database.
                DataTable dt = new DataTable();

                StringBuilder strQuery = new StringBuilder();
                strQuery.Append("SELECT TOP 1000 TipoAlerta.Tipo as 'A', (Alertas.Diametro + @OFFSET) AS 'D', FORMAT(Alertas.DataHora, 'dd/MM/yyyy HH:mm:ss') AS 'T' FROM Alertas ");
                strQuery.Append("INNER JOIN TipoAlerta ON Alertas.IdAlerta = TipoAlerta.Id ");
                strQuery.Append("WHERE Alertas.IdMaquina = @IdMaquina AND Alertas.DataHora BETWEEN @DATA1 AND @DATA2 ");
                strQuery.Append("ORDER BY Alertas.Id");

                if (maquina == null)
                {
                    throw new Exception("máquina não encontrada!");
                }
                else
                {
                    using (SqlConnection sqlConn = new SqlConnection(VARS.ConnectionString))
                        using (SqlCommand sqlCmd = new SqlCommand(strQuery.ToString(), sqlConn))
                        {
                            sqlCmd.Parameters.Add("@IdMaquina", SqlDbType.TinyInt).Value = Convert.ToInt32(id);
                            sqlCmd.Parameters.AddWithValue("@OFFSET", Convert.ToDouble(Offset.Replace(".", ",")));

                            sqlCmd.Parameters.Add("@DATA1", SqlDbType.DateTime).Value = DateTime.Parse(DtInicio);
                            sqlCmd.Parameters.Add("@DATA2", SqlDbType.DateTime).Value = DateTime.Parse(DtFim);

                            using (SqlDataAdapter sda = new SqlDataAdapter(sqlCmd))
                                sda.Fill(dt);
                        }
                }

                return(VARS.ConvertDataTabletoString(dt));
            }
            catch (Exception ex)
            {
                Debug.WriteLine("GetAlertasProducao(): " + ex.Message);

                return(string.Empty);
            }
        }
 //[Authorize]
 public int Delete(int iCodigo)
 {
     try
     {
         var _arquivoProjeto = _documentoRepository.GetById(iCodigo);
         _documentoRepository.Remove(_arquivoProjeto);
         string path = Diversos.PathArquivo(_arquivoProjeto.sNomeArquivo);
         System.IO.File.Delete(path);
         return(1);
     }
     catch (System.Exception)
     {
         return(0);
     }
 }
예제 #9
0
 public bool InRange(double value, bool incMin, bool incMax)
 {
     if (incMin && incMax)
     {
         return(Diversos.InRange(Math.Round(value, 3), this.Min, this.Max));
     }
     else if (!incMin && incMax)
     {
         return(Math.Round(value, 3) > this.Min && Math.Round(value, 3) <= this.Max);
     }
     else if (incMin && !incMax)
     {
         return(Math.Round(value, 3) >= this.Min && Math.Round(value, 3) < this.Max);
     }
     else
     {
         return(Math.Round(value, 3) > this.Min && Math.Round(value, 3) < this.Max);
     }
 }
예제 #10
0
        public VarsAuxiliares()
        {
            this.horaDeArranque = Diversos.ObterTempoUnixAtual();

            //Variáveis do LOG da aplicação
            string logDir     = Application.StartupPath + @"\Logs\Log.txt";
            int    logMaxSize = 5120;
            bool   logEnabled = true;

            #region Load configurations from INI File
            try
            {
                using (FicheiroINI ini = new FicheiroINI(iniPath))
                {
                    // Load Database configurations
                    this.DB_CONNECTION_STRING = @"data source=" + ini.RetornaINI("Database", "Address", ".") + @"\" + ini.RetornaINI("Database", "Instance", "SQLEXPRESS") + "; Initial Catalog=" + ini.RetornaINI("Database", "DBName", "CTRL_PROD") + "; MultipleActiveResultSets=True; persist security info=False; UID=" + ini.RetornaINI("Database", "User", "streak") + "; PWD=" + ini.RetornaINI("Database", "Pass", "streak") + ";";

                    this.IpDb = ini.RetornaINI("Database", "Address", ".");

                    #region Log
                    //Log da aplicação
                    logDir     = ini.RetornaINI("AppLog", "logDir", logDir);
                    logMaxSize = Convert.ToInt32(ini.RetornaINI("AppLog", "logMaxSize", Convert.ToString(logMaxSize)));
                    logEnabled = ini.RetornaTrueFalseDeStringFicheiroINI("AppLog", "logEnabled", logEnabled);
                    #endregion

                    // Diversos
                    this.LAST_LOCATION = new Point(Convert.ToInt32(ini.RetornaINI("App", "LocX", "0")), Convert.ToInt32(ini.RetornaINI("App", "Locy", "0")));

                    this.SETTINGS_UPDATE_RATE = Convert.ToInt32(ini.RetornaINI("App", "SETTINGS_UPDATE_RATE", this.SETTINGS_UPDATE_RATE.ToString()));
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error Loading Configs", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Environment.Exit(0);
            }
            #endregion

            this.LogDebug = new LogFile(logDir, logMaxSize, logEnabled);
        }
예제 #11
0
        static void Main()
        {
            if (Diversos.PrevineDuplaExecucao(false))
            {
                Environment.Exit(0);
            }
            else
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);

                Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);
                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

                SetUnhandledExceptionFilter(ptrToExceptionInfo =>
                {
                    var errorCode = "0x" + Marshal.GetExceptionCode().ToString("x2");
                    return(1);
                });

                //Start application
                Application.Run(Forms.MainForm);
            }
        }
        public async Task <IActionResult> Download(int id, int iTipo)
        {
            try
            {
                var    _arquivoProjeto = _arquivoRepository.GetById(id);
                string sTipo;

                if (_arquivoProjeto.sNome == null)
                {
                    return(Content("Arquivo não encontrado"));
                }

                if (iTipo == 1)
                {
                    sTipo = "INSTITUICAO";
                }
                else
                {
                    sTipo = "PROJETO";
                }

                string path = Diversos.PathArquivo(_arquivoProjeto.sNomebase, sTipo);

                var memory = new MemoryStream();
                using (var stream = new FileStream(path, FileMode.Open))
                {
                    await stream.CopyToAsync(memory);
                }
                memory.Position = 0;
                return(File(memory, Diversos.GetContentType(path), Path.GetFileName(path)));
            }
            catch (Exception)
            {
                throw;
            }
        }
        public static string GetGraph(string id, string DtInicio, string DtFim, string Offset)
        {
            //Populating a DataTable from database.
            DataTable dt = new DataTable();

            dt.Columns.Add("D", typeof(double));
            //dt.Columns.Add("C", typeof(int));
            dt.Columns.Add("T", typeof(string));

            int maxOfRecords = 1000;

            if (string.IsNullOrWhiteSpace(Offset) || !Diversos.IsNumeric(Offset))
            {
                Offset = "0";
            }

            try
            {
                Maquina maquina = VARS.Maquinas.First(x => x.Id == Convert.ToInt32(id));

                //   int lastSec = -1;

                if (maquina == null)
                {
                    throw new Exception("máquina não encontrada!");
                }
                else
                if (maquina.GraficoPontos.GetPoints(DateTime.Parse(DtInicio), DateTime.Parse(DtFim).AddMinutes(1).AddSeconds(-1), Convert.ToDouble(Offset.Replace(".", ","))))
                {
                    //get stats
                    LAST_SEARCH_STATS.Clear();
                    //get class
                    LAST_CLASS_TABLE.Clear();

                    LAST_CLASS = Classificacoes.Classificacao.Undefined;

                    long numPointsClasse2 = 0;
                    long numPointsClasse3 = 0;
                    long numPointsNC      = 0;

                    Classificacoes.Classificacao lastClass = Classificacoes.Classificacao.Undefined;

                    int increment = (int)Math.Ceiling((double)maquina.GraficoPontos.Pontos.Count / maxOfRecords);

                    for (int i = 0; i < maquina.GraficoPontos.Pontos.Count; i++)
                    {
                        if (i % increment == 0 || (maquina.GraficoPontos.Pontos[i].Classe != Classificacoes.Classificacao.Conforme && maquina.GraficoPontos.Pontos[i].Classe != lastClass))
                        {
                            // dt.Rows.Add(Math.Round(maquina.GraficoPontos.Pontos[i].Value, 3), (int)maquina.GraficoPontos.Pontos[i].Classe, maquina.GraficoPontos.Pontos[i].DataHora.ToString("dd/MM/yyyy HH:mm:ss"));
                            dt.Rows.Add(Math.Round(maquina.GraficoPontos.Pontos[i].Value, 3), maquina.GraficoPontos.Pontos[i].DataHora.ToString("dd/MM/yyyy HH:mm:ss"));
                        }

                        if (LAST_CLASS_TABLE.Count < 1000)
                        {
                            if (maquina.GraficoPontos.Pontos[i].Classe != Classificacoes.Classificacao.Conforme)
                            {
                                if (maquina.GraficoPontos.Pontos[i].Classe != lastClass)
                                {
                                    LAST_CLASS_TABLE.Add(maquina.GraficoPontos.Pontos[i]);
                                }
                            }
                        }
                        lastClass = maquina.GraficoPontos.Pontos[i].Classe;


                        if (maquina.GraficoPontos.Pontos[i].Classe == Classificacoes.Classificacao.Classe2)
                        {
                            numPointsClasse2++;
                        }
                        else if (maquina.GraficoPontos.Pontos[i].Classe == Classificacoes.Classificacao.Classe3)
                        {
                            numPointsClasse3++;
                        }
                        else if (maquina.GraficoPontos.Pontos[i].Classe == Classificacoes.Classificacao.NaoConforme)
                        {
                            numPointsNC++;
                        }
                    }

                    //analise a conformidade da bobine
                    if (numPointsNC > 0 || numPointsClasse3 > maquina.Classe.MaxPontosClasse3 || numPointsClasse2 > maquina.Classe.MaxPontosClasse2)
                    {
                        LAST_CLASS = Classificacoes.Classificacao.NaoConforme;
                    }
                    else if (numPointsClasse3 > 0)
                    {
                        LAST_CLASS = Classificacoes.Classificacao.Classe3;
                    }
                    else if (numPointsClasse2 > 0)
                    {
                        LAST_CLASS = Classificacoes.Classificacao.Classe2;
                    }
                    else
                    {
                        LAST_CLASS = Classificacoes.Classificacao.Conforme;
                    }

                    //get stats
                    double aux = Math.Round(maquina.GraficoPontos.Pontos.Select(x => x.Value).Average(), 3);
                    LAST_SEARCH_STATS.Add(new Maquina.PontosGraph.DataPoint(aux, DateTime.Now, maquina.Classe.GetClassificacao(aux)));
                    LAST_SEARCH_STATS.Add(maquina.GraficoPontos.Minimum);
                    LAST_SEARCH_STATS.Add(maquina.GraficoPontos.Maximum);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("GetGraph(): " + ex.Message);

                return(string.Empty);
            }

            return(VARS.ConvertDataTabletoString(dt));
        }
        public int GetChangerPassword(string sCNPJ, string password)
        {
            try
            {
                DateTime dDataEnvioHash = conn.Query <DateTime>("SELECT top(1) dDataEnvioHash FROM TB_INSTITUICAO WHERE sCNPJ =@sCNPJ ", new { sCNPJ }).FirstOrDefault();

                if (dDataEnvioHash <= DateTime.Now.AddDays(1))
                {
                    conn.Execute("UPDATE TB_INSTITUICAO SET sSenha=@sSenha,sHash = null,dDataEnvioHash = null WHERE sCNPJ = @sCNPJ ", new { sCNPJ, sSenha = Diversos.GenerateMD5(password) });
                    return(0);
                }
                else
                {
                    return(1);
                }
            }
            catch (Exception)
            {
                return(2);
            }
        }
        public int GetSend(string sCNPJ)
        {
            try
            {
                var config = new ConfigurationBuilder()
                             .SetBasePath(Directory.GetCurrentDirectory())
                             .AddJsonFile("appsettings.json")
                             .Build();

                Instituicao _instituicao = conn.Query <Instituicao>("SELECT top(1) * FROM TB_INSTITUICAO WHERE sCNPJ =@sCNPJ ", new { sCNPJ }).FirstOrDefault();

                // generate a 128-bit salt using a secure PRNG
                byte[] salt = new byte[128 / 8];
                using (var rng = RandomNumberGenerator.Create())
                {
                    rng.GetBytes(salt);
                }

                string sHash = Convert.ToBase64String(KeyDerivation.Pbkdf2(
                                                          password: sCNPJ,
                                                          salt: salt,
                                                          prf: KeyDerivationPrf.HMACSHA1,
                                                          iterationCount: 10000,
                                                          numBytesRequested: 256 / 8));

                string pattern     = @"(?i)[^0-9a-záéíóúàèìòùâêîôûãõç\s]";
                string replacement = "";
                Regex  rgx         = new Regex(pattern);
                string result      = rgx.Replace(sHash, replacement);

                conn.Execute("UPDATE TB_INSTITUICAO SET sHash=@sHash,dDataEnvioHash=GETDATE() WHERE sCNPJ = @sCNPJ ", new { sCNPJ, sHash = result });

                string _body = "";
                _body  = "<tr bgcolor='#D6EFDA'><td colspan=2  style='font-weight:bold'>INSTITUIÇÃO</td></tr>";
                _body += "<tr style='=font-weight:bold;'>";
                _body += "<td font-weight:bold'><b>Proponente: </b>" + _instituicao.sProponente + "</td>";
                _body += "<td font-weight:bold'><b>CNPJ: </b>" + _instituicao.sCNPJ + "</td></tr>";

                _body += "<tr bgcolor='#D6EFDA'><td colspan=2  style='font-weight:bold'>Não consegue lembrar sua senha? Não tem problema, acontece com todos nós. Para criar uma nova senha, clique no link abaixo:</td></tr>";
                _body += config.GetSection(key: "Config")["sHostChangeSenha"] + result;

                string strBody = "";
                strBody = strBody + "<html>";
                strBody = strBody + "<head>";
                strBody = strBody + "<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>";
                strBody = strBody + "<title>Untitled Document</title>";
                strBody = strBody + "</head>";
                strBody = strBody + "<body>";

                strBody = strBody + "<table style='font-family: verdana; font-size: 11px; color: #000000;' width='100%'>";
                strBody = strBody + "<tr align=center><td colspan=2><img src='cid:Imagem1' /></td></tr>";
                strBody = strBody + "<tr align=center><td colspan=2></td></tr>";
                strBody = strBody + "<tr style='=font-weight:bold;' align=center><td colspan=2>PROCURADORIA GERAL DE JUSTIÇA</td></tr>";
                strBody = strBody + "<tr style='=font-weight:bold;' align=center><td colspan=2>MINISTÉRIO PÚBLICO DO ESTADO DO CEARÁ</td></tr>";

                strBody = strBody + "<tr><td font-weight:bold'><p><p></td></tr> ";
                strBody = strBody + _body;
                strBody = strBody + "</table> ";
                strBody = strBody + "<br><br>";
                strBody = strBody + "Esta é uma  mensagem automática enviada pelo sistema. Não precisa responder.";
                strBody = strBody + "</body>";
                strBody = strBody + "</html>";

                Diversos.SendEmail(_instituicao.sEmail, "Mudança de senha FDID", strBody, null, null);

                return(1);
            }
            catch (Exception)
            {
                return(0);
            }
        }
예제 #16
0
        public void SendEmail(int IDProjeto, int iTipo)
        {
            string _body   = "";
            string strBody = "";

            var config = new ConfigurationBuilder()
                         .SetBasePath(Directory.GetCurrentDirectory())
                         .AddJsonFile("appsettings.json")
                         .Build();

            Projeto _projeto = GetById(IDProjeto);

            _body  = "<tr bgcolor='#D6EFDA'><td colspan=2  style='font-weight:bold'>INSTITUIÇÃO</td></tr>";
            _body += "<tr style='=font-weight:bold;'>";
            _body += "<td font-weight:bold'><b>Proponente: </b>" + _projeto.Instituicao.sProponente + "</td>";
            _body += "<td font-weight:bold'><b>CNPJ: </b>" + _projeto.Instituicao.sCNPJ + "</td></tr>";

            _body += "<tr style='=font-weight:bold;'>";
            _body += "<td font-weight:bold'><b>Endereço: </b>" + _projeto.Instituicao.sEndereco + "</td>";
            _body += "<td font-weight:bold'><b>CEP: </b>" + _projeto.Instituicao.sCep + "</td></tr>";

            _body += "<tr style='=font-weight:bold;'>";
            _body += "<td font-weight:bold'><b>Telefone: </b>" + _projeto.Instituicao.sTelefone + "</td>";
            _body += "<td font-weight:bold'<b>Fax: </b>" + _projeto.Instituicao.sFax + "</td></tr>";

            _body += "<tr style='=font-weight:bold;'>";
            _body += "<td font-weight:bold' colspan=2><b>Municipio: </b>" + _projeto.Instituicao.IDCidade + "</td></tr>";

            _body += "<tr style='=font-weight:bold;'>";
            _body += "<td font-weight:bold'<b>Email: </b>" + _projeto.Instituicao.sEmail + "</td>";
            _body += "<td font-weight:bold'><b>HomePage: </b>" + _projeto.Instituicao.sHomePage + "</td></tr>";

            _body += "<tr style='=font-weight:bold;'>";

            switch (_projeto.Instituicao.iRegime)
            {
            case 1:
                _body += "<td font-weight:bold'<b>Regime: </b>Direito Público</td>";

                break;

            case 2:
                _body += "<td font-weight:bold'<b>Regime: </b>Direito Privado</td>";

                break;
            }

            switch (_projeto.Instituicao.iEsfera)
            {
            case 1:
                _body += "<td font-weight:bold'<b>Esfera: </b>Federal</td></tr>";
                break;

            case 2:
                _body += "<td font-weight:bold'<b>Esfera: </b>Estadual</td></tr>";
                break;

            case 3:
                _body += "<td font-weight:bold'<b>Esfera: </b>Municipal</td></tr>";
                break;

            case 4:
                _body += "<td font-weight:bold'<b>Esfera: </b>Organização Ambientalista</td></tr>";
                break;

            case 5:
                _body += "<td font-weight:bold'<b>Esfera: </b>Outros</td></tr>";
                break;
            }

            _body += "<tr bgcolor='#D6EFDA'><td colspan=2  style='font-weight:bold'>REPRESENTANTE</td></tr>";

            _body += "<td font-weight:bold'><b>Representante: </b>" + _projeto.Instituicao.sRepresentante + "</td>";
            _body += "<td font-weight:bold'><b>Cpf: </b>" + _projeto.Instituicao.sCpfRepresentante + "</td>";
            _body += "<tr><td font-weight:bold'><b>Cargo: </b>" + _projeto.Instituicao.sCargo + "</td>";
            _body += "<td font-weight:bold'><b>Função: </b>" + _projeto.Instituicao.sFuncao + "</td></tr>";
            _body += "<tr><td font-weight:bold'><b>Rg: </b>" + _projeto.Instituicao.sRG + "</td>";
            _body += "<td font-weight:bold'><b>Órgão Expedidor: </b>" + _projeto.Instituicao.sOrgaoExpedidor + "</td></tr>";
            _body += "<tr><td font-weight:bold' colspan=2><b>Endereço Representante: </b>" + _projeto.Instituicao.sEnderecoRepresentante + "</td></tr>";
            _body += "<tr><td font-weight:bold'><b>Telefone: </b>" + _projeto.Instituicao.sTelefoneRepresentante + "</td>";
            _body += "<td font-weight:bold'><b>CEP: </b>" + _projeto.Instituicao.sCepRepresentante + "</td></tr>";

            _body += "<tr bgcolor='#D6EFDA'><td colspan=2  style='font-weight:bold'>COORDENADOR</td></tr>";
            _body += "<tr><td font-weight:bold'><b>Coordenador: </b>" + _projeto.Instituicao.sCoordenador + "</td>";
            _body += "<td font-weight:bold'><b>Cpf: </b>" + _projeto.Instituicao.sCPFCoordenador + "</td></tr>";
            _body += "<tr><td font-weight:bold'><b>Telefone: </b>" + _projeto.Instituicao.sTelefoneCoordenador + "</TD>";
            _body += "<td font-weight:bold'><b>Fax: </b>" + _projeto.Instituicao.sFaxCoordenador + "</td></tr>";

            _body += "<tr bgcolor='#D6EFDA'><td colspan=2  style='font-weight:bold'>PROJETO</td></tr>";

            _body += "<tr><td font-weight:bold' colspan=2><b>Título: </b>" + _projeto.sTitulo + "</td>";

            _body += "<tr><td font-weight:bold' colspan=2><b>Area </b></td></tr>";

            foreach (int item in _projeto.sArea)
            {
                switch (item)
                {
                case 1:
                    _body += "<tr><td font-weight:bold' colspan=2>Meio Ambiente</td></tr>";
                    break;

                case 2:
                    _body += "<tr><td font-weight:bold' colspan=2>Consumidor</td></tr>";
                    break;

                case 3:
                    _body += "<tr><td font-weight:bold' colspan=2>Defesa da Concorrencia</td></tr>";
                    break;

                case 4:
                    _body += "<tr><td font-weight:bold' colspan=2>Artístico</td></tr>";
                    break;

                case 5:
                    _body += "<tr><td font-weight:bold' colspan=2>Estítico</td></tr>";
                    break;

                case 6:
                    _body += "<tr><td font-weight:bold' colspan=2>Histórico</td></tr>";
                    break;

                case 7:
                    _body += "<tr><td font-weight:bold' colspan=2>Turístico</td></tr>";
                    break;

                case 8:
                    _body += "<tr><td font-weight:bold' colspan=2>Paisagismo</td></tr>";
                    break;

                case 9:
                    _body += "<tr><td font-weight:bold' colspan=2>Direitos Difusos</td></tr>";
                    break;

                case 10:
                    _body += "<tr><td font-weight:bold' colspan=2>Reaparelhamento e Modernização</td></tr>";
                    break;
                }
            }

            _body += "<tr><td font-weight:bold'><b>Município: </b>" + _projeto.IDCidade + "</td>";
            _body += "<tr><b>Número do Processo: </b>" + _projeto.sNoProcesso + "</td></tr>";
            _body += "<tr><td font-weight:bold'><b>Início: </b>" + _projeto.dDataInicio + "</td>";
            _body += "<td font-weight:bold'><b>Termino: </b>" + _projeto.dDataTermino + "</td></tr>";
            _body += "<tr><td font-weight:bold'><b>Valor do Projeto: </b>" + _projeto.mValor + "</td>";
            _body += "<td font-weight:bold'><b>Valor da Contrapartida: </b>" + _projeto.mValorContraPartida + "</td></tr>";
            _body += "<tr><td font-weight:bold' colspan=2><b>Resumo: </b>" + _projeto.tResumo + "</td></tr>";

            List <string> _anexos = new List <string>();

            foreach (Arquivo item in _projeto.Arquivo)
            {
                if (item != null)
                {
                    _anexos.Add(Diversos.PathArquivo(item.sNomebase, "PROJETO"));
                }
            }

            strBody = "";
            strBody = strBody + "<html>";
            strBody = strBody + "<head>";
            strBody = strBody + "<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>";
            strBody = strBody + "<title>Untitled Document</title>";
            strBody = strBody + "</head>";
            strBody = strBody + "<body>";

            strBody = strBody + "<table style='font-family: verdana; font-size: 11px; color: #000000;' width='100%'>";
            strBody = strBody + "<tr align=center><td colspan=2><img src='cid:Imagem1' /></td></tr>";
            strBody = strBody + "<tr align=center><td colspan=2></td></tr>";
            strBody = strBody + "<tr style='=font-weight:bold;' align=center><td colspan=2>PROCURADORIA GERAL DE JUSTIÇA</td></tr>";
            strBody = strBody + "<tr style='=font-weight:bold;' align=center><td colspan=2>MINISTÉRIO PÚBLICO DO ESTADO DO CEARÁ</td></tr>";

            strBody = strBody + "<tr><td font-weight:bold'><p><p></td></tr> ";
            strBody = strBody + _body;
            strBody = strBody + "</table> ";
            strBody = strBody + "<br><br>";
            strBody = strBody + "<a href='" + config.GetSection(key: "Config")["sSite"] + "'>Clique aqui para visualizar o projeto na íntegra, incluindo arquivos anexados!<a>";
            strBody = strBody + "<br><br>";
            strBody = strBody + "Esta é uma  mensagem automática enviada pelo sistema. Não precisa responder.";
            strBody = strBody + "</body>";
            strBody = strBody + "</html>";

            string sTitulo;

            if (iTipo == 1)
            {
                sTitulo = "[PROJETOS FDID] Novo projeto cadastrado";
            }
            else
            {
                sTitulo = "Atualização do Projetos FDID";
            }

            Diversos.SendEmail(config.GetSection(key: "Config")["sEmailSend"], sTitulo, strBody, _anexos, _projeto.Instituicao.sEmail);
        }
        public void SendEmail(int IDInstituicao)
        {
            string _body   = "";
            string strBody = "";

            var config = new ConfigurationBuilder()
                         .SetBasePath(Directory.GetCurrentDirectory())
                         .AddJsonFile("appsettings.json")
                         .Build();

            Instituicao _instituicao = GetById(IDInstituicao);

            _body  = "<tr bgcolor='#D6EFDA'><td colspan=2  style='font-weight:bold'>INSTITUIÇÃO</td></tr>";
            _body += "<tr style='=font-weight:bold;'>";
            _body += "<td font-weight:bold'><b>Proponente: </b>" + _instituicao.sProponente + "</td>";
            _body += "<td font-weight:bold'><b>CNPJ: </b>" + _instituicao.sCNPJ + "</td></tr>";

            _body += "<tr style='=font-weight:bold;'>";
            _body += "<td font-weight:bold'><b>Endereço: </b>" + _instituicao.sEndereco + "</td>";
            _body += "<td font-weight:bold'><b>CEP: </b>" + _instituicao.sCep + "</td></tr>";

            _body += "<tr style='=font-weight:bold;'>";
            _body += "<td font-weight:bold'><b>Telefone: </b>" + _instituicao.sTelefone + "</td>";
            _body += "<td font-weight:bold'<b>Fax: </b>" + _instituicao.sFax + "</td></tr>";

            _body += "<tr style='=font-weight:bold;'>";
            _body += "<td font-weight:bold' colspan=2><b>Municipio: </b>" + _instituicao.IDCidade + "</td></tr>";

            _body += "<tr style='=font-weight:bold;'>";
            _body += "<td font-weight:bold'<b>Email: </b>" + _instituicao.sEmail + "</td>";
            _body += "<td font-weight:bold'><b>HomePage: </b>" + _instituicao.sHomePage + "</td></tr>";

            _body += "<tr style='=font-weight:bold;'>";

            switch (_instituicao.iRegime)
            {
            case 1:
                _body += "<td font-weight:bold'<b>Regime: </b>Direito Público</td>";

                break;

            case 2:
                _body += "<td font-weight:bold'<b>Regime: </b>Direito Privado</td>";

                break;
            }

            switch (_instituicao.iEsfera)
            {
            case 1:
                _body += "<td font-weight:bold'<b>Esfera: </b>Federal</td></tr>";
                break;

            case 2:
                _body += "<td font-weight:bold'<b>Esfera: </b>Estadual</td></tr>";
                break;

            case 3:
                _body += "<td font-weight:bold'<b>Esfera: </b>Municipal</td></tr>";
                break;

            case 4:
                _body += "<td font-weight:bold'<b>Esfera: </b>Organização Ambientalista</td></tr>";
                break;

            case 5:
                _body += "<td font-weight:bold'<b>Esfera: </b>Outros</td></tr>";
                break;
            }

            _body += "<tr bgcolor='#D6EFDA'><td colspan=2  style='font-weight:bold'>REPRESENTANTE</td></tr>";

            _body += "<td font-weight:bold'><b>Representante: </b>" + _instituicao.sRepresentante + "</td>";
            _body += "<td font-weight:bold'><b>Cpf: </b>" + _instituicao.sCpfRepresentante + "</td>";
            _body += "<tr><td font-weight:bold'><b>Cargo: </b>" + _instituicao.sCargo + "</td>";
            _body += "<td font-weight:bold'><b>Função: </b>" + _instituicao.sFuncao + "</td></tr>";
            _body += "<tr><td font-weight:bold'><b>Rg: </b>" + _instituicao.sRG + "</td>";
            _body += "<td font-weight:bold'><b>Órgão Expedidor: </b>" + _instituicao.sOrgaoExpedidor + "</td></tr>";
            _body += "<tr><td font-weight:bold' colspan=2><b>Endereço Representante: </b>" + _instituicao.sEnderecoRepresentante + "</td></tr>";
            _body += "<tr><td font-weight:bold'><b>Telefone: </b>" + _instituicao.sTelefoneRepresentante + "</td>";
            _body += "<td font-weight:bold'><b>CEP: </b>" + _instituicao.sCepRepresentante + "</td></tr>";

            _body += "<tr bgcolor='#D6EFDA'><td colspan=2  style='font-weight:bold'>COORDENADOR</td></tr>";
            _body += "<tr><td font-weight:bold'><b>Coordenador: </b>" + _instituicao.sCoordenador + "</td>";
            _body += "<td font-weight:bold'><b>Cpf: </b>" + _instituicao.sCPFCoordenador + "</td></tr>";
            _body += "<tr><td font-weight:bold'><b>Telefone: </b>" + _instituicao.sTelefoneCoordenador + "</TD>";
            _body += "<td font-weight:bold'><b>Fax: </b>" + _instituicao.sFaxCoordenador + "</td></tr>";

            strBody = "";
            strBody = strBody + "<html>";
            strBody = strBody + "<head>";
            strBody = strBody + "<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>";
            strBody = strBody + "<title>Untitled Document</title>";
            strBody = strBody + "</head>";
            strBody = strBody + "<body>";

            strBody = strBody + "<table style='font-family: verdana; font-size: 11px; color: #000000;' width='100%'>";
            strBody = strBody + "<tr align=center><td colspan=2><img src='cid:Imagem1' /></td></tr>";
            strBody = strBody + "<tr align=center><td colspan=2></td></tr>";
            strBody = strBody + "<tr style='=font-weight:bold;' align=center><td colspan=2>PROCURADORIA GERAL DE JUSTIÇA</td></tr>";
            strBody = strBody + "<tr style='=font-weight:bold;' align=center><td colspan=2>MINISTÉRIO PÚBLICO DO ESTADO DO CEARÁ</td></tr>";

            strBody = strBody + "<tr><td font-weight:bold'><p><p></td></tr> ";
            strBody = strBody + _body;
            strBody = strBody + "</table> ";
            strBody = strBody + "<br><br>";
            strBody = strBody + "ATENÇÃO: O cadastro da instituição somente estará completo após a anexação dos arquivos relacionados à documentação comprobatória exigida em edital! ";
            strBody = strBody + "<a href='" + config.GetSection(key: "Config")["sSite"] + "'>Clique AQUI<a>";
            strBody = strBody + " para entrar no sistema e concluir o cadastro anexando os arquivos necessários.";
            strBody = strBody + "<br><br>";
            strBody = strBody + "Esta é uma  mensagem automática enviada pelo sistema. Não precisa responder.";
            strBody = strBody + "</body>";
            strBody = strBody + "</html>";

            Diversos.SendEmail(config.GetSection(key: "Config")["sEmailSend"], "[PROJETOS FDID] Nova instituição cadastrada", strBody, null, _instituicao.sEmail);
        }
예제 #18
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string query = Request.QueryString["ID"];

            if (!string.IsNullOrEmpty(query) && Diversos.IsNumeric(query))
            {
                ID = Convert.ToInt32(query);
            }
            else
            {
                Response.Redirect("/index.aspx?id=1");
            }



            #region Get Maquinas

            try
            {
                if (VARS.UserSession.SessaoIniciada)
                {
                    if (VARS.Maquinas.Count == 0)
                    {
                        Response.Redirect("/notfound.html");
                    }
                    else
                    if (VARS.Maquinas.Count == 1)
                    {
                        divSelectMaquinas.Style.Add("display", "none");
                    }
                    else
                    {
                        StringBuilder strRadios = new StringBuilder();

                        for (int i = 0; i < VARS.Maquinas.Count; i++)
                        {
                            strRadios.AppendLine("<div class=\"form-check\">");
                            strRadios.AppendLine("<label class=\"form-check-label\">");
                            strRadios.AppendLine("<input type=\"radio\" class=\"form-check-input\" name=\"choice\" value=\"" + VARS.Maquinas[i].Id.ToString() + "\" onclick=\"RadioClick();\"" + (VARS.Maquinas[i].Id == ID ? "checked" : "") + " > ");
                            strRadios.AppendLine(VARS.Maquinas[i].Nome);
                            strRadios.AppendLine("</label>");
                            strRadios.AppendLine("</div>");
                            strRadios.AppendLine("<div class=\"form-check\">");
                            strRadios.AppendLine("&nbsp  &nbsp  &nbsp");
                            strRadios.AppendLine("</div>");
                        }

                        divRadioButtons.InnerHtml = strRadios.ToString();
                    }

                    Maquina maq = VARS.Maquinas.Find(x => x.Id == ID);

                    if (maq != null)
                    {
                        ControloDiametro control = (ControloDiametro)LoadControl("/ControloDiametro.ascx");

                        control.IdLinha = ID;

                        pnlEspacoMaquinas.Controls.Add(control);
                    }
                    else
                    {
                        Response.Redirect("/index.aspx?id=1");
                    }
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Page_Load(): " + ex.Message);
            }
            #endregion
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            Debug.WriteLine("ConsultarRegistos Page_Load");

            string id = Request.QueryString["ID"];

            if (!string.IsNullOrEmpty(id) && Diversos.IsNumeric(id))
            {
                ID = Convert.ToInt32(id);
            }

            if (this.Maquina == null || this.Maquina.Id != ID)
            {
                Response.Redirect("/notfound.html", true);
            }

            if (!IsPostBack)
            {
                this.Title = "Controlo de Produção - " + this.Maquina.Nome;
                this.lblNomeMaquina.InnerText = this.Maquina.Nome;

                //vai buscar as datas
                try
                {
                    string dtInicio = Request.QueryString["DtInicio"];
                    if (!string.IsNullOrEmpty(dtInicio))
                    {
                        if (!DateTime.TryParse(dtInicio, out dateTimes[0]))
                        {
                            throw new Exception("DtInicio parse error");
                        }
                    }

                    string dtFim = Request.QueryString["DtFim"];
                    if (!string.IsNullOrEmpty(dtFim))
                    {
                        if (!DateTime.TryParse(dtFim, out dateTimes[1]))
                        {
                            throw new Exception("DtFim parse error");
                        }
                    }

                    if (dateTimes[0] == DateTime.MinValue || dateTimes[1] == DateTime.MinValue)
                    {
                        throw new Exception("Datetime == MinValue");
                    }

                    if (dateTimes[0] >= dateTimes[1])
                    {
                        throw new Exception("DtInicio >= DtFim");
                    }

                    string textOfst = Request.QueryString["Offset"];
                    if (string.IsNullOrEmpty(textOfst))
                    {
                        textOfst = "0";
                    }

                    if (Diversos.IsNumeric(textOfst))
                    {
                        double value = Convert.ToDouble(textOfst.Replace(".", ","));

                        if (value != 0)
                        {
                            txtOffset.Value = Convert.ToDouble(textOfst.Replace(".", ",")).ToString("0.000");
                        }
                    }

                    if (Diversos.CheckForInternetConnection())
                    {
                        string dominio = Convert.ToString(SQLHelper.ExecuteScalar("SELECT Value FROM Settings WHERE Id = 1", VARS.ConnectionString));

                        idQrCode.Src = @"https://chart.googleapis.com/chart?chs=190x190&cht=qr&chl=" + dominio +
                                       "ConsultarRegistos.aspx?id=" + id + "%26DtInicio=" + dtInicio + "%26DtFim=" + dtFim + "%26Offset=" + textOfst + "%26key=" +
                                       new GetKeys().Encripta(dtFim + id.ToString() + textOfst.Replace(".", ",") + dtInicio).Replace("+", "X").Replace("=", "Y");;
                        idDisplayQrCode.Style.Add("display", "block");
                    }

                    if (!this.SessaoIniciada)
                    { //se nao tem sessao iniciada esconde o txt do offset e botao de refresh
                        txtOffset.Disabled = true;
                        txtOffset.Style.Add("display", "none");
                        btnRefresh.HRef = "#";
                        btnRefresh.Style.Add("display", "none");
                    }


                    this.OrdUpdateChart = true;
                }
                catch (Exception ex)
                {
                    Debug.WriteLine("Erro ao obter datas: " + ex.Message);

                    dateTimes[0] = DateTime.Today;
                    dateTimes[1] = DateTime.Today.AddDays(1).AddSeconds(-1);
                    //   idQrCode.Style.Add("display", "none");
                }
            }
        }
예제 #20
0
        protected void btnIniciarSessao_ServerClick(object sender, EventArgs e)
        {
            try
            {
                if (VARS.UserSession.SessaoIniciada)
                {
                    throw new Exception("Já existe uma sessão iniciada!");
                }

                bool sessaoIniciou = false;
                int  idUsr         = 0;

                using (SqlConnection sqlConn = new SqlConnection(VARS.ConnectionString))
                {
                    using (SqlCommand sqlCmd = new SqlCommand("SELECT Id, Nome, Nivel, Avatar FROM UTILIZADORES WHERE Username LIKE @USER AND Password LIKE @PASS AND Id > 0", sqlConn))
                    {
                        sqlCmd.Parameters.Add("@USER", SqlDbType.NVarChar).Value = txtUsername.Value;
                        sqlCmd.Parameters.Add("@PASS", SqlDbType.NVarChar).Value = txtPassword.Value;

                        sqlConn.Open();

                        using (SqlDataReader dr = sqlCmd.ExecuteReader())
                            if (dr.Read())
                            {
                                idUsr         = Convert.ToInt32(dr[0]);
                                sessaoIniciou = VARS.UserSession.FazLogin(idUsr, Diversos.RemoveAcentos(Convert.ToString(dr[1])), Convert.ToInt32(dr[2]), Convert.ToInt32(dr[3]));
                            }
                            else
                            {
                                throw new Exception("Nenhum utilizador encontrado!");
                            }

                        sqlConn.Close();
                    }

                    if (sessaoIniciou)
                    {
                        using (SqlCommand sqlCmd = new SqlCommand("UPDATE UTILIZADORES SET UltimoAcesso = GETDATE() WHERE Id = @ID", sqlConn))
                        {
                            sqlCmd.Parameters.Add("@ID", SqlDbType.BigInt).Value = idUsr;

                            sqlConn.Open();

                            if (sqlCmd.ExecuteNonQuery() != 1)
                            {
                                throw new Exception("Erro ao atualizar datetime acesso em base de dados!");
                            }

                            sqlConn.Close();
                        }
                    }
                }

                if (sessaoIniciou)
                {
                    Response.Redirect("/index.aspx");
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("btnLogin_ServerClick(): " + ex.Message);
                lblError.Visible = true;
            }
        }
        protected void btnExportExcel_ServerClick(object sender, EventArgs e)
        {
            try
            {
                ExcelPackage pck = new ExcelPackage();

                List <double> columnWiths = new List <double>()
                {
                    15.43, 17.86, 15.43, 9.29, 13.43, 17.86, 0.83, 12.71, 9.29, 13.43, 11, 0.83, 13.43, 13.71, 15, 16, 0.83, 11, 9.29, 13.43
                };

                DateTime lastDate = DateTime.MinValue.Date;

                int linha   = 8;
                int wsIndex = 0;

                DateTime startDt = DateTime.MinValue;
                DateTime endDt   = DateTime.MinValue;

                foreach (Maquina.PontosGraph.DataPoint ponto in this.Maquina.GraficoPontos.Pontos)
                {
                    ExcelWorksheet ws = null;

                    #region é nova data
                    if (ponto.DataHora.Date != lastDate)
                    {
                        // Faz os cálculos da folha anterior antes de transicionar para a seguinte
                        if (pck.Workbook.Worksheets.Count > 0)
                        {
                            this.DoWorksheetCalcs(pck.Workbook.Worksheets[wsIndex], linha, startDt, endDt);
                        }

                        #region Cria uma nova folha

                        ws      = pck.Workbook.Worksheets.Add(ponto.DataHora.Date.ToString("dd/MM/yyyy"));
                        wsIndex = pck.Workbook.Worksheets.Count - 1;

                        ws.DefaultRowHeight = 15;

                        startDt = ponto.DataHora;

                        // Tamanho das Colunas
                        for (int i = 0; i < columnWiths.Count; i++)
                        {
                            ws.Column(i + 1).Width = columnWiths[i];
                        }


                        var pic = ws.Drawings.AddPicture("QR Code", Diversos.DownloadImagemFromWeb(idQrCode.Src));
                        pic.SetPosition(0, 1, 0, 18);

                        //  qr code
                        var cell = ws.Cells["A11:B12"];
                        cell.Value                     = "Este relatório pode ser consultado acedendo ao QR code acima";
                        cell.Merge                     = true;
                        cell.Style.WrapText            = true;
                        cell.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;

                        //Titulo

                        cell = ws.Cells["C1:T4"];
                        this.SetCellStyle(cell, "Carta de Controlo de Produção", true, 22, ExcelHorizontalAlignment.Center, ExcelVerticalAlignment.Center);
                        cell.Merge = true;

                        //detalhes relatorio
                        cell = ws.Cells["C6:F6"];
                        this.SetCellStyle(cell, "Detalhes do Relatório", true, 12, ExcelHorizontalAlignment.Center, ExcelVerticalAlignment.Center);
                        cell.Merge = true;

                        ws.Cells["C7"].Value  = "Máquina";
                        ws.Cells["C8"].Value  = "Primeiro Registo";
                        ws.Cells["C9"].Value  = "Último Registo";
                        ws.Cells["C10"].Value = "Total Registos";
                        ws.Cells["C11"].Value = "Classificação";

                        cell = ws.Cells["D7:F7"];
                        this.SetCellStyle(cell, Maquina.Nome, true, 11, ExcelHorizontalAlignment.Center, ExcelVerticalAlignment.Center);
                        cell.Merge = true;

                        //calculos classe
                        for (int i = 0; i < 2; i++)
                        {
                            ws.Cells["E" + (8 + i).ToString()].Formula = "=IF(AND(D" + (8 + i).ToString() + " >= O8,D" + (8 + i).ToString() + " <= P8),\"Conforme\", IF(AND(D" + (8 + i).ToString() + " >= O9,D" + (8 + i).ToString() + " < P9),\"Classe 2\", IF(AND(D" + (8 + i).ToString() + " >= O10, D" + (8 + i).ToString() + " < P10),\"Classe 3\",\"Não Conforme\")))";
                            ws.Cells["E" + (8 + i).ToString()].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
                        }

                        ws.Cells["D11:F11"].Merge = true;

                        cell = ws.Cells["C6:F11"];
                        SetBorderCells(cell, ExcelBorderStyle.Thin);  //border around table
                        cell.Style.Border.BorderAround(ExcelBorderStyle.Medium);


                        //medias moveis
                        cell = ws.Cells["H6:K6"];
                        this.SetCellStyle(cell, "Médias Móveis", true, 12, ExcelHorizontalAlignment.Center);
                        cell.Merge = true;

                        this.SetCellStyle(ws.Cells["I7"], "Valor", true, 12, ExcelHorizontalAlignment.Center);
                        this.SetCellStyle(ws.Cells["J7"], "Classe", true, 12, ExcelHorizontalAlignment.Center);
                        this.SetCellStyle(ws.Cells["K7"], "Hora", true, 12, ExcelHorizontalAlignment.Center);

                        ws.Cells["H8"].Value  = "Valor Médio";
                        ws.Cells["H9"].Value  = "Valor Mínimo";
                        ws.Cells["H10"].Value = "Valor Máximo";
                        ws.Cells["H11"].Value = "Amplitude";

                        //calculos classe
                        for (int i = 0; i < 3; i++)
                        {
                            ws.Cells["J" + (8 + i).ToString()].Formula = "=IF(AND(I" + (8 + i).ToString() + " >= O8,I" + (8 + i).ToString() + " <= P8),\"Conforme\", IF(AND(I" + (8 + i).ToString() + " >= O9,I" + (8 + i).ToString() + " < P9),\"Classe 2\", IF(AND(I" + (8 + i).ToString() + " >= O10, I" + (8 + i).ToString() + " < P10),\"Classe 3\",\"Não Conforme\")))";
                            ws.Cells["J" + (8 + i).ToString()].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
                        }

                        cell = ws.Cells["H6:K11"];
                        SetBorderCells(cell, ExcelBorderStyle.Thin);  //border around table
                        cell.Style.Border.BorderAround(ExcelBorderStyle.Medium);

                        //Pontos fora de especificacao
                        cell = ws.Cells["M6:P6"];
                        this.SetCellStyle(cell, "Pontos Fora de Especificação", true, 12, ExcelHorizontalAlignment.Center);
                        cell.Merge = true;

                        this.SetCellStyle(ws.Cells["N7"], "Nº Pontos", true, 12, ExcelHorizontalAlignment.Center);
                        this.SetCellStyle(ws.Cells["O7"], "Limite Mínimo", true, 12, ExcelHorizontalAlignment.Center);
                        this.SetCellStyle(ws.Cells["P7"], "Limite Máximo", true, 12, ExcelHorizontalAlignment.Center);

                        ws.Cells["M8"].Value  = "Conforme";
                        ws.Cells["M9"].Value  = "Classe 2";
                        ws.Cells["M10"].Value = "Classe 3";
                        ws.Cells["M11"].Value = "Não Conforme";

                        //limit conform
                        ws.Cells["O8"].Value = Maquina.Classe.Conforme.Min;
                        ws.Cells["P8"].Value = Maquina.Classe.Conforme.Max;

                        //limit CLASSE 2
                        ws.Cells["O9"].Value = Maquina.Classe.Classe2.Min;
                        ws.Cells["P9"].Value = Maquina.Classe.Classe2.Max;

                        //limit CLASS 3
                        ws.Cells["O10"].Value = Maquina.Classe.Classe3.Min;
                        ws.Cells["P10"].Value = Maquina.Classe.Classe3.Max;

                        ////limit NC
                        //this.SetCellStyle(ws.Cells["O11"], "---", false, 11, ExcelHorizontalAlignment.Center);
                        //this.SetCellStyle(ws.Cells["P11"], "---", false, 11, ExcelHorizontalAlignment.Center);

                        cell = ws.Cells["M6:P11"];
                        SetBorderCells(cell, ExcelBorderStyle.Thin);  //border around table
                        cell.Style.Border.BorderAround(ExcelBorderStyle.Medium);

                        //Listagem de valores
                        cell = ws.Cells["R6:T6"];
                        this.SetCellStyle(cell, "Listagem de Pontos", true, 12, ExcelHorizontalAlignment.Center);
                        cell.Merge = true;

                        this.SetCellStyle(ws.Cells["R7"], "Hora", true, 12, ExcelHorizontalAlignment.Center);
                        this.SetCellStyle(ws.Cells["S7"], "Valor", true, 12, ExcelHorizontalAlignment.Center);
                        this.SetCellStyle(ws.Cells["T7"], "Classe", true, 12, ExcelHorizontalAlignment.Center);

                        linha = 8;
                        #endregion
                    }
                    lastDate = ponto.DataHora.Date;
                    #endregion

                    //add a new point

                    ws = pck.Workbook.Worksheets[wsIndex];

                    //data hora
                    var cells = ws.Cells["R" + linha.ToString()];
                    cells.Value = ponto.DataHora;
                    cells.Style.Numberformat.Format = "hh:mm:ss";

                    //VALUE
                    ws.Cells["S" + linha.ToString()].Value = ponto.Value;

                    //CLASSIFICACAO
                    cells         = ws.Cells["T" + linha.ToString()];
                    cells.Formula = "=IF(AND(S" + linha.ToString() + " >= O8,S" + linha.ToString() + " <= P8),\"Conforme\", IF(AND(S" + linha.ToString() + ">= O9,S" + linha.ToString() + "< P9),\"Classe 2\", IF(AND(S" + linha.ToString() + ">= O10, S" + linha.ToString() + "< P10),\"Classe 3\",\"Não Conforme\")))";
                    cells.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;


                    Color backColor = Color.White;

                    switch (ponto.Classe)
                    {
                    case Classificacoes.Classificacao.Conforme: backColor = Color.PaleGreen; break;

                    case Classificacoes.Classificacao.Classe2: backColor = Color.Yellow; break;

                    case Classificacoes.Classificacao.Classe3: backColor = Color.Orange; break;

                    case Classificacoes.Classificacao.NaoConforme: backColor = Color.Red; break;
                    }

                    if (backColor != Color.White)
                    {
                        this.SetCellsBackcolor(ws.Cells["R" + linha.ToString() + ":T" + linha.ToString()], backColor);
                    }

                    endDt = ponto.DataHora;


                    linha++;
                }

                //obrigatoriamente faz os calculos na ultima folha
                this.DoWorksheetCalcs(pck.Workbook.Worksheets[wsIndex], linha, startDt, endDt);


                #region EXPORT FILE TO CLIENT

                //EXPORT FILE TO CLIENT


                Response.Clear();
                Response.BinaryWrite(pck.GetAsByteArray());
                Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                Response.AddHeader("content-disposition", "attachment;  filename=carta controlo.xlsx");
                Response.AddHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
                Response.End();
                #endregion
            }
            catch (Exception ex)
            {
                Debug.WriteLine("btnExportExcel_ServerClick(): " + ex.Message);
            }
        }
 //public Instituicao GetAuthenticate(string cnpj, string password) => conn.Query<Instituicao>("SELECT * FROM TB_INSTITUICAO WHERE sCNPJ = '82246853000172' AND sSenha='81DC9BDB52D04DC20036DBD8313ED055' ", new { cnpj, password = Diversos.GenerateMD5(password) }).FirstOrDefault();
 public Instituicao GetAuthenticate(string cnpj, string password) => conn.Query <Instituicao>("SELECT * FROM TB_INSTITUICAO WHERE sCNPJ = @cnpj AND sSenha=@sSenha ", new { cnpj, sSenha = Diversos.GenerateMD5(password) }).FirstOrDefault();