private void rbMesAtual_CheckedChanged(object sender, EventArgs e)
        {
            dtpDataPesquisa1.Enabled   = false;
            dtpDataPesquisa2.Enabled   = false;
            btCarregarPesquisa.Enabled = false;


            label14.Enabled            = true;
            label16.Enabled            = true;
            label18.Enabled            = true;
            label9.Enabled             = true;
            lbHorasTrabalhadas.Enabled = true;
            lbTotalCredito.Enabled     = true;
            lbTotalDebito.Enabled      = true;
            lbSaldoMesAtual.Enabled    = true;


            dataGridView1.Enabled = false;
            LeituraArquivo();
            dataGridView1.Enabled = true;
            ConfiguraDataGrid();
            CalculaSaldoAtual();
            CalculaTempo();
            lbSaldoMesAtual.Text      = lbSaldoAtual.Text;
            lbSaldoMesAtual.ForeColor = (Metodos.PintaLabel(saldo));
        }
        private void btCarregarPesquisa_Click(object sender, EventArgs e)
        {
            label14.Enabled            = true;
            label16.Enabled            = true;
            label18.Enabled            = true;
            label9.Enabled             = true;
            lbHorasTrabalhadas.Enabled = true;
            lbTotalCredito.Enabled     = true;
            lbTotalDebito.Enabled      = true;
            lbSaldoMesAtual.Enabled    = true;

            dataGridView1.Enabled      = false;
            btCarregarPesquisa.Enabled = false;
            btCarregarPesquisa.Text    = "Processando...";

            LeituraArquivo();

            dataGridView1.Enabled      = true;
            btCarregarPesquisa.Text    = "Carregar Pesquisa";
            btCarregarPesquisa.Enabled = true;
            ConfiguraDataGrid();
            CalculaTempo();


            //Calcula tempo exclusivo do periodo escolhido da pesquisa
            saldo = totalcredito - totaldebito;

            lbSaldoMesAtual.Text      = (24 * saldo.Days + saldo.Hours) + ":" + Math.Abs(saldo.Minutes).ToString("00");
            lbSaldoMesAtual.ForeColor = (Metodos.PintaLabel(saldo));
        }
        public void CalculaSaldoAtual()
        {
            /*Caso o primeiro dia do arquivo texto não estiver dentro do mês atual
             * A lista chegará aqui sem conter nenhum elemento, então será necessário
             * Pegar uma referencia de saldo atual que será da última linha do arquivo*/
            if (Lista.Count == 0 && TrocaDeDados.saldoatual == null)
            {
                int    n           = 8;
                string ultimalinha = File.ReadLines("bancos.txt").Last();
                while (n > 0)
                {
                    ultimalinha = ultimalinha.Substring(ultimalinha.IndexOf('|') + 1);
                    n--;
                }

                TrocaDeDados.saldoatual = ultimalinha.Substring(0, ultimalinha.IndexOf('|'));
            }


            int hora   = Convert.ToInt16(TrocaDeDados.saldoatual.Substring(0, TrocaDeDados.saldoatual.IndexOf(':')));
            int minuto = Convert.ToInt16(TrocaDeDados.saldoatual.Substring(TrocaDeDados.saldoatual.IndexOf(':') + 1));

            if (hora < 0 || TrocaDeDados.saldoatual.Substring(0, 2) == "-0")//Quando a hora for negativa 0 o "-" aparece automaticamente 1...
            {
                minuto = minuto * -1;
            }
            saldo = new TimeSpan(hora, minuto, 0);

            if (TrocaDeDados.saldoatual.Substring(0, 2) == "-0")
            {
                //Quando a hora for '00:MM' por não enxergar que a hora é < 0
                // É nessário fazer esse if para colocar como negativo
                lbSaldoAtual.Text = "-" + (24 * saldo.Days + saldo.Hours) + ":" + Math.Abs(saldo.Minutes).ToString("00");
            }

            else
            {
                lbSaldoAtual.Text = (24 * saldo.Days + saldo.Hours) + ":" + Math.Abs(saldo.Minutes).ToString("00");
            }

            lbSaldoAtual.ForeColor = (Metodos.PintaLabel(saldo));
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (!ArquivoTextoVazio())
            {
                int    n           = 8;
                string ultimalinha = File.ReadLines("bancos.txt").Last();
                while (n > 0)
                {
                    ultimalinha = ultimalinha.Substring(ultimalinha.IndexOf('|') + 1);
                    n--;
                }

                TrocaDeDados.saldoatual = ultimalinha.Substring(0, ultimalinha.IndexOf('|'));
                int hora   = Convert.ToInt16(TrocaDeDados.saldoatual.Substring(0, TrocaDeDados.saldoatual.IndexOf(':')));
                int minuto = Convert.ToInt16(TrocaDeDados.saldoatual.Substring(TrocaDeDados.saldoatual.IndexOf(':') + 1));

                // if (hora < 0)
                if (saldo.Minutes < 0)//----> Alterado em 02/04/2018 para tentar resolver o problema da conta com minutos negativos
                {
                    minuto = minuto * -1;
                }
                saldo = new TimeSpan(hora, minuto, 0);
                lbSaldoMesAtual.Text      = (24 * saldo.Days + saldo.Hours) + ":" + Math.Abs(saldo.Minutes).ToString("00");
                lbSaldoMesAtual.ForeColor = (Metodos.PintaLabel(saldo));
            }



            try
            {
                if (Convert.ToDateTime(dtpDataCadastro.Text).Date >= DateTime.Now.Date)
                {
                    MessageBox.Show("Não foi possível cadastrar os dados." + Environment.NewLine + "Escolha uma data finalizada.",
                                    "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }



                string diasemana;

                TimeSpan almoco;
                TimeSpan total;
                TimeSpan credito;
                TimeSpan debito;
                //TimeSpan debitonegativo; //transforma o valor do debito para negativo necessário para fazer a conta do saldo
                TimeSpan tempo; //Tempo como referencia Entrada e Saida
                TimeSpan entrada = TimeSpan.Parse(txtEntrada.Text);
                TimeSpan saida   = TimeSpan.Parse(txtSaida.Text);



                #region MÉTODO SALVA DADOS NO ARQUIVO TXT

                void SalvaDados()
                {
                    File.AppendAllText("bancos.txt", dtpDataCadastro.Text + "|" + diasemana + "|" + TempoParaString(entrada) + "|" +
                                       TempoParaString(almoco) + "|" + TempoParaString(saida) + "|" + TempoParaString(total) + "|"
                                       + TempoParaString(credito) + "|" + TempoParaString(debito) + "|" + TempoParaString(ProximoSaldo(saldo, debito, credito)) + "|" + TrocaDeDados.saldoanterior + Environment.NewLine);
                }


                #endregion



                if (cbAlmoco.Checked)
                {
                    almoco = new TimeSpan(1, 0, 0);
                }
                else
                {
                    almoco = new TimeSpan(0, 0, 0);
                }


                total = AnalisaTotal(AnalisaEntrada(entrada), AnalisaSaida(saida), almoco);



                tempo     = new TimeSpan(8, 0, 0); //Tempo como referencia de entrada
                diasemana = ConverteDiaSemana((int)DateTime.Parse(dtpDataCadastro.Text).DayOfWeek);

                #region AQUI DEFINE OS VALORES DO DEBITO E DO CREDITO

                if (diasemana == "Sabado" || diasemana == "Domingo")
                {
                    debito  = new TimeSpan(0, 0, 0);
                    credito = AnalisaSaida(saida) - AnalisaEntrada(entrada);
                    if (cbAlmoco.Checked)
                    {
                        credito = credito - almoco;
                    }
                }

                else
                {
                    if (entrada.TotalMinutes != 0 && saida.TotalMinutes != 0)
                    {
                        if ((tempo - AnalisaEntrada(entrada)).TotalHours < 0)
                        {
                            credito = new TimeSpan(0, 0, 0);
                            debito  = AnalisaEntrada(entrada) - tempo;//inverte valor para ficar negativo
                        }

                        else
                        {
                            credito = tempo - AnalisaEntrada(entrada);
                            debito  = new TimeSpan(0, 0, 0);
                        }

                        tempo = new TimeSpan(17, 30, 0);//Tempo como referencia de entrada


                        if ((tempo - AnalisaSaida(saida)).TotalHours < 0)
                        {
                            credito = credito + (AnalisaSaida(saida) - tempo);//inverte valor para ficar negativo
                        }
                        else
                        {
                            debito = debito + (tempo - AnalisaSaida(saida));
                        }
                    }

                    else
                    {
                        debito  = new TimeSpan(8, 30, 0);
                        credito = new TimeSpan(0, 0, 0);
                    }
                }
                #endregion



                #region AQUI TROCA O SALDO ANTERIOR DO MÊS ANTERIOR PARA O MÊS ATUAL

                int numerolinhas = File.ReadAllLines("bancos.txt").Length;

                //Verifica se o dia é 16
                if (Convert.ToDateTime(dtpDataCadastro.Text).Day == 16 && numerolinhas > 1)
                {
                    TrocaDeDados.saldoanterior = TrocaDeDados.saldoatual;
                }


                else//Se não...
                {
                    if ((Convert.ToDateTime(dtpDataCadastro.Text).Day == 17 && numerolinhas > 1))
                    //Verifica se é dia 17
                    {
                        //Se for dia 17 verifica se o dia 16 já está cadastrado
                        if (!VerificaDia(Convert.ToDateTime(dtpDataCadastro.Text).AddDays(-1)))
                        {
                            TrocaDeDados.saldoanterior = TrocaDeDados.saldoatual;
                        }

                        /*else//Caso negativo o saldoanterior será o mesmo do saldo anterior do mês atual
                         *    TrocaDeDados.saldoanterior = TrocaDeDados.horasbancomes;*/
                    }

                    else//Se não for dia 17...
                    {
                        if ((Convert.ToDateTime(dtpDataCadastro.Text).Day == 18 && numerolinhas > 1))
                        {//Verifica se é dia 18
                            if (!VerificaDia(Convert.ToDateTime(dtpDataCadastro.Text).AddDays(-2)))

                            {//Se for dia 18 e dia 16  não tiver cadastrado, verifica se o dia 17 já tinha sido cadastrado;
                                if (!VerificaDia(Convert.ToDateTime(dtpDataCadastro.Text).AddDays(-1)))
                                {
                                    //Caso negativo realiza mudança
                                    TrocaDeDados.saldoanterior = TrocaDeDados.saldoatual;
                                }

                                /* else// Caso negativo o saldoanterior será o mesmo do saldo anterior do mês atual
                                 *   TrocaDeDados.saldoanterior = TrocaDeDados.horasbancomes;*/
                            }

                            /*else// Caso negativo o saldoanterior será o mesmo do saldo anterior do mês atual
                             *  TrocaDeDados.saldoanterior = TrocaDeDados.horasbancomes;*/
                        }

                        /*else// Caso negativo o saldoanterior será o mesmo do saldo anterior do mês atual
                         *  TrocaDeDados.saldoanterior = TrocaDeDados.horasbancomes;*/
                    }
                }
                #endregion


                if (File.Exists("bancos.txt") && !cbVerificaDados.Checked)
                {
                    SalvaDados();
                }

                else if (File.Exists("bancos.txt") && cbVerificaDados.Checked)
                {
                    string msg = "Confirma os dados: " + Environment.NewLine + dtpDataCadastro.Text +
                                 " - Entrada: " + TempoParaString(entrada) + " e Saida: " + TempoParaString(saida) + " ?";
                    if (MessageBox.Show(msg, "Atenção", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        if (Lista.Count != 0 && Convert.ToDateTime(dtpDataCadastro.Text) == Lista[Lista.Count - 1].Data)
                        {
                            msg = "O último registro salvo já contém essa data. Deseja salvar mesmo assim?";
                            if (MessageBox.Show(msg, "Atenção", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
                            {
                                return;
                            }
                        }
                        SalvaDados();
                    }

                    else
                    {
                        return;
                    }
                }
            }

            catch
            {
                MessageBox.Show("Verifique se o formato da hora está correto.",
                                "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
        }