diff --git a/DBClasses.cs b/DBClasses.cs index 6d939a1..b51873e 100644 --- a/DBClasses.cs +++ b/DBClasses.cs @@ -1,9 +1,19 @@ using System; +using System.Globalization; using System.Text.RegularExpressions; namespace CryptoCalc { + public enum TransactionTypes + { + Buy, + Sell, + Transfer, + Mining + } + + public interface IDBClasses { static string DBName { get; } @@ -21,8 +31,8 @@ namespace CryptoCalc public virtual string DBVariables { get; set; } public string DBSaveDataString => $"({Regex.Replace(DBVariables, "@", "")}) values ({DBVariables})"; - public int Index { get; set; } - public long UnixTime { get; set; } + public long Index { get; set; } + public ulong UnixTime { get; set; } #endregion @@ -31,20 +41,20 @@ namespace CryptoCalc public void SaveUnixTimeNow() { - UnixTime = (long)DateTime.UtcNow.Subtract(DateTime.UnixEpoch).TotalSeconds; + UnixTime = (ulong)DateTime.UtcNow.Subtract(DateTime.UnixEpoch).TotalSeconds; } - public static long GetUnixTime(DateTime dateTime) + public static ulong GetUnixTime(DateTime dateTime) { - return (long)dateTime.Subtract(DateTime.UnixEpoch).TotalSeconds; + return (ulong)dateTime.Subtract(DateTime.UnixEpoch).TotalSeconds; } - public static DateTime GetUTCTimeFromUnixTime(long unix) + public static DateTime GetUTCTimeFromUnixTime(ulong unix) { return DateTime.UnixEpoch.AddSeconds(unix).ToUniversalTime(); } - public static DateTime GetLocalTimeFromUnixTime(long unix) + public static DateTime GetLocalTimeFromUnixTime(ulong unix) { return DateTime.UnixEpoch.AddSeconds(unix).ToLocalTime(); } @@ -60,12 +70,14 @@ namespace CryptoCalc public override string DBVariables { get => base.DBVariables; set => base.DBVariables = value; } public override string DBTableName => "Transactions"; - public int WalletID { get; set; } + public long WalletID { get; set; } public string Currency { get; set; } - public decimal Amount { get; set; } + public long Amount { get; set; } + public ulong AmountDecimal { get; set; } public string TransactionType { get; set; } public string FeeCurrency { get; set; } - public decimal FeeAmount { get; set; } + public long FeeAmount { get; set; } + public ulong FeeAmountDecimal { get; set; } public string Platform { get; set; } public string Note { get; set; } @@ -75,12 +87,12 @@ namespace CryptoCalc public Transaction() { SetDBStrings(); } - public Transaction(int walletID, string currency, decimal amount, string type) + public Transaction(long walletID, string currency, decimal amount, string type) { SaveUnixTimeNow(); WalletID = walletID; Currency = currency; - Amount = amount; + (Amount, AmountDecimal) = Util.SplitDecimal(amount); TransactionType = type; Platform = ""; @@ -93,10 +105,10 @@ namespace CryptoCalc { SaveUnixTimeNow(); Currency = currency; - Amount = amount; + (Amount, AmountDecimal) = Util.SplitDecimal(amount); TransactionType = type; FeeCurrency = feeCurrency; - FeeAmount = feeAmount; + (FeeAmount, FeeAmountDecimal) = Util.SplitDecimal(feeAmount); Platform = ""; Note = ""; @@ -114,14 +126,16 @@ namespace CryptoCalc + $"@{nameof(UnixTime)}," + $"@{nameof(Currency)}," + $"@{nameof(Amount)}," + + $"@{nameof(AmountDecimal)}," + $"@{nameof(TransactionType)}," + $"@{nameof(FeeCurrency)}," + $"@{nameof(FeeAmount)}," + + $"@{nameof(FeeAmountDecimal)}," + $"@{nameof(Platform)}," + $"@{nameof(Note)}"; } - public string FullInfo => $"{ Index } {WalletID} { GetLocalTimeFromUnixTime(UnixTime) } { Currency } { Amount } { TransactionType }"; + public string FullInfo => $"{ Index } {WalletID} { GetLocalTimeFromUnixTime(UnixTime) } { Currency } { Util.CombineDecimal(Amount, AmountDecimal) } { TransactionType }"; public string CreateTable(string walletTableName) { @@ -131,10 +145,12 @@ namespace CryptoCalc + $"\"{nameof(WalletID)}\" INTEGER NOT NULL," + $"\"{nameof(UnixTime)}\" INTEGER NOT NULL," + $"\"{nameof(Currency)}\" TEXT NOT NULL," - + $"\"{nameof(Amount)}\" REAL NOT NULL," + + $"\"{nameof(Amount)}\" INTEGER NOT NULL," + + $"\"{nameof(AmountDecimal)}\" INTEGER NOT NULL," + $"\"{nameof(TransactionType)}\" TEXT NOT NULL," + $"\"{nameof(FeeCurrency)}\" TEXT," - + $"\"{nameof(FeeAmount)}\" REAL," + + $"\"{nameof(FeeAmount)}\" INTEGER," + + $"\"{nameof(FeeAmountDecimal)}\" INTEGER," + $"\"{nameof(Platform)}\" TEXT," + $"\"{nameof(Note)}\" TEXT," + $"PRIMARY KEY(\"{nameof(Index)}\" AUTOINCREMENT)," @@ -152,11 +168,12 @@ namespace CryptoCalc public override string DBVariables { get => base.DBVariables; set => base.DBVariables = value; } public override string DBTableName => "Wallets"; - public long UnixTimeCreated { get; set; } + public ulong UnixTimeCreated { get; set; } public string Platform { get; set; } public string Name { get; set; } public string Currency { get; set; } - public decimal Balance { get; set; } + public long Balance { get; set; } + public ulong BalanceDecimal { get; set; } public int DefaultWallet { get; set; } public string Note { get; set; } @@ -173,7 +190,7 @@ namespace CryptoCalc Platform = platform; Name = name; Currency = currency; - Balance = 0M; + (Balance, BalanceDecimal) = Util.SplitDecimal(0); DefaultWallet = 0; Note = note; @@ -193,6 +210,7 @@ namespace CryptoCalc + $"@{nameof(Name)}," + $"@{nameof(Currency)}," + $"@{nameof(Balance)}," + + $"@{nameof(BalanceDecimal)}," + $"@{nameof(DefaultWallet)}," + $"@{nameof(Note)}"; } @@ -209,7 +227,8 @@ namespace CryptoCalc + $"\"{nameof(Platform)}\" TEXT," + $"\"{nameof(Name)}\" TEXT," + $"\"{nameof(Currency)}\" TEXT NOT NULL," - + $"\"{nameof(Balance)}\" REAL NOT NULL," + + $"\"{nameof(Balance)}\" INTEGER NOT NULL," + + $"\"{nameof(BalanceDecimal)}\" INTEGER NOT NULL," + $"\"{nameof(DefaultWallet)}\" INTEGER," + $"\"{nameof(Note)}\" TEXT," + $"PRIMARY KEY(\"{nameof(Index)}\" AUTOINCREMENT)" diff --git a/MainWindow.xaml b/MainWindow.xaml index 29fd908..c1a817d 100644 --- a/MainWindow.xaml +++ b/MainWindow.xaml @@ -23,6 +23,7 @@