예제 #1
0
        public static async Task <bool> PostBatidasAsync(Parametros parametros, Batida batida)
        {
            using (var client = new HttpClient())
            {
                try
                {
                    var batidaSerial = JsonConvert.SerializeObject(batida, Formatting.None);
                    batidaSerial       = "[" + batidaSerial + "]";
                    client.BaseAddress = new Uri("https://www.mobuss.com.br/ccweb/rest/v1/catraca/");
                    client.DefaultRequestHeaders
                    .Accept
                    .Add(new MediaTypeWithQualityHeaderValue("application/json"));      //ACCEPT header
                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", parametros.TokenBatidas);

                    HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "incluirRegistroAcesso")
                    {
                        Content = new StringContent(batidaSerial,
                                                    System.Text.Encoding.UTF8,
                                                    "application/json")    //CONTENT-TYPE header
                    };

                    var response = await client.SendAsync(request);

                    if (response.IsSuccessStatusCode)
                    {
                        var result = await response.Content.ReadAsStringAsync();//guarda o retorno da requisição

                        var jsonObject = (JObject)JsonConvert.DeserializeObject(result);
                        var status     = jsonObject["status"].ToString();
                        var mensagem   = jsonObject["mensagem"].ToString();

                        if (status == "400")
                        {
                            GravaLog.Gravar("Houve um erro para enviar batidas para a API, verifique o log de erros!", false, parametros.LogAtivo);
                            GravaLog.Gravar(jsonObject.ToString(), true, parametros.LogAtivo);

                            return(true); //houve um erro tratado, provalemente batida duplicada
                        }

                        else
                        {
                            GravaLog.Gravar("iD Acesso: " + batida.idLegado + " - " + "Id ColaboradorMobuss: " + batida.idColaborador + ": " + mensagem, false, parametros.LogAtivo);
                            return(true); //não houve erro
                        }
                    }
                    else
                    {
                        GravaLog.Gravar("Houve um erro para enviar batidas para a API, verifique o log de erros!", false, parametros.LogAtivo);
                        GravaLog.Gravar(response.ReasonPhrase, true, parametros.LogAtivo);
                        return(false); //houve erro
                    }
                }
                catch (Exception e)
                {
                    GravaLog.Gravar("Houve um erro para enviar batidas para a API, verifique o log de erros!", false, parametros.LogAtivo);
                    GravaLog.Gravar(e.ToString(), true, parametros.LogAtivo);
                    return(false); //houve erro
                }
            }
        }
예제 #2
0
        static async Task GravarNoBancoAsync()
        {
            var parametros = LerParametros.LerArquivo();

            try
            {
                GravaLog.Gravar("###########Inicido da importação###########", false, true);
                var conexao = new ConexaoBancoDeDados();
                GerenciadorColaboradores.LimparTabela(conexao);


                var gerenciadorColaboradores = new GerenciadorColaboradores();
                var colaboradores            = await Requisicao.GetColaboradoresAsync(parametros);

                if (parametros.manterIdentificadorDoSistema == true)
                {
                    GerenciadorColaboradores.ComparaColaboradores(colaboradores, conexao);
                }

                GravaLog.Gravar(colaboradores.Count + " colaboradores lidos", false, true);

                gerenciadorColaboradores.Salvar(colaboradores, conexao, parametros);

                GravaLog.Gravar("###########Fim da importação###########", false, true);
            }
            catch (Exception ex)
            {
                GravaLog.Gravar(ex.Message, true, parametros.LogAtivo);
            }
        }
예제 #3
0
        public static async Task <List <Colaborador> > GetColaboradoresAsync(Parametros paramentros)
        {
            using (var client = new HttpClient())
            {
                try
                {
                    client.BaseAddress = new Uri("https://www.mobuss.com.br/ccweb/rest/v1/seguranca/");
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    client.DefaultRequestHeaders.Add("companyID", paramentros.CompanyId);
                    client.DefaultRequestHeaders.Add("idObra", paramentros.ObraId);
                    client.DefaultRequestHeaders.Add("token", paramentros.Token);
                    client.DefaultRequestHeaders.Add("verificarRegistroTrabalhista", paramentros.verificarRegistroTrabalhista.ToString());
                    client.DefaultRequestHeaders.Add("verificarTreinamento", paramentros.verificarTreinamento.ToString());
                    client.DefaultRequestHeaders.Add("verificarEPI", paramentros.verificarEPI.ToString());

                    var response = await client.PostAsJsonAsync("consultarRegularidade", "colaboradores");


                    if (response.IsSuccessStatusCode)
                    {
                        var result = await response.Content.ReadAsStringAsync();

                        var jsonObject = (JObject)JsonConvert.DeserializeObject(result);
                        var status     = jsonObject["status"].ToString();

                        if (status == "ERRO")
                        {
                            GravaLog.Gravar("Houve um erro para buscar colaboradores na API, verifique o log de erros!", false, paramentros.LogAtivo);
                            GravaLog.Gravar(jsonObject.ToString(), true, paramentros.LogAtivo);
                        }

                        else
                        {
                            var a = jsonObject["colaboradores"].ToObject <List <Colaborador> >();
                            return(a);

                            //return jsonObject["colaboradores"].ToObject<List<Colaborador>>();
                        }
                    }
                    else
                    {
                        GravaLog.Gravar("Houve um erro para buscar colaboradores na API, verifique o log de erros!", false, paramentros.LogAtivo);
                        GravaLog.Gravar(response.ReasonPhrase, true, paramentros.LogAtivo);
                    }
                    return(new List <Colaborador>());
                }

                catch (Exception e)
                {
                    GravaLog.Gravar("Houve um erro para buscar colaboradores na API, verifique o log de erros!", false, paramentros.LogAtivo);
                    GravaLog.Gravar(e.ToString(), true, paramentros.LogAtivo);

                    return(new List <Colaborador>());
                }
            }
        }
예제 #4
0
        public static Parametros LerArquivo()//Le e retonar todos os maramentro no json PARAM.JSON, localizado na pasta do executavel
        {
            // Debugger.Launch();
            try
            {
                var caminho = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
                using (StreamReader file = File.OpenText(caminho + @"\param.json"))
                    using (JsonTextReader reader = new JsonTextReader(file))
                    {
                        JObject o2          = (JObject)JToken.ReadFrom(reader);
                        var     paramentros = JsonConvert.DeserializeObject <Parametros>(o2.ToString());
                        paramentros.UltimoRegistro = System.IO.File.ReadAllText(caminho + @"\ultimoLido.txt");

                        if (string.IsNullOrEmpty(paramentros.UltimoRegistro))//se o arquivo estiver em branco, seta ultimo lido = zero
                        {
                            paramentros.UltimoRegistro = "0";
                        }

                        return(paramentros);
                    }
            }
            catch (FileNotFoundException e)
            {
                GravaLog.Gravar($"Houve um erro ao ler o arquivo PARAM.JSON, verifique o loga erros!", false, true);
                GravaLog.Gravar($"The file was not found: '{e}'", true, true);


                Console.WriteLine($"The file was not found: '{e}'");
                Console.WriteLine();
            }
            catch (DirectoryNotFoundException e)
            {
                GravaLog.Gravar($"Houve um erro ao ler o arquivo PARAM.JSON, verifique o loga erros!", false, true);
                GravaLog.Gravar($"The directory was not found: '{e}'", true, true);

                Console.WriteLine($"The directory was not found: '{e}'");
                Console.WriteLine();
            }
            catch (IOException e)
            {
                GravaLog.Gravar($"Houve um erro ao ler o arquivo PARAM.JSON, verifique o loga erros!", false, true);
                GravaLog.Gravar($"The file could not be opened: '{e}'", true, true);

                Console.WriteLine($"The file could not be opened: '{e}'");
                Console.WriteLine();
            }

            return(null);
        }
예제 #5
0
        public static void AtualizarUltimaBatida(string ultimoLido) //atualizar arquivo ultimoLido.txt com o ultimo valor encontrado
        {
            if (string.IsNullOrWhiteSpace(ultimoLido))
            {
            }
            else
            {
                try
                {
                    string caminho = System.AppDomain.CurrentDomain.BaseDirectory.ToString();

                    using (System.IO.StreamWriter arquivo =
                               new System.IO.StreamWriter(caminho + "ultimoLido.txt", false))
                    {
                        arquivo.WriteLine(ultimoLido);
                    }
                }
                catch (FileNotFoundException e)
                {
                    GravaLog.Gravar($"Houve um erro ao ler o arquivo PARAM.JSON, verifique o loga erros!", false, true);
                    GravaLog.Gravar($"The file was not found: '{e}'", true, true);


                    Console.WriteLine($"The file was not found: '{e}'");
                    Console.WriteLine();
                }
                catch (DirectoryNotFoundException e)
                {
                    GravaLog.Gravar($"Houve um erro ao ler o arquivo PARAM.JSON, verifique o loga erros!", false, true);
                    GravaLog.Gravar($"The directory was not found: '{e}'", true, true);

                    Console.WriteLine($"The directory was not found: '{e}'");
                    Console.WriteLine();
                }
                catch (IOException e)
                {
                    GravaLog.Gravar($"Houve um erro ao ler o arquivo PARAM.JSON, verifique o loga erros!", false, true);
                    GravaLog.Gravar($"The file could not be opened: '{e}'", true, true);

                    Console.WriteLine($"The file could not be opened: '{e}'");
                    Console.WriteLine();
                }
            }
        }
