private static void Add(string[] groupPath, DateTime date, decimal value) { var group = Groups.AddIfNew(groupPath); var newData = new AtivaTradeData(date, group, value); Datas.Add(newData); }
private static void GetDespesas(int year, int month, out List <DataPrfOsasco> datas, out DictionaryTree <string, string> despesas, Func <string, string> treatIndex) { datas = new List <DataPrfOsasco>(); despesas = new DictionaryTree <string, string>(s => treatIndex(s), "Despesas"); var parameters = "{" + $"\"edtExercicio\":{year},\"edtMes\":{month},\"edtCategoria\":\"%\"" + "}"; var parametersEncoded = Encoding.UTF8.GetBytes(parameters); var parametersBase64 = Convert.ToBase64String(parametersEncoded); var client = new RestClient("http://eportal.osasco.sp.gov.br/eportais-api/api/relatorio/gerarRelatorioXML/Despesa%20paga%20por%20Fornecedor/" + parametersBase64); var request = new RestRequest(Method.GET); var response = client.Execute(request); if (response.StatusCode != System.Net.HttpStatusCode.OK) { throw new Exception(response.Content); } var xml = response.Content; var xmlDoc = new System.Xml.XmlDocument(); xmlDoc.LoadXml(xml); var xpath = "DespesapagaporFornecedor/registro"; var nodes = xmlDoc.SelectNodes(xpath); foreach (System.Xml.XmlNode childrenNode in nodes) { var year2 = int.Parse(childrenNode.SelectSingleNode("nr_ano").InnerText); var month2 = int.Parse(childrenNode.SelectSingleNode("nr_mes").InnerText); var date = new DateTime(year2, month2, 1); var valor = decimal.Parse(childrenNode.SelectSingleNode("vl_pagamento").InnerText, CultureInfo.InvariantCulture); var cpfCnpj = childrenNode.SelectSingleNode("cnpj").InnerText; var tpPessoa = "Indefinido"; if (IsCpf(cpfCnpj)) { tpPessoa = "Pessoa"; } else if (IsCnpj(cpfCnpj)) { tpPessoa = "Empresa"; } var despesa = despesas.AddIfNew( childrenNode.SelectSingleNode("ds_categoria").InnerText, childrenNode.SelectSingleNode("ds_grupo").InnerText, childrenNode.SelectSingleNode("ds_modalidade").InnerText, childrenNode.SelectSingleNode("ds_despesa").InnerText, childrenNode.SelectSingleNode("ds_orgao").InnerText, childrenNode.SelectSingleNode("ds_unidade").InnerText, tpPessoa, childrenNode.SelectSingleNode("razao_social").InnerText); var data = new DataPrfOsasco() { Date = date, Group = despesa, Value = valor }; datas.Add(data); ////Console.WriteLine(childrenNode.SelectSingleNode("razao_social").InnerText); ////Console.WriteLine(childrenNode.SelectSingleNode("nr_processo").InnerText); ////Console.WriteLine(childrenNode.SelectSingleNode("cd_orgao").InnerText); ////Console.WriteLine(childrenNode.SelectSingleNode("ds_orgao").InnerText); ////Console.WriteLine(childrenNode.SelectSingleNode("cd_unidade").InnerText); ////Console.WriteLine(childrenNode.SelectSingleNode("ds_unidade").InnerText); ////Console.WriteLine(childrenNode.SelectSingleNode("cd_despesa").InnerText); ////Console.WriteLine(childrenNode.SelectSingleNode("ds_despesa").InnerText); ////Console.WriteLine(childrenNode.SelectSingleNode("categoria_despesa").InnerText); ////Console.WriteLine(childrenNode.SelectSingleNode("ds_categoria").InnerText); ////Console.WriteLine(childrenNode.SelectSingleNode("grupo_despesa").InnerText); ////Console.WriteLine(childrenNode.SelectSingleNode("ds_grupo").InnerText); ////Console.WriteLine(childrenNode.SelectSingleNode("cd_modalidade").InnerText); ////Console.WriteLine(childrenNode.SelectSingleNode("ds_modalidade").InnerText); ////Console.WriteLine(childrenNode.SelectSingleNode("nr_mes").InnerText); ////Console.WriteLine(childrenNode.SelectSingleNode("nr_ano").InnerText); ////Console.WriteLine(childrenNode.SelectSingleNode("vl_pagamento").InnerText); ////Console.WriteLine(childrenNode.SelectSingleNode("cnpj").InnerText); } }
private static void GetViagens(int year, out List <DataPrfOsasco> datas, out DictionaryTree <string, string> despesas, Func <string, string> treatIndex) { datas = new List <DataPrfOsasco>(); despesas = new DictionaryTree <string, string>(s => treatIndex(s), "Viagens"); var viagensCsv = GetViagensCsv(year); var viagensXml = GetViagensXml(year); var viagens = from x in viagensXml join c in viagensCsv on new { x.Nro_Processo } equals new { c.Nro_Processo } select new { x.Destino, x.Motivo, x.Observacao, x.Valor, x.Inicio, x.Fim, x.Orgao, x.Unidade, c.Nome, c.Cargo }; if (viagensCsv.Count() != viagens.Count()) { throw new Exception("Missing data"); } foreach (var viagem in viagens) { var groupValor = despesas.AddIfNew( viagem.Orgao, viagem.Unidade, viagem.Destino, viagem.Motivo, viagem.Observacao, viagem.Cargo, viagem.Nome, "Valor"); var dataValor = new DataPrfOsasco() { Date = viagem.Inicio, Group = groupValor, Value = viagem.Valor }; datas.Add(dataValor); var groupDias = despesas.AddIfNew( "Prefeituras", "Osasco", "Viagens", viagem.Orgao, viagem.Unidade, viagem.Destino, viagem.Motivo, viagem.Observacao, viagem.Cargo, viagem.Nome, "Dias"); var dataDias = new DataPrfOsasco() { Date = viagem.Inicio, Group = groupDias, Value = viagem.Valor }; datas.Add(dataDias); } }