private void calcularCodigos(List <Siscop> listaSiscop, CodigoPonto codigoPonto, string[] linhas) { foreach (Siscop item in listaSiscop) { TimeSpan time1 = recuperarHorarioCodigo(item.Entrada1, codigoPonto); TimeSpan time2 = recuperarHorarioCodigo(item.Saida1, codigoPonto); TimeSpan time3 = recuperarHorarioCodigo(item.Entrada2, codigoPonto); TimeSpan time4 = recuperarHorarioCodigo(item.Saida2, codigoPonto); string diffManha = recuperarDiferencaHoras(item.Entrada1.Trim(), 1, item.Saida1.Trim(), 2, linhas, item.Responsavel.Nome); string diffTarde = recuperarDiferencaHoras(item.Entrada2.Trim(), 3, item.Saida2.Trim(), 4, linhas, item.Responsavel.Nome); string totalDia = DataHoraUtil.calcularTotalDia(diffManha, diffTarde); if (totalDia.Length > 2 && Convert.ToInt32(totalDia.Substring(0, 2)) > 10) { codigoPonto.Maior10 += 1; } if ((time1.Hours > 0 && time1.Hours < 7) || time4.Hours > 20) { codigoPonto.Maior21 += 1; } codigoPonto.Flex = 0; if (diffManha.Length >= 5 && (Convert.ToInt32(diffManha.Substring(0, 2)) < 3 || (Convert.ToInt32(diffManha.Substring(0, 2)) == 5 && Convert.ToInt32(diffManha.Substring(3, 2)) > 0))) { codigoPonto.Turno35 += 1; } if (diffTarde.Length >= 5 && (Convert.ToInt32(diffTarde.Substring(0, 2)) < 3 || (Convert.ToInt32(diffTarde.Substring(0, 2)) == 5 && Convert.ToInt32(diffTarde.Substring(3, 2)) > 0))) { codigoPonto.Turno35 += 1; } if (diffManha.Length > 2 && Convert.ToInt32(diffManha.Substring(0, 2)) > 5 && Convert.ToInt32(diffTarde.Substring(3, 2)) > 0) { codigoPonto.Turno6 += 1; } if (diffTarde.Length > 2 && Convert.ToInt32(diffTarde.Substring(0, 2)) > 5 && Convert.ToInt32(diffTarde.Substring(3, 2)) > 0) { codigoPonto.Turno6 += 1; } string diffAlmoco = recuperarDiferencaHoras(item.Saida1.Trim(), 2, item.Entrada2.Trim(), 3, linhas, item.Responsavel.Nome); if (diffAlmoco.Length > 2 && Convert.ToInt32(diffAlmoco.Substring(0, 2)) < 1) { codigoPonto.Intervalo1 += 1; } if (diffAlmoco.Length > 2 && Convert.ToInt32(diffAlmoco.Substring(0, 2)) > 1) { codigoPonto.Intervalo2 += 1; } } }
private void executarAcao(DataGrid grid, int opcao, bool inteiro) { if (validarExibicaoTabela()) { int ano = Convert.ToInt32(((ComboBoxItem)cmbAno.SelectedItem).Content); int mes = Convert.ToInt32(((ComboBoxItem)cmbMes.SelectedItem).Content); DateTime dtInicio = new DateTime(ano, mes, 1); DateTime dtFim = new DateTime(ano, mes, DataHoraUtil.recuperarDiaFinalMes(ano, mes)); FuncionarioDAO fDAO = new FuncionarioDAO(); List <Funcionario> listaFuncionario = new List <Funcionario>(); foreach (ListBoxItem item in lstFuncionario.SelectedItems) { int codigo = Convert.ToInt32(item.Tag); listaFuncionario.Add(fDAO.Recuperar(codigo)); } SiscopBO tDAO = new SiscopBO(); ApropriacaoBO apropBO = new ApropriacaoBO(); List <Siscop> listaSiscop = new List <Siscop>(); Dictionary <DateTime, decimal> apropriacaoPorDia = new Dictionary <DateTime, decimal>(); foreach (Funcionario func in listaFuncionario) { listaSiscop.AddRange(tDAO.recuperarSiscopPorResponsavel(func.Codigo, dtInicio, dtFim)); apropriacaoPorDia = apropBO.recuperarApropriacaoPorResponsavelPorDia(func.Nome, dtInicio, dtFim); } DataTable tabela = new DataTable(); if (opcao == OpcaoIndicadorPonto.PONTO_BATIDO) { object[] listaColunas = { "Data", "Apropriado", "Total", "Manha", "Almoco", "Tarde", "Extra", "Entrada 1", "Saida 1", "Entrada 2", "Saida 2", "Extra 1", "Extra 2" }; foreach (string str in listaColunas) { tabela.Columns.Add(Convert.ToString(str)); } string file = @"C:\workspace-vs\DE607\csharp\GEP_DE607\GEP_DE607\Csv\siscopPadrao.csv"; string[] linhas = System.IO.File.ReadAllLines(file); decimal totalHorarioApropriado = 0; decimal totalPontoMes = 0; foreach (Siscop item in listaSiscop) { object[] linha = new object[listaColunas.Count()]; linha[0] = item.Data.ToShortDateString(); decimal horarioApropriado = recuperarHorarioApropriado(apropriacaoPorDia, item.Data); linha[1] = horarioApropriado; totalHorarioApropriado += horarioApropriado; string diffManha = recuperarDiferencaHoras(item.Entrada1.Trim(), 1, item.Saida1.Trim(), 2, linhas, item.Responsavel.Nome); linha[3] = diffManha; string diffAlmoco = recuperarDiferencaHoras(item.Saida1.Trim(), 2, item.Entrada2.Trim(), 3, linhas, item.Responsavel.Nome); linha[4] = diffAlmoco; string diffTarde = recuperarDiferencaHoras(item.Entrada2.Trim(), 3, item.Saida2.Trim(), 4, linhas, item.Responsavel.Nome); linha[5] = diffTarde; //07:45 string totalDia = DataHoraUtil.calcularTotalDia(diffManha, diffTarde); if (totalDia.Length > 0) { Decimal total = Convert.ToDecimal(totalDia.Substring(0, 2)) + Convert.ToDecimal(totalDia.Substring(3, 2)) / 60; totalPontoMes += total; linha[2] = total.ToString("#.#"); } else { linha[2] = totalDia; } linha[6] = ""; linha[7] = item.Entrada1; linha[8] = item.Saida1; linha[9] = item.Entrada2; linha[10] = item.Saida2; linha[11] = item.Extra1; linha[12] = item.Extra2; tabela.Rows.Add(linha); } lblTotalApropriadoMes.Content = totalHorarioApropriado.ToString("#.#"); lblTotalPontoMes.Content = totalPontoMes.ToString("#.#"); } else if (opcao == OpcaoIndicadorPonto.CODIGO_PONTO) { object[] listaColunas = { "Codigo 68/13/14/18", "Codigo 21", "Codgo #/99", "> 10", "<7 ou >21", "Flex", "T <3 >5", "T >6", "Int <1", "Int >2" }; foreach (string str in listaColunas) { tabela.Columns.Add(Convert.ToString(str)); } string file = @"C:\workspace-vs\DE607\csharp\GEP_DE607\GEP_DE607\Csv\siscopPadrao.csv"; string[] linhas = System.IO.File.ReadAllLines(file); CodigoPonto codigoPonto = new CodigoPonto(); calcularCodigos(listaSiscop, codigoPonto, linhas); object[] linha = new object[listaColunas.Count()]; linha[0] = codigoPonto.Codigo68; linha[1] = codigoPonto.Codigo21; linha[2] = codigoPonto.Codigo99; linha[3] = codigoPonto.Maior10; linha[4] = codigoPonto.Maior21; linha[5] = codigoPonto.Flex; linha[6] = codigoPonto.Turno35; linha[7] = codigoPonto.Turno6; linha[8] = codigoPonto.Intervalo1; linha[9] = codigoPonto.Intervalo2; tabela.Rows.Add(linha); } baseWindow.preencherGrid(grid, tabela, 80); } }