Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Form
- {
- private const int MinimumPassportLength = 10;
- private const int SQLiteFileNotFoundErrorCode = 1;
- private const string DatabaseFileName = "db.sqlite";
- private void checkButton_Click(object sender, EventArgs eventArgs)
- {
- string passportInput = passportTextbox.Text.Trim();
- if (string.IsNullOrEmpty(passportInput))
- {
- MessageBox.Show("Введите серию и номер паспорта");
- return;
- }
- string rawData = passportInput.Replace(" ", string.Empty);
- if (IsPassportFormatValid(rawData) == false)
- {
- textResult.Text = "Неверный формат серии или номера паспорта";
- return;
- }
- string hashedPassport = ComputeSha256Hash(rawData);
- string connectionString = GetConnectionString();
- try
- {
- DataTable passportData = GetPassportData(hashedPassport, connectionString);
- DisplayResult(passportData, passportInput);
- }
- catch (SQLiteException sqliteException)
- {
- HandleSQLiteException(sqliteException);
- }
- }
- private bool IsPassportFormatValid(string passportData)
- {
- return passportData.Length >= MinimumPassportLength;
- }
- private string GetConnectionString()
- {
- string executablePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
- string databasePath = Path.Combine(executablePath, DatabaseFileName);
- return $"Data Source={databasePath}";
- }
- private DataTable GetPassportData(string hashedPassport, string connectionString)
- {
- if (string.IsNullOrEmpty(hashedPassport))
- {
- throw new ArgumentException("Хэш паспорта не может быть пустым", nameof(hashedPassport));
- }
- if (string.IsNullOrEmpty(connectionString))
- {
- throw new ArgumentException("Строка подключения не может быть пустой", nameof(connectionString));
- }
- string query = $"SELECT * FROM passports WHERE num='{hashedPassport}' LIMIT 1;";
- using (SQLiteConnection connection = new SQLiteConnection(connectionString))
- {
- connection.Open();
- using (SQLiteCommand command = new SQLiteCommand(query, connection))
- {
- using (SQLiteDataAdapter adapter = new SQLiteDataAdapter(command))
- {
- DataTable passportTable = new DataTable();
- adapter.Fill(passportTable);
- return passportTable;
- }
- }
- }
- }
- private void DisplayResult(DataTable passportData, string passportInput)
- {
- if (passportData == null)
- {
- throw new ArgumentNullException(nameof(passportData));
- }
- if (passportData.Rows.Count > 0)
- {
- bool isAccessGranted = Convert.ToBoolean(passportData.Rows[0]["isAccessGranted"]);
- if (isAccessGranted)
- {
- textResult.Text = $"По паспорту «{passportInput}» доступ к бюллетеню на дистанционном электронном голосовании ПРЕДОСТАВЛЕН";
- }
- else
- {
- textResult.Text = $"По паспорту «{passportInput}» доступ к бюллетеню на дистанционном электронном голосовании НЕ ПРЕДОСТАВЛЯЛСЯ";
- }
- }
- else
- {
- textResult.Text = $"Паспорт «{passportInput}» в списке участников дистанционного голосования НЕ НАЙДЕН";
- }
- }
- private void HandleSQLiteException(SQLiteException sqliteException)
- {
- if (sqliteException == null)
- {
- throw new ArgumentNullException(nameof(sqliteException));
- }
- if (sqliteException.ErrorCode == SQLiteFileNotFoundErrorCode)
- {
- MessageBox.Show("Файл db.sqlite не найден. Положите файл в папку вместе с exe.");
- }
- else
- {
- MessageBox.Show($"Ошибка базы данных: {sqliteException.Message}");
- }
- }
- public static string ComputeSha256Hash(string rawData)
- {
- if (string.IsNullOrEmpty(rawData))
- {
- throw new ArgumentException("Данные для хэширования не могут быть null или пустыми", nameof(rawData));
- }
- return "";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement