Ejemplo n.º 1
0
        /// <inheritdoc />
        /// <summary>
        /// Gets the transactions view model.
        /// </summary>
        /// <param name="umbracoContext">The umbraco context.</param>
        /// <returns></returns>
        public IEnumerable <BraintreeTransactionViewModel> GetTransactionsViewModel(UmbracoContext umbracoContext)
        {
            loggingService.Info(GetType());

            List <BraintreeTransactionViewModel> viewModels = new List <BraintreeTransactionViewModel>();

            PaymentSettingsModel model = paymentProvider.GetPaymentSettingsModel(umbracoContext);

            if (model.PaymentsEnabled)
            {
                transactionsRepository.SetKey(umbracoContext);

                bool exists = transactionsRepository.Exists();

                if (exists)
                {
                    return(transactionsRepository.Get <IEnumerable <BraintreeTransactionViewModel> >());
                }

                ResourceCollection <Transaction> transactions = paymentProvider.GetBraintreeTransactions(model);

                viewModels = (from Transaction transaction
                              in transactions
                              select transactionTranslator.Translate(transaction))
                             .ToList();

                transactionsRepository.Add(viewModels);
            }

            return(viewModels);
        }
Ejemplo n.º 2
0
        public void Buy(string userName, int productId, int quantity)
        {
            if (quantity <= 0)
            {
                throw new InvalidOperationException("Quantity can't be less or equal 0");
            }

            lockService.Execute(() =>
            {
                try
                {
                    var entities    = GetAndCheckEntities(userName, productId);
                    User user       = entities.Item1;
                    Product product = entities.Item2;

                    if (product.Quantity < quantity)
                    {
                        throw new ValidationException("Not enough product to buy");
                    }

                    float userDiscount    = GetDiscount(productId);
                    decimal discountPrice = userDiscount != 0
                        ? product.Cost - ((product.Cost / 100) * (decimal)userDiscount)
                        : product.Cost;

                    decimal amount = discountPrice * quantity;

                    if (user.Amount < amount)
                    {
                        throw new ValidationException("Not enough money to buy the product");
                    }

                    transactionsRepository.Add(new Transaction()
                    {
                        Username    = user.Name,
                        ProductId   = product.Id,
                        ProductName = product.Name,
                        Quantity    = quantity,
                        Cost        = product.Cost,
                        Discount    = userDiscount,
                        SellCost    = discountPrice,
                        Amount      = amount
                    });

                    productsRepository.ChangeQuantity(productId, product.Quantity - quantity);
                    usersRepository.ChangeBalance(user.Name, user.Amount - amount);
                }
                catch (Exception ex) when(!(ex is ValidationException))
                {
                    errorsRepository.Add(new TransactionError()
                    {
                        Date        = environment.GetUtcNow(),
                        Description = ex.Message
                    });

                    throw;
                }
            });
        }
        public ActionResult Create([Bind(Include = "tid,account_id,amount,type")] Transactions transactions)
        {
            if (ModelState.IsValid)
            {
                transactionRepository.Add(transactions);
                //        db.Transactions.Add(transactions);
                //     db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(transactions));
        }
Ejemplo n.º 4
0
        public async Task ExecuteAsync(FundIdeaCommand command)
        {
            var idea = await _ideasWriteRepository.Get(command.IdeaId);

            if (idea == null)
            {
                throw new Exception("Idea not found");
            }

            var transaction = _mapper.Map <Transaction>(command);

            await _transactionsRepository.Add(transaction);

            idea.Fill(transaction.Amount);

            await _ideasWriteRepository.Save(idea);
        }
Ejemplo n.º 5
0
        public void AddTransactionTest()
        {
            var transactionToAdd = new Transaction()
            {
                Username    = "******",
                ProductId   = 1,
                ProductName = "Milk",
                Amount      = 10,
                Cost        = 4.55M,
                Discount    = 2.34f,
                Quantity    = 1,
                SellCost    = 14.87M
            };

            repository.Add(transactionToAdd);
            var expected = collectionInit.ToList();

            expected.Add(transactionToAdd);

            var actual = repository.GetAll().ToList();

            Assert.That(expected, Is.EquivalentTo(actual).Using(new TransactionComparer()));
        }
Ejemplo n.º 6
0
 public Transactions PostTransactions(Transactions item)
 {
     item = trepository.Add(item);
     return(item);
 }