public async Task <DTO.UnitOutput> RemoveEntityByIdAsync(long id)
        {
            try
            {
                await TransactionHandler.BeginTransactionAsync();

                var unitToRemove = await UnitRepository.GetEntityAsync(filter : u => u.Id == id, includes : Includes);

                if (unitToRemove.Articles != null && unitToRemove.Articles.Count > 0)
                {
                    throw new BadRequestException("This unit is used by another article.");
                }

                var removedUnit = await UnitRepository.RemoveEntityAsync(unitToRemove);

                await TransactionHandler.CommitTransactionAsync();

                return(Mapper.Map <DTO.UnitOutput>(removedUnit));
            }
            catch
            {
                await TransactionHandler.RollbackTransactionAsync();

                throw;
            }
            finally
            {
                await TransactionHandler.DisposeTransactionAsync();
            }
        }
Example #2
0
        public async Task ShouldReturnListofTransactionViewModelWithDataWhenTrueLayerApiReturnsData()
        {
            var mockAccountService     = new Mock <IAccountService>();
            var mockTransactionService = new Mock <ITransactionService>();
            var mockStorage            = new Mock <IStorage>();
            var accounts = new List <AccountModel>
            {
                new AccountModel
                {
                    AccountId   = "testAccountId",
                    AccountName = "TestAccount",
                    AccountType = "TestAccountType"
                }
            };

            var transactions = new List <TransactionModel> {
                new TransactionModel
                {
                    Amount              = 1,
                    Description         = "testDesc",
                    TransactionCategory = "testCategory",
                    TransactionType     = "testTransaction"
                }
            };

            mockAccountService.Setup(x => x.GetAllBankAccounts()).ReturnsAsync(accounts);
            mockTransactionService.Setup(x => x.GetTransactionByAccountId(accounts[0].AccountId)).ReturnsAsync(transactions);

            var handler = new TransactionHandler(mockAccountService.Object, mockTransactionService.Object, mockStorage.Object);

            var result = await handler.Handle(It.IsAny <GetTransactionQuery>(), It.IsAny <CancellationToken>());

            Assert.IsTrue(result.Response.Count > 0);
            Assert.IsInstanceOfType(result.Response, typeof(List <TransactionViewModel>));
        }
Example #3
0
        /// <summary>
        /// Be notified (called back) when the local copy of the blockchain is updated at the transaction level.
        /// </summary>
        /// <param name="handler"> Callback which will be called when a transaction is added. </param>
        public void SubscribeToTransaction(TransactionHandler handler)
        {
            var handlerHandle = GCHandle.Alloc(handler);
            var handlerPtr    = (IntPtr)handlerHandle;

            ExecutorNative.chain_subscribe_transaction(nativeInstance_, Chain.NativeInstance, handlerPtr, internalTxHandler_);
        }
Example #4
0
        public async Task DeleteTransactionForCurrentUser(int transactionId)
        {
            var userId = await _authenticationService.GetCurrentUserId();

            using var unitOfWork = _unitOfWork();
            var transaction = await unitOfWork.TransactionRepository.FindSingleTracked(item =>
                                                                                       item.Id == transactionId && item.UserId == userId,
                                                                                       includeProperties : new string[] {
                nameof(TransactionEntity.BankAccount)
            });

            if (transaction == null)
            {
                throw new NotFoundException(nameof(TransactionEntity));
            }

            if (transaction.TransactionCategories != null)
            {
                unitOfWork.TransactionCategoryRepository.DeleteRange(transaction.TransactionCategories);
            }

            unitOfWork.TransactionRepository.Delete(transaction);
            await unitOfWork.SaveAsync();

            transaction.BankAccount.CurrentBalance = await TransactionHandler.CalculateCurrentBalanceForBankAccount(unitOfWork, transaction.BankAccount);

            await unitOfWork.SaveAsync();
        }
        public static bool updateToApproved(int id)
        {
            Transaction trans = TransactionHandler.getSingleTransaction(id);

            TransactionRepository.updateTransaction(trans.TransactionId, "Approved", trans.Quantity, trans.Subtotal);
            return(true);
        }