예제 #6
0
        public List <Colaborador> LimpaColaborador(List <Colaborador> colaboradores) //remove colaboradores com Matricula em branco
        {
            List <Colaborador> ColaboradoresDescartados = new List <Colaborador>();  //lista de colaboradores descartados
            List <Colaborador> ColaboradoresFiltrados   = new List <Colaborador>();  // lista de colaboradores que estão ok

            foreach (var colaborador in colaboradores)
            {
                bool isError = false;
                try
                {                                                        // IdColaborador é usado como folha
                    if (string.IsNullOrEmpty(colaborador.IdColaborador)) //tem um cliente que usa matricula no lucar do IdColaborador como chave unica
                    {
                        ColaboradoresDescartados.Add(colaborador);
                    }
                    else
                    {
                        var nSemCaracteres = ApenasNumeros(colaborador.N_identificador);//Alguns clientes usar matricula outros numero identificador
                        colaborador.N_identificador = nSemCaracteres[0];
                        colaborador.N_provisorio    = nSemCaracteres[1];
                        ColaboradoresFiltrados.Add(colaborador);
                    }
                }
                catch (Exception ex)
                {
                    var log = (@"colaborador: " + colaborador.NomeColaborador + " " + ex.Message + "\n");
                    GravaLog.Gravar("Houve um erro para ao salvar colaboradores, verifique o log de erros!", false, true);
                    GravaLog.Gravar(log, true, true);

                    isError = true;
                }
                if (isError)
                {
                    continue;
                }
            }
            //log de descartados
            foreach (var colaborador in ColaboradoresDescartados)
            {
                GravaLog.Gravar(colaborador.NomeColaborador + " não importado, NUMERO DE FOLHA NÃO PODE SER NULO", false, true);
            }
            return(ColaboradoresFiltrados);
        }
예제 #7
0
        //public void Salvar(List<Colaborador> colaboradores, string cnpj, ConexaoBancoDeDados conexao, bool logAtivo)//monta string para insert de pessoas
        public void Salvar(List <Colaborador> colaboradores, ConexaoBancoDeDados conexao, Parametros parametros)

        {
            var ColaboradoresFiltrados = LimpaColaborador(colaboradores);

            foreach (var colaborador in ColaboradoresFiltrados)
            {
                bool isError = false;
                try
                {
                    {
                        string insert = $" INSERT INTO integracao_externa " +
                                        $"(n_identificador, n_folha ,rg ,cpf,nome ,empresa_cnpj ,estado ,classificacao, email, filtro3, filtro1, filtro2, obs) " +
                                        $"VALUES ('{colaborador.N_identificador}','{colaborador.IdColaborador}'," +
                                        $"'{colaborador.NumeroRG}','{colaborador.NumeroCPF}','{colaborador.NomeColaborador}'," +
                                        $"'{parametros.Cnpj}','{colaborador.ValorSituacao}','Colaborador','{colaborador.Email}', '{colaborador.IdColaborador}'" +
                                        $",'{colaborador.Empreiteira}','{colaborador.Funcao}','{colaborador.N_provisorio}')";

                        conexao.ExecutarComando(insert);
                    }
                }

                catch (SqlException ex)
                {
                    for (int i = 0; i < ex.Errors.Count; i++)
                    {
                        var log = (@"Index #" + i + "\n" +
                                   "Message: " + ex.Errors[i].Message + "\n" +
                                   "colaborador: " + colaborador.NomeColaborador + "\n");
                        GravaLog.Gravar("Houve um erro para ao salvar colaboradores, verifique o log de erros!", false, parametros.LogAtivo);
                        GravaLog.Gravar(log, true, parametros.LogAtivo);
                    }
                    isError = true;
                }
                if (isError)
                {
                    continue;
                }
            }
            AjustaProvisorio(conexao);
        }
예제 #8
0
        public static async System.Threading.Tasks.Task EnviarBatidasAsync()
        {
            var listaDeBatidas = new GerenciadorBatidas().BuscarBatidas();
            var paramentros    = LerParametros.LerArquivo();

            if (listaDeBatidas.Count > 0)// se houver batidas para exportar
            {
                GravaLog.Gravar("###########Inicio da exportação de batidas###########", false, paramentros.LogAtivo);
                GravaLog.Gravar(listaDeBatidas.Count + " batida lidas", false, paramentros.LogAtivo);

                int index = 0;
                foreach (var batida in listaDeBatidas)// chama o metodo PostBatidasAsync para cadas batida existente
                {
                    bool retornoRequisicao = await Requisicao.PostBatidasAsync(paramentros, listaDeBatidas[index]);

                    if (retornoRequisicao == true)
                    {
                        string ultimoLido = listaDeBatidas[index].idAcesso;
                        LerParametros.AtualizarUltimaBatida(ultimoLido);
                        GravaLog.GravarBatidasEnviadas(batida);
                        index++;
                    }
                    else
                    {
                        break;//não houve retorno da requisição, neste caso a tarefa é interrompida para que o ultimo registro lido seja integro
                    }
                }
                GravaLog.Gravar("Fim da exportação de batidas", false, paramentros.LogAtivo);
            }
            else
            {
                GravaLog.Gravar("###########Inicio da exportação de batidas###########", false, paramentros.LogAtivo);
                GravaLog.Gravar("Não existem novas batidas para exportação", false, paramentros.LogAtivo);
                GravaLog.Gravar("Fim da exportação de batidas", false, paramentros.LogAtivo);
            }
        }