Beispiel #1
0
 public static CivilServant ParseCsv(String line)
 {
     var result = new CivilServant();
     var fields = line.Split(';');
     result.ID =  long.Parse(fields[0]);
     result.Name = fields[1];
     result.Registration = long.Parse(fields[2]);
     result.CPF = long.Parse(fields[3]);
     result.RecruitedAt = DateTime.Parse(fields[4]);
     if (fields.Length > 5 && fields[5].Length > 5)
         result.DismissedAt = DateTime.Parse(fields[5]);
     return result;
 }
Beispiel #2
0
        public static CivilServant ParseCsv(String line)
        {
            var result = new CivilServant();
            var fields = line.Split(';');

            result.ID           = long.Parse(fields[0]);
            result.Name         = fields[1];
            result.Registration = long.Parse(fields[2]);
            result.CPF          = long.Parse(fields[3]);
            result.RecruitedAt  = DateTime.Parse(fields[4]);
            if (fields.Length > 5 && fields[5].Length > 5)
            {
                result.DismissedAt = DateTime.Parse(fields[5]);
            }
            return(result);
        }
Beispiel #3
0
        public CivilServant Execute(CivilServant servant)
        {
            var beginYear = servant.RecruitedAt.Year;
            var endYear = servant.DismissedAt.HasValue ? servant.DismissedAt.Value.Year : 2015;

            for (var year = beginYear; year <= endYear; year++)
            {
                var s = GetPdfText(year.ToString(), servant.FormatID());
                var indO = s.IndexOf("TOTAL DE VENCIMENTOS ") + "TOTAL DE VENCIMENTOS ".Length;
                if (indO > 0)
                {
                    var indF = s.IndexOf("\n", indO);
                    var vencs = s.Substring(indO, indF - indO);
                    var earning = new YearEarning();
                    earning.Year = year;
                    earning.MonthEarning = vencs.Split(' ').Take(12).Select(el => Double.Parse(el)).ToList();
                    servant.Earnings.Add(earning);
                }
            }
            servant.Earnings.OrderBy(el => el.Year);
            return servant;
        }
Beispiel #4
0
        private void button1_Click(object sender, EventArgs e)
        {
            //faz requisição http

            var currentPage = 0;

            var f = File.CreateText("c:\\m\\cs.csv");

            while (true) {
                var CivilServants = new List<CivilServant>();
                currentPage++;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www1.fgmaiss.com.br/contabil/cgi-bin/pesqgrid.php");
                request.Host = "www1.fgmaiss.com.br";
                request.CookieContainer = new CookieContainer();
                request.CookieContainer.Add(new Cookie("8jpo2jrlp3005q3lj3qsbf5hq7PESQGRIDfindGrid", "") { Domain = request.Host });
                request.CookieContainer.Add(new Cookie("PHPSESSID", Cookie) { Domain = request.Host });
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
                ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

                var postData = "";
                if(currentPage == 1)
                    postData = "findGrid=&idpagex=1&lv=find&lm=0&tc=0&mt=0&obj=X3h4ZnVu&qrw=U0VMRUNUICBmdW5jb2RpZ28sIGZ1bm5vbWUgfHwgJyAtIE1BVFJJQ1VMQTogJyB8fCBmdW5tYXRyaWMgfHwgJyAtIENQRjogJyB8fCBmdW5jcGYgfHwgJyAtIERULkFETTogJyB8fCBUT19DSEFSKGZ1bmR0YWRtLCdkZC9NTS95eXl5JykgfHwgQ0FTRSBXSEVOIE5PVCBudWwoZnVuZHRkZW0pIFRIRU4gJyAtIERULkRFTTogJyB8fCBUT19DSEFSKG52bChmdW5kdGRlbSwnMDAwMS0wMS0wMScpLCdkZC9NTS95eXl5JykgRUxTRSAnJyBFTkQgRlJPTSBjdGJmbGguZmxoZnVuIFdIRVJFIHByZmNvZGlnbyA9ICcyOS4xMzguMzc3LzAwMDEtOTMnIEFORCBldGRjb2RpZ28gPSAnMDEnIEFORCBmdW5jb2RpZ298fGZ1bm5vbWUgfHwgJyAtIE1BVFJJQ1VMQTogJyB8fCBmdW5tYXRyaWMgfHwgJyAtIENQRjogJyB8fCBmdW5jcGYgfHwgJyAtIERULkFETTogJyB8fCBUT19DSEFSKGZ1bmR0YWRtLCdkZC9NTS95eXl5JykgfHwgQ0FTRSBXSEVOIE5PVCBudWwoZnVuZHRkZW0pIFRIRU4gJyAtIERULkRFTTogJyB8fCBUT19DSEFSKG52bChmdW5kdGRlbSwnMDAwMS0wMS0wMScpLCdkZC9NTS95eXl5JykgRUxTRSAnJyBFTkQgTElLRSAnJSUnIE9SREVSIEJZIGZ1bm5vbWUsIGZ1bm1hdHJpYw%3D%3D&tit=PESQUISA+DE+SERVIDORES&IDDFGCTBETD=01&IDDFGCTBEXE=2015&IDDPWEBCNPJ=29.138.377%2F0001-93&IDDPWEBMOD=&IDDPWEBFINMOD=&seta=%3C%3C";
                else
                    postData = "findGrid=&idpagex="+(currentPage-1).ToString()+"&lv=find&lm="+(20*(currentPage-2)).ToString()+"&tc=0&mt=0&obj=X3h4ZnVu&qrw=U0VMRUNUICBmdW5jb2RpZ28sIGZ1bm5vbWUgfHwgJyAtIE1BVFJJQ1VMQTogJyB8fCBmdW5tYXRyaWMgfHwgJyAtIENQRjogJyB8fCBmdW5jcGYgfHwgJyAtIERULkFETTogJyB8fCBUT19DSEFSKGZ1bmR0YWRtLCdkZC9NTS95eXl5JykgfHwgQ0FTRSBXSEVOIE5PVCBudWwoZnVuZHRkZW0pIFRIRU4gJyAtIERULkRFTTogJyB8fCBUT19DSEFSKG52bChmdW5kdGRlbSwnMDAwMS0wMS0wMScpLCdkZC9NTS95eXl5JykgRUxTRSAnJyBFTkQgRlJPTSBjdGJmbGguZmxoZnVuIFdIRVJFIHByZmNvZGlnbyA9ICcyOS4xMzguMzc3LzAwMDEtOTMnIEFORCBldGRjb2RpZ28gPSAnMDEnIEFORCBmdW5jb2RpZ298fGZ1bm5vbWUgfHwgJyAtIE1BVFJJQ1VMQTogJyB8fCBmdW5tYXRyaWMgfHwgJyAtIENQRjogJyB8fCBmdW5jcGYgfHwgJyAtIERULkFETTogJyB8fCBUT19DSEFSKGZ1bmR0YWRtLCdkZC9NTS95eXl5JykgfHwgQ0FTRSBXSEVOIE5PVCBudWwoZnVuZHRkZW0pIFRIRU4gJyAtIERULkRFTTogJyB8fCBUT19DSEFSKG52bChmdW5kdGRlbSwnMDAwMS0wMS0wMScpLCdkZC9NTS95eXl5JykgRUxTRSAnJyBFTkQgTElLRSAnJSUnIE9SREVSIEJZIGZ1bm5vbWUsIGZ1bm1hdHJpYw%3D%3D&tit=PESQUISA+DE+SERVIDORES&IDDFGCTBETD=01&IDDFGCTBEXE=2015&IDDPWEBCNPJ=29.138.377%2F0001-93&IDDPWEBMOD=&IDDPWEBFINMOD=&seta=%3E%3E";

                var data = Encoding.ASCII.GetBytes(postData);

                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = data.Length;

                using (var stream = request.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }

                var response = request.GetResponse();

                //copia conteúdo da responsta http para uma string
                var responseStream = response.GetResponseStream();
                var memStream = new MemoryStream();
                responseStream.CopyTo(memStream);
                var responseText = System.Text.Encoding.Default.GetString(memStream.ToArray());

                var currentIndex = responseText.IndexOf("<tr class=ld_tr");
                if (currentIndex == -1)
                    break;

                while (currentIndex > 0)
                {
                    var currentCS = new CivilServant();
                    var s = GetBetween(responseText, ">", "</tr>", currentIndex);
                    currentCS.ID = Int64.Parse(GetBetween(s, "','", "','", s.IndexOf("xxfun")) );
                    currentCS.Name =  GetBetween(s, currentCS.ID.ToString() + "','", " -", 0);
                    currentCS.Registration = Int64.Parse(GetBetween(s, "MATRICULA: ", " -", 0));
                    currentCS.CPF = Int64.Parse(GetBetween(s, "CPF: ", " - ", 0).Replace(".", "").Replace("-", ""));
                    currentCS.RecruitedAt = DateTime.Parse(s.Substring(s.IndexOf(".ADM: ") + 6, 10), new System.Globalization.CultureInfo("fr-FR", true));
                    if(s.IndexOf("DT.DEM") > 0)
                        currentCS.DismissedAt = DateTime.Parse(s.Substring(s.IndexOf(".DEM: ") + 6, 10), new System.Globalization.CultureInfo("fr-FR", true));
                    CivilServants.Add(currentCS);
                    currentIndex = responseText.IndexOf("<tr class=ld_tr", currentIndex + 10);

                }
                CivilServants.ForEach(el => f.WriteLine(el.ToCsv()));
                f.Flush();
            }

            f.Close();
        }
Beispiel #5
0
 public BotContext(FillServantEarning bot, CivilServant servant)
 {
     Bot = bot;
     TerminateSignal = new ManualResetEvent(false);
     Result = null;
     IsFinished = false;
     IsStarted = false;
     Servant = servant;
 }