Example #1
0
        private void HandleException(Exception exception)
        {
            if (exception != null)
            {
                Logging.ToLog(exception.Message + Environment.NewLine + exception.StackTrace);
                SystemMail.SendMail(
                    "Необработанное исключение",
                    exception.Message + Environment.NewLine + exception.StackTrace,
                    Settings.Default.MailTo);
            }

            Logging.ToLog("!!!App - Аварийное завершение работы");
            Process.GetCurrentProcess().Kill();
        }
Example #2
0
        static public void LoadDataAndWriteToDb(DateTime dateBegin, DateTime dateEnd, bool updateOpened = false)
        {
            string message = string.Empty;
            string tmp     = string.Empty;

            if (updateOpened)
            {
                tmp      = "---Обновление информации по открытым больничным листам в БД";
                message += tmp + Environment.NewLine;
                Logging.ToLog(tmp);
            }
            else
            {
                tmp = "---Загрузка данных по больничным листам в БД за период: с " +
                      dateBegin.ToShortDateString() + " по " + dateEnd.ToShortDateString();
                message += tmp + Environment.NewLine;
                Logging.ToLog(tmp);
            }

            X509Certificate2 userCertificate = GetCertificate(true);
            X509Certificate2 fssCertificate  = GetCertificate(false);

            if (userCertificate == null || fssCertificate == null)
            {
                tmp      = "!!! Не удалось определить сертификат(ы)";
                message += tmp + Environment.NewLine;
                Logging.ToLog(tmp);
            }
            else
            {
                WsdlServiceHandle.Instance.Initialize(
                    dateBegin,
                    dateEnd,
                    userCertificate,
                    fssCertificate);

                BackgroundWorker bw = new BackgroundWorker();
                bw.WorkerReportsProgress = true;
                bw.ProgressChanged      += (s, e) => {
                    if (e.UserState != null)
                    {
                        tmp      = e.UserState.ToString();
                        message += tmp + Environment.NewLine;
                        Logging.ToLog(tmp);
                    }
                };

                FirebirdClient firebirdClient = new FirebirdClient(
                    Properties.Settings.Default.MisDbAddress,
                    Properties.Settings.Default.MisDbName,
                    Properties.Settings.Default.MisDbUser,
                    Properties.Settings.Default.MisDbPassword);

                if (firebirdClient.IsConnectionOpened())
                {
                    if (updateOpened)
                    {
                        tmp      = "Получение списка больничных листов из БД со статусом 'ЭЛН открыт'";
                        message += tmp + Environment.NewLine;
                        Logging.ToLog(tmp);

                        try {
                            string    queryGetOpened = Properties.Settings.Default.SqlSelectOpened;
                            DataTable dt             = firebirdClient.GetDataTable(queryGetOpened, new Dictionary <string, object>());
                            tmp      = "Получено строк из БД: " + dt.Rows.Count;
                            message += tmp + Environment.NewLine;
                            Logging.ToLog(tmp);

                            if (dt.Rows.Count > 0)
                            {
                                foreach (DataRow row in dt.Rows)
                                {
                                    ItemDisabilitySheet item = new ItemDisabilitySheet()
                                    {
                                        LN_CODE = Convert.ToInt64(row[0].ToString()),
                                        SNILS   = row[1].ToString()
                                    };

                                    WsdlServiceHandle.Instance.DisabilitySheets.Add(item.LN_CODE, item);
                                }
                            }
                        } catch (Exception e) {
                            tmp      = "!!! " + e.Message + Environment.NewLine + e.StackTrace;
                            message += tmp + Environment.NewLine;
                            Logging.ToLog(tmp);
                        }
                    }

                    WsdlServiceHandle.Instance.LoadDisabilitySheetList(bw, updateOpened);

                    if (WsdlServiceHandle.Instance.DisabilitySheets.Count == 0)
                    {
                        tmp      = "Нет записей за указанный период, завершение работы";
                        message += tmp + Environment.NewLine;
                        Logging.ToLog(tmp);
                    }
                    else
                    {
                        tmp      = "Запись полученных данных в БД";
                        message += tmp;
                        Logging.ToLog(tmp);

                        try {
                            string queryUpdate = Properties.Settings.Default.SqlUpdateRow;
                            foreach (ItemDisabilitySheet item in WsdlServiceHandle.Instance.DisabilitySheets.Values)
                            {
                                firebirdClient.ExecuteUpdateQuery(queryUpdate, item.GetDictionary());
                            }
                        } catch (Exception e) {
                            tmp      = "!!! " + e.Message + Environment.NewLine + e.StackTrace;
                            message += tmp + Environment.NewLine;
                            Logging.ToLog(tmp);
                        }
                    }
                }
                else
                {
                    tmp = "!!! Не удалось открыть подключение к БД: " +
                          Properties.Settings.Default.MisDbAddress + ":" +
                          Properties.Settings.Default.MisDbName;
                    message += tmp + Environment.NewLine;
                    Logging.ToLog(tmp);
                }
            }

            string subject  = message.Contains("!!!") ? "!!! Выполнено с ошибками" : "Выполнено успешно";
            string body     = message;
            string receiver = Properties.Settings.Default.MailTo;

            SystemMail.SendMail(subject, body, receiver);
        }