Example #6
0
        public async Task <TransactionModel> CreateTransactionForCurrentUser(TransactionModel transactionModel)
        {
            var userId = await _authenticationService.GetCurrentUserId();

            using var unitOfWork = _unitOfWork();

            var bankAccount = await unitOfWork.BankAccountRepository.FindSingleTracked(x => x.UserId == userId && x.Id == transactionModel.BankAccountId);

            if (bankAccount == null)
            {
                throw new NotFoundException(nameof(BankAccountEntity));
            }

            var transactionEntity = transactionModel.ToNewEntity(userId);

            unitOfWork.TransactionRepository.Insert(transactionEntity);
            await unitOfWork.SaveAsync();

            // First save the transaction, then recalculate the balance.
            bankAccount.CurrentBalance = await TransactionHandler.CalculateCurrentBalanceForBankAccount(unitOfWork, bankAccount);

            await unitOfWork.SaveAsync();

            return(transactionEntity.ToDto());
        }
Example #7
0
        public ActionResult TransactionDetails(int transactionId)
        {
            Transaction transaction = TransactionHandler.getTransaction(transactionId);

            Profile buyer  = ProfileHandler.GetProfile(transaction.BuyerId);
            Profile seller = ProfileHandler.GetProfile(transaction.SellerId);

            if (User.Identity.Name == buyer.Email)
            {
                transaction.CurrentUser      = ActionBy.Buyer;
                transaction.CounterPartyName = seller.Name;
            }
            else
            {
                transaction.CurrentUser      = ActionBy.Seller;
                transaction.CounterPartyName = buyer.Name;
            }

            if ((transaction.CurrentUser == ActionBy.Buyer && transaction.Confirmed == Confirmed.ByBuyer) ||
                (transaction.CurrentUser == ActionBy.Seller && transaction.Confirmed == Confirmed.BySeller))
            {
                transaction.ConfirmedByCurrentUser = true;
            }
            else
            {
                transaction.ConfirmedByCurrentUser = false;
            }

            TransactionCommentModel model = new TransactionCommentModel(transaction, User.Identity.Name);

            return(View(model));
        }
        public async Task <DTO.CountryOutput> RemoveEntityByIdAsync(long id)
        {
            try
            {
                await TransactionHandler.BeginTransactionAsync();

                var countryToRemove =
                    await CountryRepository.GetEntityAsync(filter : c => c.Id == id, includes : Includes);

                if (countryToRemove.Addresses != null && countryToRemove.Addresses.Count > 0)
                {
                    throw new BadRequestException("This country is used by another address.");
                }

                var removedCountry = await CountryRepository.RemoveEntityAsync(countryToRemove);

                await TransactionHandler.CommitTransactionAsync();

                return(Mapper.Map <DTO.CountryOutput>(removedCountry));
            }
            catch
            {
                await TransactionHandler.RollbackTransactionAsync();

                throw;
            }
            finally
            {
                await TransactionHandler.DisposeTransactionAsync();
            }
        }
Example #9
0
        public async Task <IActionResult> PaymentConfirm(Payment payment, string code)
        {
            var t = HttpContext.Session.GetInt32("Payment");

            if (t == null)
            {
                RedirectToAction(nameof(Payment));
            }

            if (TransactionHandler.IsValid((int)t, code))
            {
                User   user   = null;
                string userId = HttpContext.Session.GetString("UserId");
                SessionHandler.GetUser(userId, out user);

                try
                {
                    await _context.MakePayment(user, payment);
                }
                catch
                {
                    return(Redirect("/Home/Error"));
                }

                return(RedirectToAction(nameof(PaymentList)));
            }
            else
            {
                ViewBag.ErrMsg = "Wrong confirmation code!";
                return(View(payment));
            }
        }
        public async Task <DTO.CountryOutput> UpdateEntityAsync(long id, DTO.CountryInput entity)
        {
            try
            {
                await TransactionHandler.BeginTransactionAsync();

                var foundCountry = await CountryRepository.GetEntityByIdAsync(id);

                if (foundCountry == null)
                {
                    throw new NotFoundException("This country does not exist.");
                }

                foundCountry.Code = entity.Code;
                foundCountry.Name = entity.Name;

                await CountryRepository.UpdateEntityAsync(foundCountry);

                await TransactionHandler.CommitTransactionAsync();

                return(Mapper.Map <DTO.CountryOutput>(foundCountry));
            }
            catch
            {
                await TransactionHandler.RollbackTransactionAsync();

                throw;
            }
            finally
            {
                await TransactionHandler.DisposeTransactionAsync();
            }
        }
