/// <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); }
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)); }
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); }
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())); }
public Transactions PostTransactions(Transactions item) { item = trepository.Add(item); return(item); }