示例#1
0
        public override void End()
        {
            if (UndoingOrRedoing)
            {
                base.End();
                m_savedSelection = null;
                return;
            }

            if (s_subContextBegan)
            {
                s_subContextBegan = false;
                MasterContext.End();
                return;
            }

            if (IsMasterContext)
            {
                foreach (GameContext subContext in m_gameDocumentRegistry.SubDocuments.AsIEnumerable <GameContext>())
                {
                    subContext.End();
                }
            }

            if (TransactionOperations.Count == 0)
            {
                TransactionOperations.Add(new Nop());
            }
            base.End();
            m_savedSelection = null;
        }
示例#2
0
        public BtcSrvController(WalletContextOperations wcops, WalletAddressOperations waops, TransactionOperations trops)
        {
            this._wcops = wcops;
            this._waops = waops;
            this._trops = trops;

            _getLastLastCalledUtc = DateTime.UtcNow;
        }
示例#3
0
        public SyncTaskStarter(IConnectionStringProvider provider)
        {
            var wcops = new WalletContextOperations(provider);

            var waops = new WalletAddressOperations(provider);

            var trops = new TransactionOperations(provider);

            _syops = new SyncOperations(wcops, trops, waops);
        }
示例#4
0
 public void TransactionOperation()
 {
     TransactionOperations.Invoke(() =>
     {
         _categoryDal.Add(new Category {
             Name = "Laptop", Description = "Laptop"
         });
         _categoryDal.Add(null);
     });
 }
