예제 #1
0
        /// <summary>
        /// Wykonuje zapytanie SQLite na bazie danych
        /// </summary>
        /// <param name="dbFilePath">Ścieżka do bazy danych</param>
        /// <param name="command">Komenda do wykonania</param>
        /// <returns>Zwraca wynik wykonania zapytania</returns>
        internal static List <ArchiveRecord> ExecuteSQLQuery(string dbFilePath, string query)
        {
            try
            {
                List <ArchiveRecord> records = new List <ArchiveRecord>();
                using (var connection = new SQLiteConnection("Data Source=" + dbFilePath))
                {
                    connection.Open();

                    var command = connection.CreateCommand();
                    command.CommandText = query;

                    using (var reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            if (reader.FieldCount < 15)
                            {
                                continue;
                            }
                            string           fromName         = reader.GetString(1);
                            string           fromID           = reader.GetString(2);
                            string           fromType         = reader.GetString(3);
                            string           fromCardID       = reader.GetString(4);
                            string           fromCardType     = reader.GetString(5);
                            string           fromBankName     = reader.GetString(6);
                            string           fromBankID       = reader.GetString(7);
                            string           toName           = reader.GetString(8);
                            string           toID             = reader.GetString(9);
                            string           toType           = reader.GetString(10);
                            string           toCardID         = reader.GetString(11);
                            string           toCardType       = reader.GetString(12);
                            string           toBankName       = reader.GetString(13);
                            string           toBankID         = reader.GetString(14);
                            float            amount           = reader.GetFloat(15);
                            BankActionResult bankActionResult = (BankActionResult)int.Parse(reader.GetString(16));

                            ArchiveRecord newRecord = new ArchiveRecord(fromName, fromID, fromType, fromCardID, fromCardType, fromBankName, fromBankID, toName, toID, toType, toCardID, toCardType, toBankName, toBankID, (decimal)amount, bankActionResult);
                            records.Add(newRecord);
                        }
                    }
                }
                return(records);
            }
            catch (SQLiteException ex)
            {
                throw ex;
            }
        }
예제 #2
0
 /// <summary>
 /// Wyszukuje w systemie dane potrzebne do utworzenia loga transakcji
 /// </summary>
 /// <param name="amount">Kwota transakcji</param>
 /// <param name="result">Wynik transakcji</param>
 /// <param name="fromCardNumber">Numer karty płatnika</param>
 /// <param name="toCardNumber">Numer karty odbiorcy</param>
 internal void PrepareArchiveLog(decimal amount, BankActionResult result, string fromCardNumber = null, string toCardNumber = null)
 {
     try
     {
         LogInArchive(FindCardByNr(fromCardNumber), FindBankByCardNr(fromCardNumber), FindCardByNr(toCardNumber), FindBankByCardNr(toCardNumber), amount, result);
     }
     catch (NoSuchCardException ex)
     {
         if (ex.CardNumber == fromCardNumber)
         {
             LogInArchive(null, null, FindCardByNr(toCardNumber), FindBankByCardNr(toCardNumber), amount, result);
         }
         LogInArchive(FindCardByNr(fromCardNumber), FindBankByCardNr(fromCardNumber), null, null, amount, result);
     }
 }
 /// <summary>
 /// Tworzy obiekt reprezentujący wpis transakcji, który może zostać wykorzystany przez klasę Archive.
 /// </summary>
 /// <param name="fromName">Nazwa klienta</param>
 /// <param name="fromId">Id klienta</param>
 /// <param name="fromType">Typ klienta</param>
 /// <param name="fromCardID">ID klienta</param>
 /// <param name="fromCardType">Typ karty klienta</param>
 /// <param name="fromBankName">Nazwa banku, w którym klient ma kartę</param>
 /// <param name="fromBankID">ID banku, w którym klient ma kartę</param>
 /// <param name="toName">Nazwa firmy</param>
 /// <param name="toID">ID firmy</param>
 /// <param name="toType">Typ firmy</param>
 /// <param name="toCardID">ID karty firmy</param>
 /// <param name="toCardType">Typ karty firmy</param>
 /// <param name="toBankName">Nazwa banku, w któryma firma ma kratę</param>
 /// <param name="toBankID">ID banku, w którym firma ma kartę</param>
 /// <param name="amount">Kwota transakcji</param>
 /// <param name="bankActionResult">Wynik transakcji</param>
 internal ArchiveRecord(string fromName, string fromId, string fromType, string fromCardID, string fromCardType,
                        string fromBankName, string fromBankID, string toName, string toID, string toType,
                        string toCardID, string toCardType, string toBankName, string toBankID, decimal amount,
                        BankActionResult bankActionResult)
 {
     FromName     = fromName ?? "NULL";
     FromID       = fromId ?? "NULL";
     FromType     = fromType ?? "NULL";
     FromCardID   = fromCardID ?? "NULL";
     FromCardType = fromCardType ?? "NULL";
     FromBankName = fromBankName ?? "NULL";
     FromBankID   = fromBankID ?? "NULL";
     ToName       = toName ?? "NULL";
     ToID         = toID ?? "NULL";
     ToType       = toType ?? "NULL";
     ToCardID     = toCardID ?? "NULL";
     ToCardType   = toCardType ?? "NULL";
     ToBankName   = toBankName ?? "NULL";
     ToBankID     = toBankID ?? "NULL";
     Amount       = amount;
     Result       = bankActionResult;
 }
예제 #4
0
 /// <summary>
 /// Dodaje wpis o transakcji do lokalnego archiwum
 /// </summary>
 /// <param name="fromCard">Karta, z której próbowano pobrać środki</param>
 /// <param name="fromBankName">Nazwa banku, w którym jest karta, z której próbowano pobrac środki</param>
 /// <param name="fromBankID">ID banku, w którym jest karta, z której próbowano pobrac środki</param>
 /// <param name="toCard">Karta, na którą próbowano wpłacić środki</param>
 /// <param name="toBankName">Nazwa banku, w którym jest karta, na którą przelać środki</param>
 /// <param name="toBankID">ID banku, w którym jest karta, na którą próbowano przelać środki</param>
 /// <param name="amount">Kwota</param>
 /// <param name="result">Wynik wykonania transakcji (czy wystąpił błąd, jeśli tak, to jaki)</param>
 internal void LogInArchive(Card fromCard, Bank fromBank, Card toCard, Bank toBank, decimal amount, BankActionResult result)
 {
     if (isDBAvailable && dbFilePath != null)
     {
         Archive.AddRecord(dbFilePath,
                           new ArchiveRecord(fromCard?.Owner.Name,
                                             fromCard?.Owner.Number,
                                             fromCard?.Owner.ClientType.ToString("d"),
                                             fromCard?.Number,
                                             fromCard?.Type.ToString("d"),
                                             fromBank?.Name,
                                             fromBank?.Id.ToString(),
                                             toCard?.Owner.Name,
                                             toCard?.Owner.Number,
                                             toCard?.Owner.ClientType.ToString("d"),
                                             toCard?.Number,
                                             toCard?.Type.ToString("d"),
                                             toBank?.Name,
                                             toBank?.Id.ToString(),
                                             amount,
                                             result));
     }
     else
     {
         throw new DBNotBoundException("Nie połączono z bazą danych");
     }
 }