예제 #1
0
        public async Task SaveExcel()
        {
            TaskRunned = true;
            await ExcelInteraction.SaveFile(ResultData);

            TaskRunned = false;
        }
예제 #2
0
        public async Task OpenExcel()
        {
            TaskRunned = true;
            ResultData = await ExcelInteraction.OpenFile();

            TaskRunned = false;
        }
예제 #3
0
        private async void LoadFromExcelButton_Click(object sender, EventArgs e)
        {
            richTextBox1.Clear();

            _broadcastsToSend = await ExcelInteraction.LoadListFromExcelAsync(openExcelFileDialog, selectedExcelFileNameLabel);

            if (_broadcastsToSend == null)
            {
                return;
            }

            _excelLoaded = true;

            await Utils.GetDictionariesAsync();

            if (_userLoggedIn && _broadcastsToSend.Any())
            {
                startSendingButton.Enabled         = true;
                createBroadcastTableButton.Enabled = true;
            }

            if (!_broadcastsToSend.Any() || !_userLoggedIn)
            {
                createBroadcastTableButton.Enabled = true;
                startSendingButton.Enabled         = false;
            }

            broadcastTotalNumberLabel.Text       = _broadcastsToSend.Count().ToString();
            broadcastTransmittedNumberLabel.Text = _broadcastsToSend.Count(x => x.Transmitted == "1").ToString();
        }
예제 #4
0
        public WpfInteractionController(IEventAggregator eventAgg,
                                        ExcelInteraction excelOperation,
                                        ILogger logger)
        {
            this.eventAgg       = eventAgg;
            this.excelOperation = excelOperation;
            this.logger         = logger;

            //tokenMeetingData = eventAgg.GetEvent<PubSubEvent<ExcelMeetingDataRequest>>()
            //    .Subscribe(WriteMeetingData);

            //tokenSheetName = eventAgg.GetEvent<PubSubEvent<ExcelWorksheetNamesRequest>>()
            //    .Subscribe(GetWorksheetsName);
        }
