Beispiel #1
0
        public void StartWork(bool checked_use_time)
        {
            if (!BotCommand)
            {
                if (start_time_dtp.Value < DateTime.Now)
                {
                    if (MessageBox.Show($"Выбранная дата {start_time_dtp.Value}\nРанее чем сегодняшняя.\nПродолжить поиск?", "Внимание", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes)
                    {
                        button1.Enabled           = true;
                        use_telegram_chk.Enabled  = true;
                        not_use_sound_chk.Enabled = true;
                        stop_btn.Enabled          = false;
                        see_btn.Enabled           = false;
                        return;
                    }
                }
            }
            BotCommand = false;
            GetSettings();

            dt_telegram_start = start_time = DateTime.Now;

            work_timer.Start();
            string dt_st        = filterSettings.DateStart.ToString("yyyy-MM-dd");
            string dt_en        = filterSettings.DateEnd.ToString("yyyy-MM-dd");
            string famtecher    = filterSettings.TeacherLast;
            string buf_response = string.Empty;

            //if (only_end_chk.Checked)
            //    dt_st = dt_en;


            if (use_telegram_chk.Checked)
            {
                Tlw.StartTelegramMonitor((int)telega_time_out_num.Value);
            }
            int i = 0;

            Task.Run(async() =>
            {
                while (true)
                {
                    i++;
                    try
                    {
                        wc.Headers.Clear();
                        wc.Headers.Add(HttpRequestHeader.Cookie, StaticInfo.VeriToken);
                        buf_response         = wc.DownloadString($"https://app.dscontrol.ru/Api/StudentSchedulerList?Kinds=D&OnlyMine=false&timeshift=-360&from={dt_st}&to={dt_en}");
                        _LocalUser.DriveData = JsonConvert.DeserializeObject <DataCalender>(buf_response);
                    }
                    catch (Exception ex)
                    {
                        await StaticInfo.Relogin();
                        if (_StateLocUser != StaticInfo.LoginState.succ)
                        {
                            BeginInvoke(new Action(() =>
                            {
                                log_rich.AppendText($"Выбило из учетки, повторный логин провален\n");
                                stop_btn.PerformClick();
                            }));

                            return;
                        }
                        else
                        {
                            BeginInvoke(new Action(() =>
                            {
                                log_rich.AppendText($"Выбило из учетки, повторный логин проведен\n");
                            }));
                        }
                        var bb = "";
                        if (string.IsNullOrEmpty(buf_response))
                        {
                            bb = buf_response;
                        }
                        BeginInvoke(new Action(() =>
                        {
                            log_rich.AppendText($"Ошибка {ex.Message}! Тип {ex.InnerException}\nОтвет был {bb}\n");
                        }));
                    }

                    var cnt = _LocalUser.DriveData.data.Count;

                    _LocalUser.DriveData.data = _LocalUser.DriveData.data.Where(q => q.Completed != true && q.State != 1 && q.start_date.DayOfYear >= filterSettings.DateStart.DayOfYear).ToList(); //первыичный фильтр, завершено или нет, состояние 1 = записан, 2 = не записан, дата больше чем дата старта
                    var cnt2     = cnt - _LocalUser.DriveData.data.Count;
                    FilteredList = _LocalUser.DriveData.data.Where(q => q.EmployeeName.Contains(famtecher)).ToList();                                                                               //фильтр фамилии
                    foreach (var item in ConfirmItems)
                    {
                        if (FilteredList.Contains(item))
                        {
                            FilteredList.Remove(item);
                        }
                    }
                    if (filterSettings.SelectedAutodromes.Count > 0)
                    {
                        //фильтр площадок по айди
                        foreach (var item in filterSettings.SelectedAutodromes)
                        {
                            FilteredList = FilteredList.Where(q => q.DriveID == item.SessionId).ToList();
                        }
                    }
                    //тут будет фильтр времени
                    if (checked_use_time)
                    {
                        FilteredList = FilteredList.Where(q => q.start_date.TimeOfDay >= filterSettings.TimeStart).ToList();
                    }

                    if (FilteredList.Count > 0)
                    {
                        if (!not_use_sound_chk.Checked)
                        {
                            smm.Stop();
                            smm.Play();
                        }
                    }
                    BeginInvoke(new Action(() =>
                    {
                        log_rich.AppendText($"{work_time_lbl.Text} Найдено без фильтров {cnt}\n");
                        log_rich.AppendText($"{work_time_lbl.Text} После первичного осталось {cnt - cnt2}\n");
                        log_rich.AppendText($"{work_time_lbl.Text} И того осталось {FilteredList.Count}\n");
                        //log_rich.AppendText(buf_response + "\n");
                        log_rich.ScrollToCaret();

                        all_res_list.Items.Clear();
                        exect_res_list.Items.Clear();
                        not_filtered_list.Items.Clear();
                        foreach (var item in _LocalUser.DriveData.data)
                        {
                            not_filtered_list.Items.Add(item);
                        }
                        var st = from aw in _LocalUser.GetTotalDrive
                                 join bw in _LocalUser.DriveData.data
                                 on aw.SessionId equals bw.DriveID
                                 select bw;
                        all_res_list.Items.AddRange(st.ToArray());

                        //foreach (var item in _LocalUser.DriveData.data)
                        //{
                        //    _LocalUser.GetTotalDrive.Where(t=>t.SessionId == item.Drive
                        //    if(item.DriveID != _LocalUser.)
                        //}

                        //all_res_list.Items.AddRange(_LocalUser.DriveData.data.Where(t=>t.));
                        counter_lbl.Text = i.ToString();
                        if (FilteredList.Count > 0)
                        {
                            exect_res_list.Items.Clear();
                            foreach (var item in FilteredList)
                            {
                                exect_res_list.Items.Add(item);
                            }
                        }
                    }));
                    GC.Collect(1, GCCollectionMode.Forced);
                    await Task.Delay((int)(time_out_num.Value * 59950)); //запас на телегу на 50 мил сек
                }
            }, token);
        }
Beispiel #2
0
        private async void login_btn_Click(object sender, EventArgs e)
        {
            StaticInfo.login = login_txt.Text;
            StaticInfo.pass  = pass_txt.Text;
            plochadki_class  = await StaticInfo.Relogin();

            switch (plochadki_class.Success)
            {
            case StaticInfo.LoginState.succ:
                DoEnd(plochadki_class);
                break;

            case StaticInfo.LoginState.denied:
            case StaticInfo.LoginState.error:
                BeginInvoke(new Action(() => pictureBox1.Visible = false));
                BeginInvoke(new Action(() => status_lbl.Text     = "Ошибка логина"));
                break;
            }


            //wc.Headers.Clear();
            //pictureBox1.Visible = true;
            //var request = (HttpWebRequest)WebRequest.Create("https://app.dscontrol.ru/Login");
            //var postData = $"Login={login_txt.Text}";
            //postData += "&TextPassword="******"&Password={Encoding.UTF8.GetString(bytes)}";
            //postData += "&PreventPass=false";
            //var data = Encoding.ASCII.GetBytes(postData);
            //request.Method = "POST";
            //request.ContentType = "application/x-www-form-urlencoded";
            //request.ContentLength = data.Length;
            //request.Accept = "*/*";
            //request.Referer = "https://app.dscontrol.ru/login";
            //await Task.Run(() =>
            //{
            //    using (var stream = request.GetRequestStream())
            //    {
            //        stream.Write(data, 0, data.Length);
            //    }
            //    HttpWebResponse response;
            //    try
            //    {
            //        response = (HttpWebResponse)request.GetResponse();
            //    }
            //    catch (Exception)
            //    {
            //        BeginInvoke(new Action(() => pictureBox1.Visible = false));
            //        BeginInvoke(new Action(() => status_lbl.Text = "Ошибка логина"));
            //        return;
            //    }

            //    var aa = response.Headers["Set-Cookie"].Split(';')[0];
            //    var za = wc.DownloadString("https://app.dscontrol.ru/Api/StudentSchedulerList?Kinds=D&OnlyMine=false&timeshift=-360&from=2020-10-01&to=2020-10-30");

            //    string plochadki = string.Empty;
            //    try
            //    {
            //        var zs = JsonConvert.DeserializeObject<DataCalender>(za);
            //        plochadki = wc.DownloadString("https://app.dscontrol.ru/api/MobilePersonalData");
            //        plochadki_class = JsonConvert.DeserializeObject<DataUser>(plochadki);
            //    }
            //    catch (Exception)
            //    {
            //        HtmlAgilityPack.HtmlDocument hd = new HtmlAgilityPack.HtmlDocument();
            //        hd.LoadHtml(za);
            //        HtmlNode formNode = hd.DocumentNode.SelectSingleNode("//input[@name='__RequestVerificationToken']");
            //        var signupFormId = formNode.GetAttributeValue("value", "");
            //        var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
            //        var abb = $"__RequestVerificationToken={signupFormId}; {aa};";
            //        StaticInfo.VeriToken = abb;
            //        wc.Headers.Add(HttpRequestHeader.Cookie, abb);

            //        //из токенов выбрать айди = валетовским айди
            //        //получить сешентайп с цветом равным выбранным токенам
            //        //лист сешнтайп айди = айди площадок при поиске


            //        plochadki = wc.DownloadString("https://app.dscontrol.ru/api/MobilePersonalData");
            //        try
            //        {
            //            plochadki_class = JsonConvert.DeserializeObject<DataUser>(plochadki);
            //            //plochadki_class.Data.GetTotalDrive();
            //        }
            //        catch (Exception ex)
            //        {
            //            Debug.WriteLine(ex.Message);
            //            BeginInvoke(new Action(() => pictureBox1.Visible = false));
            //            BeginInvoke(new Action(() => status_lbl.Text = "Ошибка логина"));
            //            return;
            //        }
            //    }
            //});
            //if (plochadki_class.Success)
            //{
            //    StaticInfo.login = login_txt.Text;
            //    StaticInfo.pass = pass_txt.Text;
            //    DoEnd(plochadki_class);
            //}
        }