Example #11
0
        private void DataPortal_Fetch(TapMangoPlant.Criteria criteria)
        {
            TransactionHandler.ProcessTransaction((tr) =>
            {
                using (var cm = tr.CreateCommand())
                {
                    this.RaiseListChangedEvents = false;

                    cm.CommandText = "usp_TapMangoPlant";
                    cm.CommandType = CommandType.StoredProcedure;

                    cm.Parameters.AddWithValue("@action", criteria.Action);
                    cm.Parameters.AddWithValue("@Id", criteria.Id);

                    using (var dr = new SafeDataReader(cm.ExecuteReader()))
                    {
                        while (dr.Read())
                        {
                            this.Add(new TapMangoPlant(dr));
                        }
                    }

                    this.RaiseListChangedEvents = true;
                }
            });
        }
Example #12
0
        public async Task <IActionResult> Payment(Payment payment)
        {
            ViewBag.Templates = await GetTemplates();

            ViewBag.BankCodes = DataHandler.GetBankCodes();

            if (ModelState.IsValid)
            {
                User   user   = null;
                string userId = HttpContext.Session.GetString("UserId");
                SessionHandler.GetUser(userId, out user);

                if (user.Money < payment.Amount)
                {
                    ViewBag.Insufficient = "Insufficient money.";
                    return(View(payment));
                }

                if (payment.DestBank == 666 && !_context.AccountExist(payment.DestAccount))
                {
                    return(View("NoAccount", payment));
                }

                int t = TransactionHandler.NewPayment(user, payment);
                HttpContext.Session.SetInt32("Payment", t);
                return(View("PaymentConfirm", payment));
            }

            ViewBag.ErrMsg = "Values are not valid.";
            return(View(payment));
        }
Example #13
0
        public override void OnAfterSimulationTick()
        {
            // Normally, the game is paused when the player is in Esc or similar menus. We ignore this setting.
            if (SimulationManager.instance.ForcedSimulationPaused && MultiplayerManager.Instance.CurrentRole != MultiplayerRole.None)
            {
                SimulationManager.instance.ForcedSimulationPaused = false;
            }

            if (_lastSelectedSimulationSpeed != SimulationManager.instance.SelectedSimulationSpeed)
            {
                Command.SendToAll(new SpeedCommand
                {
                    SelectedSimulationSpeed = SimulationManager.instance.SelectedSimulationSpeed
                });
            }

            if (_lastSimulationPausedState != SimulationManager.instance.SimulationPaused)
            {
                Command.SendToAll(new PauseCommand
                {
                    SimulationPaused = SimulationManager.instance.SimulationPaused
                });
            }

            _lastSimulationPausedState   = SimulationManager.instance.SimulationPaused;
            _lastSelectedSimulationSpeed = SimulationManager.instance.SelectedSimulationSpeed;

            // Finish transactions
            TransactionHandler.FinishSend();
        }
Example #14
0
        public async Task ShouldReturnTransactionViewModelWithOutDataWhenTrueLayerTransactionApiEndpointDoesNotReturnsData()
        {
            var mockAccountService     = new Mock <IAccountService>();
            var mockTransactionService = new Mock <ITransactionService>();
            var mockStorage            = new Mock <IStorage>();
            var accounts = new List <AccountModel>
            {
                new AccountModel
                {
                    AccountId   = "testAccountId",
                    AccountName = "TestAccount",
                    AccountType = "TestAccountType"
                }
            };

            mockAccountService.Setup(x => x.GetAllBankAccounts()).ReturnsAsync(new List <AccountModel>());
            mockTransactionService.Setup(x => x.GetTransactionByAccountId(accounts[0].AccountId)).ReturnsAsync(new List <TransactionModel>());

            var handler = new TransactionHandler(mockAccountService.Object, mockTransactionService.Object, mockStorage.Object);

            var result = await handler.Handle(It.IsAny <GetTransactionQuery>(), It.IsAny <CancellationToken>());

            Assert.IsTrue(result.Response.Count == 0);
            Assert.IsInstanceOfType(result.Response, typeof(List <TransactionViewModel>));
        }
