예제 #1
0
        // Проверка файлов
        private void CheckFiles()
        {
            try {
                IsRunning = true;
                int      hours    = (AppHelper.Configuration.Global.SearchDaysCount * 24);
                DateTime begin    = DateTime.Now.AddHours(hours.ToNegative());
                DateTime beginUTC = DateTime.Now.ToUniversalTime().Date.AddHours(hours.ToNegative());

                ShowMessage("Получение списка созданных файлов ОАСУ РПО...");
                List <FileInfo> files    = SQLHelper.GetCreatedFiles(AppHelper.Configuration.Global.SearchDaysCount).ToList();
                List <string>   msgFiles = new List <string>();
                ShowMessage("Получение списка отправленных файлов ОАСУ РПО...");
                ItemType[] messages = ExchangeMailHelper.GetMessages(beginUTC);

                foreach (ItemType item in messages)
                {
                    Match match = new Regex(AppHelper.Configuration.Exchange.MessageRegex).Match(item.Subject);
                    if (match.Success)
                    {
                        msgFiles.Add(match.Groups["FILE"].Value);
                    }
                }

                ShowMessage("Проверка успешно отправленных файлов ОАСУ РПО...");
                List <ListViewItem> items = new List <ListViewItem>();
                FilesBox.InvokeIfRequired(() => FilesBox.Items.Clear());
                string message = "";
                foreach (FileInfo file in files)
                {
                    if (string.IsNullOrEmpty(msgFiles.Find(x => x == file.FileName)))
                    {
                        ListViewItem item = new ListViewItem(file.FileName);
                        item.SubItems.Add(file.TimeEnd.ToString());
                        items.Add(item);
                        message += string.Format("{0}\t{1}\r\n", file.FileName, file.TimeEnd);
                    }
                }

                int count = items.Count;
                FilesBox.InvokeIfRequired(() => FilesBox.Items.AddRange(items.ToArray()));

                if (count > 0)
                {
                    notifyWindow.InvokeIfRequired(() => notifyWindow.Message = message);
                    this.InvokeIfRequired(delegate {
                        Drawing.Rectangle workingArea = Screen.GetWorkingArea(this);
                        notifyWindow.Location         = new Drawing.Point(workingArea.Right - notifyWindow.Size.Width, workingArea.Bottom - notifyWindow.Size.Height);
                        notifyWindow.Show(this);
                    });
                }
                else
                {
                    notifyWindow.InvokeIfRequired(delegate {
                        notifyWindow.Message = "";
                        notifyWindow.HideDialog();
                    });
                }

                ShowMessage(string.Format("Неотправленные файлы за период ({0} - {1}): {2} шт.", begin.ToString("dd.MM.yyyy"), DateTime.Now.ToString("dd.MM.yyyy"), count), (count > 0));
            }
            catch (Exception error) {
                ShowMessage("Ошибка", true);
                AppHelper.Log.Write("Ошибка во время операции проверки: " + error.ToString(), Feodosiya.Lib.Logs.MessageType.Error);
            }
            finally {
                IsRunning = false;

                ManualExecButton.InvokeIfRequired(() => ManualExecButton.Enabled = true);
                SettingsButton.InvokeIfRequired(() => SettingsButton.Enabled     = true);
                FilesBox.InvokeIfRequired(() => FilesBox.Enabled         = true);
                MainStrip.InvokeIfRequired(() => LastOperationLabel.Text = DateTime.Now.ToString());
            }
        }