Beispiel #1
0
        List <Case> GetCases()
        {
            using (var repository = new Repository <DbContext>()) //создаю репозиторий для работы с БД
            {
                // вычитываю дату изменения последнего тикета из БД
                var lastProcessedCase = repository.GetList <Issue>().OrderByDescending(p => p.updated_at).FirstOrDefault();
                var lastProcessedTime = lastProcessedCase != null ? lastProcessedCase.updated_at : new DateTime(1900, 1, 1); //если тикетов в БД нет, то начало века

                var result   = new List <Case>();
                int casePage = 0;
                while (true)
                {
                    var casesFromCurrentPage = OmnideskClient.GetCases(++casePage, 100); //получаю по 100 заявки, начиная с 1 страницы
                    Thread.Sleep(int.Parse(intervalParam.Value));                        //пауза, чтобы не заспамить API
                    if (casesFromCurrentPage == null)
                    {
                        break;                             //если null, значит прочитали всё
                    }
                    result.AddRange(casesFromCurrentPage); //добавляю к результату полученные заявки
                    if (casesFromCurrentPage.Count < 100)
                    {
                        break;                                    //если получили меньше 100 заявок - значит прочитали все
                    }
                    if (casesFromCurrentPage.Last().updated_at < lastProcessedTime)
                    {
                        break;                                                             //проверяем, нет ли в БД заявок свежее, чем мы получили
                    }
                }
                return(result);
            }
        }
        private void button_Click(object sender, RoutedEventArgs e)
        {
            var issues = OmnideskClient.GetCases(Int32.Parse(pageTextBox.Text), Int32.Parse(countTextBox.Text));

            int i = 0;

            foreach (var issue in issues)
            {
                textBox.Text += ++i + " " + issue.case_number + " " + issue.case_id
                                + " " + issue.subject + " " + issue.created_at + " " + issue.updated_at
                                + System.Environment.NewLine;
            }
        }