Example #15
0
        public async Task <DTO.ArticleOutput> RemoveEntityByIdAsync(long id, string userName, string normalizedUserName)
        {
            try
            {
                await TransactionHandler.BeginTransactionAsync();

                var foundArticle = await CheckAccessRightsAndGetArticleAsync(id, userName, normalizedUserName);

                var removedArticle = await ArticleRepository.RemoveEntityAsync(foundArticle);

                await TransactionHandler.CommitTransactionAsync();

                return(Mapper.Map <DTO.ArticleOutput>(removedArticle));
            }
            catch
            {
                await TransactionHandler.RollbackTransactionAsync();

                throw;
            }
            finally
            {
                await TransactionHandler.DisposeTransactionAsync();
            }
        }
Example #16
0
 public TransactionHandlerTests()
 {
     _accountRepository     = Substitute.For <IAccountRepository>();
     _transactionRepository = Substitute.For <ITransactionRepository>();
     _uow = Substitute.For <IUnitOfWork>();
     _transactionHandler = new TransactionHandler(_accountRepository, _transactionRepository, _uow);
 }
Example #17
0
 public async void ShouldDecoratedTransactionHandlerAndThrowException()
 {
     var command            = new AnyCommand();
     var decorator          = new ExceptionCommandDcorator();
     var transactionHandler = new TransactionHandler <AnyCommand>(unitOfWork, decorator);
     await Assert.ThrowsAsync <Exception>(() => transactionHandler.ExecuteAsync(command));
 }
Example #18
0
        protected void btnCheckout_Click(object sender, EventArgs e)
        {
            User user = (User)Session["auth_user"];

            TransactionHandler.Checkout(user, carts);

            Response.Redirect("Index.aspx");
        }
        public void SimpleDepositTest()
        {
            var th     = new TransactionHandler();
            var result = th.Deposit(4500.00, 3);

            Assert.IsNotNull(result);
            Assert.AreEqual(result, "Success");
        }
        public void WithdrawOverLimitTest()
        {
            // Only Account 2 is of the type "Individual Investment"
            var th     = new TransactionHandler();
            var result = th.Withdraw(1200, 2);

            Assert.AreNotEqual(result, "Success");
        }
Example #21
0
 public void HandlePlayerDisconnect(Player player)
 {
     MultiplayerManager.Instance.PlayerList.Remove(player.Username);
     this.ConnectedPlayers.Remove(player.NetPeer.Id);
     Command.HandleClientDisconnect(player);
     TransactionHandler.ClearTransactions(player.NetPeer.Id);
     ToolSimulator.RemoveSender(player.NetPeer.Id);
 }
Example #22
0
        public CreateMovementResponse Run(CreateMovementRequest request)
        {
            GameEntity game = gameRepository.Retrieve(request.id);

            if (game == null)
            {
                throw new BadRequestException("Partida não encontrada");
            }

            if (game.currentPlayer != TypePlayerExtension.GetByPlay(request.player))
            {
                throw new BadRequestException("Não é turno do jogador");
            }

            if (!PositionIsValid(request.position, game))
            {
                throw new BadRequestException("Espaço inválido");
            }

            MovementEntity movement = new MovementEntity()
            {
                gameId = request.id,
                player = TypePlayerExtension.GetByPlay(request.player),
                turn   = game.turn,
                x      = request.position.x,
                y      = request.position.y
            };

            game = TransactionHandler.HandleTransaction(() =>
            {
                movementRepository.Create(movement);
                return(gameRepository.RegisterMovement(request.id, movement));
            });

            string winner = CheckForWinner(game.board);
            string msg    = null;

            if (game.turn >= 9 && winner == null)
            {
                winner = "Draw";
            }

            if (winner != null)
            {
                msg = "Partida finalizada";
            }
            else
            {
                msg = "Partida em andamento";
            }

            return(new CreateMovementResponse()
            {
                msg = msg,
                winner = winner
            });
        }
