private void btnTariffShow_Click(object sender, EventArgs e)
        {
            var tariff = (sender == btnTariffPenaltyShow) ? Settings.Default.PenaltyTarif : String.Empty;

            if (String.IsNullOrEmpty(tariff))
            {
                MessageBox.Show(this, "Необходимо задать тариф с мастер-карты!", ApplicationServices.GetApplicationName(), MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            if (tariffForm == null)
            {
                tariffForm = new TariffViewForm();
            }

            try
            {
                tariffForm.Setup(CashDeskHelper.DeserializeTariff(tariff));
                tariffForm.ShowDialog();
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, "Ошибка чтения тарифа из файла конфигурации: \r\n" + ex.Message, ApplicationServices.GetApplicationName(), MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void btnTariffMetroRead_Click(object sender, EventArgs e)
        {
            string tm  = String.Empty;
            string tmd = String.Empty;

            try
            {
                tm  = CashDeskHelper.SerializeTariff(CashDeskHelper.LoadTariff(CashDeskHelper.TariffMetroFileName));
                tmd = CashDeskHelper.SerializeTariff(CashDeskHelper.LoadTariff(CashDeskHelper.TariffMetroDiscountFileName));
            }
            catch (Exception ex)
            {
                logger.Write(ex, "Ошибка чтения тарифов метро");
                MessageBox.Show(this, "Ошибка чтения тарифов метро", ApplicationServices.GetApplicationName(), MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            Settings.Default["MetroTariffK"] = tm;
            Settings.Default["MetroTariffL"] = tmd;
            Settings.Default.Save();

            MessageBox.Show(this, "Тарифы метро успешно прочитаны", ApplicationServices.GetApplicationName(), MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        private void btnTariffPenaltyRead_Click(object sender, EventArgs e)
        {
            // Загружает ключи с мастер карты и записывает их в считыватель
            ISmartCardMaster master = new SmartCardMaster();

            try
            {
                smartCardManager.ReadMasterCard(master);
            }
            catch (Exception ex)
            {
                logger.Write(ex, "Ошибка чтения мастер-карты");
                MessageBox.Show(this, "Ошибка чтения мастер-карты", ApplicationServices.GetApplicationName(), MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            // Распределение ключей. На мастер карте хранится 4 ключа для 9 секторов.
            smartCardManager.KeysB[1] = master.KeysB[0];
            smartCardManager.KeysB[2] = master.KeysB[1];
            smartCardManager.KeysB[3] = master.KeysB[2];
            smartCardManager.KeysB[4] = master.KeysB[2];
            smartCardManager.KeysB[5] = master.KeysB[2];
            smartCardManager.KeysB[6] = master.KeysB[2];
            smartCardManager.KeysB[7] = master.KeysB[3];
            smartCardManager.KeysB[8] = master.KeysB[3];
            smartCardManager.KeysB[9] = master.KeysB[3];
            smartCardManager.KeysB[SmartCardLayoutHelper.MetroSectorIndex] = GetKeyForDiscountSector(master.KeysB[3]);

            // Шифрование и Запись прочитанных с мастер-карты ключей в конфигурацию.
            // Непосредственно запись произойдет, если пользователь нажмет кнопку "ОК".
            try
            {
                Settings.Default["KeyB1"] = Convert.ToBase64String(Crypt.Encrypt(master.KeysB[0].Value, "A23F78C4"));
                Settings.Default["KeyB2"] = Convert.ToBase64String(Crypt.Encrypt(master.KeysB[1].Value, "A23F78C4"));
                Settings.Default["KeyB3"] = Convert.ToBase64String(Crypt.Encrypt(master.KeysB[2].Value, "A23F78C4"));
                Settings.Default["KeyB4"] = Convert.ToBase64String(Crypt.Encrypt(master.KeysB[3].Value, "A23F78C4"));
                Settings.Default["KeyBM"] = Convert.ToBase64String(Crypt.Encrypt(GetKeyForDiscountSector(master.KeysB[3]).Value, "A23F78C4"));
            }
            catch (Exception ex)
            {
                logger.Write(ex, "Ошибка кодирования полученных с мастер-карты ключей");
                MessageBox.Show(this, "Ошибка кодирования полученных с мастер-карты ключей", ApplicationServices.GetApplicationName(), MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            string tariff = String.Empty;

            try
            {
                tariff = CashDeskHelper.SerializeTariff(master.Tariff);
            }
            catch (Exception ex)
            {
                logger.Write(ex, "Ошибка чтения тарифа с мастер-карты");
                MessageBox.Show(this, "Ошибка чтения тарифа с мастер-карты", ApplicationServices.GetApplicationName(), MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            Settings.Default["PenaltyTarif"] = tariff;
            Settings.Default.Save();

            MessageBox.Show(this, "Мастер-карта успешно прочитана", ApplicationServices.GetApplicationName(), MessageBoxButtons.OK, MessageBoxIcon.Information);
        }