示例#5
0
        static void Main(string[] args)
        {
            var bookRepo      = new BookRepository();
            var tranRepo      = new TransactionOperations();
            var userRepo      = new UserRepository();
            var libOperations = new LibraryOperations(bookRepo, tranRepo, userRepo);

            //Add User
            var user = new User
            {
                Address   = "Some Dummy Address",
                FirstName = "John",
                LastName  = "Doe"
            };
            var user2 = new User
            {
                Address   = "Another Dummy Address",
                FirstName = "Jenny",
                LastName  = "Doe"
            };

            var check = libOperations.AddUser(user);

            libOperations.AddUser(user2);
            var userCapacity = userRepo.GetUserById(user.Id).BorrowCapacity;
            var users        = libOperations.SearchByUser("doe");

            foreach (var usr in users)
            {
                Console.WriteLine($"User Name- {usr.FirstName + " " + usr.LastName}, Borrow capacity - {usr.BorrowCapacity}");
            }

            try
            {
                Console.WriteLine($"Test to check add same user - Should return Exception");
                libOperations.AddUser(user);
            }
            catch (Exception ex)
            {
                if (ex.InnerException != null)
                {
                    Console.WriteLine($"Exception - {ex.InnerException.Message}");
                }
                else
                {
                    Console.WriteLine($"Exception - {ex.Message}");
                }
            }

            //Add Book
            var book = new Book
            {
                Author     = "Amitava Ghosh",
                ISBN       = String.Concat("ISBN-", Guid.NewGuid().ToString()),
                Price      = 560.12M,
                TypeOfBook = BookType.GeneralBook,
                Name       = "Dummy New Book"
            };
            var book2 = new Book
            {
                Author     = "Isaac Asimov",
                ISBN       = String.Concat("ISBN-", Guid.NewGuid().ToString()),
                Price      = 760.12M,
                TypeOfBook = BookType.GeneralBook,
                Name       = "Robot Book"
            };
            var book3 = new Book
            {
                Author     = "Charles Dickens",
                ISBN       = String.Concat("ISBN-", Guid.NewGuid().ToString()),
                Price      = 165.42M,
                TypeOfBook = BookType.GeneralBook,
                Name       = "Tale of Two Cities"
            };

            var getBook = bookRepo.SearchByTitle(book.Name);

            Console.WriteLine($"Book - {book.Name} fetched from Book Repository");

            libOperations.AddBook(book);
            libOperations.AddBook(book2);
            libOperations.AddBook(book3);
            Console.WriteLine();
            Console.WriteLine("Books");
            Console.WriteLine("-----");
            foreach (var b in bookRepo.GetAllBooks())
            {
                Console.WriteLine($"Book Name - {b.Name}, Author - {b.Author}, ISBN - {b.ISBN}");
            }
            Console.WriteLine();
            Console.WriteLine("Users");
            Console.WriteLine("-----");
            foreach (var u in userRepo.GetAllUsers())
            {
                Console.WriteLine($"User - {u.FirstName + " " + u.LastName}, IsBorrowLimited - {u.IsBorrowLimited}, BorrowCapacity - {u.BorrowCapacity} ");
            }
            Console.WriteLine();
            var dt  = libOperations.IssueBook(book, user);
            var dt2 = libOperations.IssueBook(book2, user2);

            userCapacity = userRepo.GetUserById(user.Id).BorrowCapacity;
            Console.WriteLine($"User - {user.FirstName + " " + user.LastName} borrow capacity - {user.BorrowCapacity}");
            if (dt != DateTime.MinValue)
            {
                Console.WriteLine($"Book - {book.Name} has been issued to User - {user.FirstName + " " + user.LastName}, with a return date of - {dt}");
            }
            if (dt2 != DateTime.MinValue)
            {
                Console.WriteLine($"Book - {book2.Name} has been issued to User - {user2.FirstName + " " + user2.LastName}, with a return date of - {dt2}");
            }
            var isReturned = libOperations.ReturnBook(book);

            if (isReturned)
            {
                Console.WriteLine($"Book => {book.Name}, has been returned by User - {user.FirstName + " " + user.LastName}.");
            }
            userCapacity = userRepo.GetUserById(user.Id).BorrowCapacity;
            Console.WriteLine($"User - {user.FirstName + " " + user.LastName} borrow capacity - {user.BorrowCapacity}");
            isReturned = libOperations.ReturnBook(book);
            Console.WriteLine($"Book is retuerned, no more pending state.Should be false => {isReturned == false}");

            isReturned = libOperations.ReturnBook(book2);
            if (isReturned)
            {
                Console.WriteLine($"Book => {book2.Name}, has been returned by User - {user2.FirstName + " " + user2.LastName}.");
            }


            Console.WriteLine($"\nGet all transactions by User - {user2.FirstName + " " + user2.LastName}");
            Console.WriteLine("----------------------------------------");
            foreach (var tran in libOperations.GetTransactionsByUser(user2))
            {
                Console.WriteLine($"Book Id - {tran.BookId}, Issue Date - {tran.DateOfIssue}, Due Date - {tran.DueDate}");
            }
            Console.WriteLine("\nTest Borrow Limit Blocked");
            Console.WriteLine("-------------------------");
            var issuedDt = libOperations.IssueBook(book3, user);

            if (issuedDt != DateTime.MinValue)
            {
                Console.WriteLine($"Book - {book3.Name} has been issued to User - {user.FirstName + " " + user.LastName}, with a return date of - {issuedDt}");
            }
            var isBlocked = libOperations.LimitBorrow(user.Id);

            libOperations.IssueBook(book2, user);

            Console.WriteLine($"\nGet all transactions by User - {user.FirstName + " " + user.LastName}");
            Console.WriteLine("----------------------------------------");
            foreach (var tran in libOperations.GetTransactionsByUser(user))
            {
                Console.WriteLine($"Book Id - {tran.BookId}, Issue Date - {tran.DateOfIssue}, Due Date - {tran.DueDate}");
            }
            Console.ReadLine();
        }
 public TransactionBAL()
 {
     op = new TransactionOperations();
 }
示例#7
0
        public void InitWalletsInfo_Call_Success()
        {
            //add hot wallets manually

            var wc1 = new WalletContext();

            wc1.Tag       = "btccliwebsrv";
            wc1.Url       = "http://192.168.0.45:11111";
            wc1.User      = "******";
            wc1.Passsword = "btcpwd";



            var wc2 = new WalletContext();

            wc2.Tag       = "btccliwebsrv2";
            wc2.Url       = "http://192.168.0.45:11112";
            wc2.User      = "******";
            wc2.Passsword = "btcpwd";

            var provider = new WebAppConnectionStringProvider();

            var wcops = new WalletContextOperations(provider);

            var waops = new WalletAddressOperations(provider);

            var trops = new TransactionOperations(provider);

            if (!wcops.Exist(wc1))
            {
                wcops.Add(wc1);
            }

            if (!wcops.Exist(wc2))
            {
                wcops.Add(wc2);
            }

            //sync hot wallet's adresses
            var wallets = wcops.GetAll();

            foreach (var w in wallets)
            {
                var btcops = new BtcCliOperations(w);

                try {
                    var walletAddressCount = 0;

                    try { walletAddressCount = btcops.GetAddresses().Count(); } catch (Exception ex) { /*if no addresses in wallet*/ Debug.WriteLine(ex.ToString()); }

                    //add initial addresses in wallets if
                    while (walletAddressCount < 5)
                    {
                        try
                        {
                            var a = btcops.GetNewAddressForLabel();


                            walletAddressCount++;

                            Debug.WriteLine($"gen address {a} for wallet with tag:{w.Tag}");
                        }
                        catch (Exception ex)
                        {
                            Debug.WriteLine(ex.ToString());
                        }
                    }

                    //sync with db

                    IEnumerable <string> addrs = new List <string>();

                    try
                    {
                        addrs = btcops.GetAddresses();
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine(ex.ToString());
                    }

                    foreach (var a in addrs)
                    {
                        if (!waops.Exist(a))
                        {
                            waops.Add(new WalletAddress()
                            {
                                address   = a,
                                wallettag = w.Tag,
                                walleturl = w.Url,
                                updated   = DateTime.Now
                            });
                        }
                    }

                    //fill test balances if zeroes and node total exits
                    double?total = null;

                    try
                    {
                        total = btcops.GetDefaultWalletBalance();
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine(ex.ToString());
                    }

                    if (!total.HasValue || total.Value == 0.0)
                    {
                        btcops.GenTestCoins();
                    }
                    var retries = 3;
                    while (total == 0.0 && retries-- >= 3)
                    {
                        try
                        {
                            total = btcops.GetDefaultWalletBalance();

                            break;
                        }
                        catch (Exception ex)
                        {
                            Debug.WriteLine(ex.ToString());
                        }
                    }

                    if (total.HasValue && total.Value > 0)
                    {
                        foreach (var wadr in waops.GetAll(w.Tag, w.Url))
                        {
                            if (wadr.balance != 0)
                            {
                                continue;
                            }

                            var testAmount = total / addrs.Count();

                            try
                            {
                                btcops.SendToAddress(wadr.address, testAmount.Value);
                            }
                            catch (Exception ex)
                            {
                                Debug.WriteLine(ex.ToString());
                            }
                        }
                    }


                    //sync transactions with db
                    List <Transaction> trList = new List <Transaction>();
                    try
                    {
                        trList = btcops.ListTransactions().ToList();

                        trops.AddOrUpdateConfirmations(trList);
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine(ex.ToString());
                    }
                }
                catch (Exception ex) { Debug.WriteLine(ex.ToString()); }
            }

            //test sending coins
            foreach (var fromwallet in wallets)
            {
                var btcops = new BtcCliOperations(fromwallet);

                foreach (var to_wallet in wallets.Where(i => i.Tag != fromwallet.Tag && i.Url != fromwallet.Url).ToArray())
                {
                    var fromwallet_balance = btcops.GetDefaultWalletBalance();

                    if (fromwallet_balance == 0)
                    {
                        continue;
                    }

                    var testAmount = 0.001;

                    var to_addresses = waops.GetAll(to_wallet.Tag, to_wallet.Url);

                    foreach (var a in to_addresses)
                    {
                        try
                        {
                            btcops.SendToAddress(a.address, testAmount);
                        }
                        catch (Exception ex)
                        {
                            Debug.WriteLine(ex.ToString());
                        }
                    }
                }
            }
        }
示例#8
0
 public SyncOperations(WalletContextOperations wcops, TransactionOperations trops, WalletAddressOperations waops)
 {
     this._wcops = wcops;
     this._trops = trops;
     this._waops = waops;
 }