예제 #5
0
        private async void CreateBroadcastTableButton_Click(object sender, EventArgs e)
        {
            loadFromExcelButton.Enabled = false;

            startSendingButton.Enabled = false;

            createBroadcastTableButton.Enabled = false;

            _mediaFilesList = Utils.LoadMediaFilesList(_currentDir, _broadcastsToSend);

            int id = 0;

            foreach (var broadcast in _broadcastsToSend)
            {
                if (broadcast.Id > id)
                {
                    id = broadcast.Id;
                }
            }

            int count = 0;

            foreach (var fileName in _mediaFilesList)
            {
                string[] mediaInfo = Utils.ParseFileName(fileName, CurrentYear);

                mediaInfo[5] = Utils.ParsePresenters(mediaInfo[5]);

                Broadcast broadcast = new Broadcast()
                {
                    Id         = ++id,
                    DateAired  = mediaInfo[2] + " " + mediaInfo[3],
                    Date       = mediaInfo[2],
                    Time       = mediaInfo[3],
                    Author     = mediaInfo[5],
                    Presenters = mediaInfo[5],
                    FileName   = mediaInfo[6],
                    FileExists = true
                };

                try
                {
                    broadcast.Title = Utils.Titles[mediaInfo[1].ToLower()];
                }
                catch (KeyNotFoundException)
                {
                    MessageBox.Show($"Программа \"{mediaInfo[1]}\" не найдена в перечне!");
                    Process.GetCurrentProcess().Kill();
                }

                if (mediaInfo[0] == "combined")
                {
                    broadcast.DateAiredEnd = mediaInfo[4];
                }

                broadcast.Anons = Utils.Anons[broadcast.Title.ToLower()];
                if (broadcast.DateAiredEnd == "-")
                {
                    broadcast.Fragments = "В прилагаемом файле выпуск программы от " + broadcast.Date + ".";
                }
                else
                {
                    broadcast.Fragments = "В прилагаемом файле выпуски программы, вышедшие с " + mediaInfo[2] + " по " +
                                          mediaInfo[4];
                }

                broadcast.Director = Utils.GetDirector(broadcast, Utils.Directors, Utils.DirectorsSchedule);

                broadcast.Sha256 = await Task.Run(() => Sha256.GetHash(@".\MP3\" + fileName + ".mp3"));

                _broadcastsToSend.Add(broadcast);

                broadcastTotalNumberLabel.Text = _broadcastsToSend.Count().ToString();

                await ExcelInteraction.WriteBroadcastToTableAsync(broadcast);

                count++;

                progressBar.Value = count * 100 / _mediaFilesList.Count();

                try
                {
                    richTextBox1.Text += broadcast.Id + ": " + broadcast.Title + " (" + broadcast.Date + ")\n";
                    richTextBox1.Select(richTextBox1.Text.Length, 0);
                    richTextBox1.ScrollToCaret();
                }
                catch (ObjectDisposedException)
                {
                }
            }

            try
            {
                richTextBox1.Text += "\nТаблица заполнена!\n";
                richTextBox1.Select(richTextBox1.Text.Length, 0);
                richTextBox1.ScrollToCaret();
            }
            catch (ObjectDisposedException)
            {
            }

            MessageBox.Show("Таблица заполнена!", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Information);

            if (_broadcastsToSend.Any() && _userLoggedIn)
            {
                startSendingButton.Enabled = true;
            }

            loadFromExcelButton.Enabled = true;
        }
예제 #6
0
        private void StartSendingButton_Click(object sender, EventArgs e)
        {
            startSendingButton.Enabled         = false;
            loadFromExcelButton.Enabled        = false;
            createBroadcastTableButton.Enabled = false;

            richTextBox1.Clear();

            int i = 0;

            foreach (var broadcast in _broadcastsToSend)
            {
                if (!broadcast.FileExists)
                {
                    MessageBox.Show($"Отсутствует файл {broadcast.FileName} для передачи {broadcast.Title}.", "Файл не найден!", MessageBoxButtons.OK);
                    continue;
                }

                if (broadcast.Transmitted == "1")
                {
                    continue;
                }


                webBrowserGTRF.Navigate("http://oed.gtrf.ru/materials/edit");
                WaitForPageCompleted();

                WebForm.FillWebForm(webBrowserGTRF, broadcast);
                WaitForPageCompleted();

                webBrowserGTRF.Document?.GetElementById("fileUpload")?.Focus();
                SendKeys.Send(" " + _currentDir + broadcast.FileNameFormat());
                SendKeys.SendWait(" \n");
                foreach (HtmlElement input in webBrowserGTRF.Document.GetElementsByTagName("button"))
                {
                    if (input.GetAttribute("InnerText") == " Загрузить файл")
                    {
                        input.InvokeMember("click");
                    }
                }
                WaitForPageCompleted();

                foreach (HtmlElement input in webBrowserGTRF.Document.GetElementsByTagName("button"))
                {
                    if (input.GetAttribute("InnerText") == "Сохранить и отправить")
                    {
                        input.InvokeMember("click");
                    }
                }

                WaitForPageCompleted();

                ExcelInteraction.SetTransmittedFlag(broadcast);

                try
                {
                    richTextBox1.Text += broadcast.Id + ": " + broadcast.Title + " (" + broadcast.DateAired + ") - передан\n";
                    richTextBox1.Select(richTextBox1.Text.Length, 0);
                    richTextBox1.ScrollToCaret();
                }
                catch (ObjectDisposedException)
                {
                }

                i++;

                broadcastTransmittedNumberLabel.Text =
                    (int.Parse(broadcastTransmittedNumberLabel.Text) + 1).ToString();

                progressBar.Value = i * 100 / _broadcastsToSend.Count();
            }
            webBrowserGTRF.Navigate("http://oed.gtrf.ru/");
            MessageBox.Show($"Передача файлов завершена\nВсего передано выпусков программ: {i}", "Завершено!", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }