public bool WriteOrderLog(int aOrderID, string aMessage, OrderMessage.OrderMessageLevel aMessageLevel)
        {
            if (!Initialized && !FReadOnly)
            {
                throw new Exception("Save manager not initialized");
            }
            using (SQLiteConnection lConnection = new SQLiteConnection(FConnectionString))
            {
                lConnection.Open();
                SQLiteCommand lCommand = new SQLiteCommand("INSERT OR REPLACE INTO ExchangeLog (TransactionID, TransactionTime, Message, MessageLevel) VALUES (@Id, @Time, @Message, @MessageLevel)", lConnection);
                lCommand.Parameters.Add(new SQLiteParameter("@Id", aOrderID));
                lCommand.Parameters.Add(new SQLiteParameter("@Time", DateTime.UtcNow));
                lCommand.Parameters.Add(new SQLiteParameter("@Message", aMessage));
                lCommand.Parameters.Add(new SQLiteParameter("@MessageLevel", aMessageLevel));

                try
                {
                    lCommand.ExecuteNonQuery();
                    return(true);
                }
                catch (Exception ex)
                {
                    Universal.Log.Write(Universal.LogLevel.Error, $"Error writing order logs from db. Exception {ex}");
                    return(false);
                }
                finally
                {
                    lConnection.Close();
                }
            }
        }
Exemple #2
0
        public void WriteTransactionLogEntry(UserTradeOrder aOrder, OrderMessage.OrderMessageLevel aLevel = OrderMessage.OrderMessageLevel.Info, string aMessage = null)
        {
            if (string.IsNullOrEmpty(aMessage))
            {
                switch (aOrder.Status)
                {
                case OrderStatus.Initial:
                    FSaveManager.WriteOrderLog(aOrder.InternalID, "Starting transaction process.", OrderMessage.OrderMessageLevel.Info);
                    FSaveManager.WriteOrderLog(aOrder.InternalID, "Waiting for market stop price to place order.", OrderMessage.OrderMessageLevel.StageChange);
                    break;

                case OrderStatus.Waiting:
                    FSaveManager.WriteOrderLog(aOrder.InternalID, "Price reached specified stop price.", OrderMessage.OrderMessageLevel.Info);
                    FSaveManager.WriteOrderLog(aOrder.InternalID, string.Format("{0} coins sent to exchange account. Tx ID: {1}.", aOrder.SentQuantity, aOrder.CoinTxID), OrderMessage.OrderMessageLevel.Info);
                    FSaveManager.WriteOrderLog(aOrder.InternalID, "Waiting for confirmations to place the order.", OrderMessage.OrderMessageLevel.StageChange);
                    break;

                case OrderStatus.Placed:
                    FSaveManager.WriteOrderLog(aOrder.InternalID, string.Format("Transaction id {0} has enough confirmations to place the order.", aOrder.CoinTxID), OrderMessage.OrderMessageLevel.Info);
                    FSaveManager.WriteOrderLog(aOrder.InternalID, string.Format("Placed order in exchange. Uuid: {0}. Waiting for order to fulfill.", aOrder.ID.ToString()), OrderMessage.OrderMessageLevel.StageChange);
                    break;

                case OrderStatus.Interrupted:
                    FSaveManager.WriteOrderLog(aOrder.InternalID, "Transaction cancelled or not found on the exchange.", OrderMessage.OrderMessageLevel.FatalError);
                    break;

                case OrderStatus.Completed:
                    FSaveManager.WriteOrderLog(aOrder.InternalID, "Transaction completed. Waiting for withdrawal.", OrderMessage.OrderMessageLevel.StageChange);
                    break;

                case OrderStatus.Withdrawn:
                    FSaveManager.WriteOrderLog(aOrder.InternalID, "Cryptocurrencies succesfully withdrawn to Pandora's Wallet.", OrderMessage.OrderMessageLevel.Finisher);
                    break;
                }
            }
            else
            {
                FSaveManager.WriteOrderLog(aOrder.InternalID, aMessage, aLevel);
            }
            if (FSaveManager.ReadOrderLogs(aOrder.InternalID, out List <OrderMessage> lOrderMessages))
            {
                OnNewOrderLogsAdded?.BeginInvoke(aOrder.InternalID, lOrderMessages, null, null);
            }
        }