Example #23
0
        public ActionResult CancelTransaction(Transaction transaction)
        {
            if (ModelState.IsValid)
            {
                TransactionHandler.CancelTransaction(transaction);
            }

            return(RedirectToAction("Index", "Home"));
        }
Example #24
0
        public async void ShouldDecoratedTransactionHandlerAndSum()
        {
            var command            = new AnyCommand();
            var decorator          = new AnyCommandDcorator();
            var transactionHandler = new TransactionHandler <AnyCommand>(unitOfWork, decorator);
            await transactionHandler.ExecuteAsync(command);

            Assert.Equal(1, command.Cout);
        }
Example #25
0
        public override void Handle(ClientDisconnectCommand command)
        {
            LogManager.GetCurrentClassLogger().Info($"Player {command.Username} has disconnected!");
            ChatLogPanel.PrintGameMessage($"Player {command.Username} has disconnected!");

            MultiplayerManager.Instance.PlayerList.Remove(command.Username);

            TransactionHandler.ClearTransactions(command.ClientId);
        }
Example #26
0
        public static HeaderTransaction createHeaderTransaction(int UserID, int PaymentTypeID)
        {
            HeaderTransaction ht = new HeaderTransaction();

            ht.ID            = TransactionHandler.getLastTransactionID() + 1;
            ht.UserID        = UserID;
            ht.PaymentTypeID = PaymentTypeID;
            ht.Date          = DateTime.Now;
            return(ht);
        }
Example #27
0
        protected override void Handle(ClientDisconnectCommand command)
        {
            Log.Info($"Player {command.Username} has disconnected!");
            ChatLogPanel.PrintGameMessage($"Player {command.Username} has disconnected!");

            MultiplayerManager.Instance.PlayerList.Remove(command.Username);

            TransactionHandler.ClearTransactions(command.ClientId);
            ToolSimulator.RemoveSender(command.ClientId);
        }
Example #28
0
        public UnitTests()
        {
            var accountHandler     = new AccountHandler();
            var customerHandler    = new CustomerHandler();
            var transactionHandler = new TransactionHandler();
            var fakeFileHandler    = new FakeFileHandler();

            _bank = new Bank(new FakeFileHandler(), customerHandler, transactionHandler, accountHandler);
            Seed();
        }
Example #29
0
        /// <summary>
        ///     Attempt to disconnect from the server
        /// </summary>
        public void Disconnect()
        {
            // Update status and stop client
            Status = ClientStatus.Disconnected;
            _netClient.Stop();
            MultiplayerManager.Instance.PlayerList.Clear();
            TransactionHandler.ClearTransactions();

            _logger.Info("Disconnected from server");
        }
 public TransactionController(
     IAccountRepository accountRepository,
     ITransactionRepository transactionRepository,
     TransactionHandler transactionHandler,
     IUnitOfWork uow)
 {
     _accountRepository     = accountRepository;
     _transactionRepository = transactionRepository;
     _transactionHandler    = transactionHandler;
     _uow = uow;
 }
Example #31
0
        //
        // Constructie
        //
        private DataAccess()
        {
            sysLog.Info("DataAccess startup");

            publicXmlRpcUrl = ConfigurationManager.AppSettings["PUBLIC_XML_RPC_SERVER"];
            privateXmlRpcUrl = ConfigurationManager.AppSettings["PRIVATE_XML_RPC_SERVER"];

            publicExchangeHandler = HandlerHelper.getPublicExchangeHandler(publicXmlRpcUrl);
            publicIndexHandler = HandlerHelper.getPublicIndexHandler(publicXmlRpcUrl);
            publicOrderHandler = HandlerHelper.getPublicOrderHandler(publicXmlRpcUrl);
            publicPortfolioHandler = HandlerHelper.getPublicPortfolioHandler(publicXmlRpcUrl);
            publicSecurityHandler = HandlerHelper.getPublicSecurityHandler(publicXmlRpcUrl);
            publicTransactionHandler = HandlerHelper.getPublicTransactionHandler(publicXmlRpcUrl);
            publicUserHandler = HandlerHelper.getPublicUserHandler(publicXmlRpcUrl);
            publicPointsTransactionHandler = HandlerHelper.getPublicPointsTransactionHandler(publicXmlRpcUrl);

            exchangeCache = new Dictionary<string, IExchange>();
        }