public async Task <IActionResult> BurnCoupon(string offerNumber)
        {
            var lang         = Request.Path.Value.Split('/')[2]?.ToString() == "ar-SA" ? "ar" : "en";
            var mobileNumber = User.Claims.FirstOrDefault(c => c.Type == "mobileNumber").Value;
            var burnResponse = await _couponsService.BurnCouponsAsync(mobileNumber, offerNumber, lang == "ar"? "2" : "1");

            if (burnResponse.ErrorCode != "0")
            {
                _logger.Information($"Coupons Burn Response Message: {burnResponse.ErrorMessage}, ErrorCode: {burnResponse.ErrorCode}");
                burnResponse.ErrorMessage = _localizer["CouponsError"];
                if (burnResponse.ErrorCode == "4")
                {
                    burnResponse.ErrorMessage = _localizer["CouponBurnedBefore"];
                }
                if (burnResponse.ErrorCode == "2")
                {
                    burnResponse.ErrorMessage = _localizer["WorngCouponNumber"];
                }

                return(BadRequest(burnResponse.ErrorMessage));
            }
            _ = _ecouponsService.EBurn(new ECouponBurnRequest {
                Mobile = mobileNumber, Barcode = offerNumber
            })
                .ContinueWith(res =>
            {
                if (res.Exception != null)
                {
                    _logger.Error(res.Exception, $"Ecoupons Error: {res.Exception.Message}");
                }
                else
                {
                    _logger.Information($"Ecoupons Burn Response Message: {res.Result.Result.ResponseHeader.Message}");
                }
            });

            var user = await _userRepository.UpdatePoints(mobileNumber, 1);

            var isAdded = await _transactionRepository.AddTransaction(user, TransactionType.Burn, user.Points - 1, offerNumber, "", "");

            if (!isAdded)
            {
                _logger.Information($"Add Transaction Failed For Mobile: {user.MobileNumber}, Type: Burn, OfferNumber: {offerNumber}");
            }
            var token = _authRepository.GenerateToken(user);
            var res   = await _couponsService.GetTierOffers(user.Points, lang);

            var offers = res.Deals;

            return(Ok(new { token, burnResponse, offers }));
        }
Exemple #2
0
        public async Task AddBalance(int userId, decimal amount)
        {
            var balance = await _userRepository.GetBalance(userId) ?? 0;

            balance = balance + amount;

            using (var transaction = new BgsTransactionScope())
            {
                await _userRepository.UpdateBalance(userId, balance);

                await _transactionRepository.AddTransaction((int)TransactionType.Deposit, userId, (int)TransactionStatus.Success, DateTime.Now, amount);

                transaction.Complete();
            };
        }
        public ActionResult CouponRegister(FormViewModel model)
        {
            if (ModelState.IsValid)
            {
                Transaction transaction = new Transaction
                {
                    TransactionID     = model.GetTransactionViewModel.TransactionID,
                    CustomerID        = model.GetTransactionViewModel.CustomerID,
                    PrizeID           = model.GetTransactionViewModel.PrizeID,
                    CouponNumber      = model.GetTransactionViewModel.CouponNumber,
                    TransactionNumber = model.GetTransactionViewModel.TransactionNumber,
                    TransactionValue  = model.GetTransactionViewModel.TransactionValue,
                    TransactionDate   = model.GetTransactionViewModel.TransactionDate
                };

                couponRepository.RedeemCoupon(transaction);
                transactionRepository.AddTransaction(transaction);

                TempData["message"] = string.Format("{0} is saved", model.GetTransactionViewModel.TransactionNumber);
                return(RedirectToAction("TransactionList"));
            }
            else
            {
                return(View("CouponRegister", model));
            }
        }
Exemple #4
0
        /// <summary>
        /// Adds a transaction to the repository.
        /// </summary>
        /// <param name="amount">The amount of the transaction.</param>
        /// <param name="description">The description of the transaction.</param>
        /// <param name="category">The category that the transaction falls into.</param>
        public void AddTransaction(double amount, string description, Category category)
        {
            mLatestId++;
            var transaction = new Transaction(mLatestId, amount, category, description);

            mTransactionRepository.AddTransaction(transaction);
        }
        public async Task <IActionResult> AddTransactioin([FromBody] TransactionViewModel transactionViewModel)
        {
            User user = await userManager.GetUserAsync(HttpContext.User);

            var transaction = new Transaction
            {
                Amount    = transactionViewModel.Amount,
                Coment    = transactionViewModel.Coment,
                Categorie = categorieRepository.GetCategoryByID(transactionViewModel.Category.ID),
                User      = user,
                Date      = transactionViewModel.Date,
                IsExpense = transactionViewModel.IsExpense
            };



            var tmp = transactionRepository.AddTransaction(transaction).Result;


            return(Json(new TransactionViewModel
            {
                Amount = tmp.Amount,
                Category = new CategoryViewModel
                {
                    ID = tmp.Categorie.ID,
                    Name = tmp.Categorie.Name,
                },
                Date = tmp.Date,
                IsExpense = tmp.IsExpense,
                ID = tmp.ID,
                Coment = tmp.Coment
            }));
        }
Exemple #6
0
        public async Task AddTransaction(TransactionForAdditionDto transaction)
        {
            var transactionModelForRepo = mapper.Map <TransactionForAdditionForRepo>(transaction);

            transactionModelForRepo.Price = await getTransactionPriceOperation.Run(transaction);

            await repo.AddTransaction(transactionModelForRepo);
        }
Exemple #7
0
        public ActionResult Add(TransactionViewModel viewModel, String isPost)
        {
            var data = _autoMapper.Map <TransactionViewModel, TransactionData>(viewModel);

            _transactionRepository.AddTransaction(data);
            _transactionFileWrapper.WriteCurrentHoldings(_transactionRepository.GetCurrentHoldings());

            var viewResult = new ViewResult
            {
                ViewName = "Add"
            };

            viewResult.ViewBag.Message =
                $"{EnumParser.GetDescription(viewModel.TransactionType)} transaction for {viewModel.Code} completed";

            return(viewResult);
        }
Exemple #8
0
        public async Task <Transaction> AddTransaction(NewTransaction transaction, long userId)
        {
            var type = await transactionTypeApp.Get(transaction.TransactionTypeId);

            transaction.Amount = type.Type == "I" ? transaction.Amount : transaction.Amount * -1;
            transaction.UserId = userId;
            return(await repository.AddTransaction(transaction));
        }
        public IActionResult AddTransaction([FromBody] Transactions trans)
        {
            int res = _tranRepo.AddTransaction(trans);

            if (res != 0)
            {
                return(Ok(res));
            }
            return(Forbid());
        }
Exemple #10
0
        public void AddTransaction(string input)
        {
            var transaction = _transactionParser.Parse(input);

            _transactionRepository.AddTransaction(transaction);

            var commission = _commissionCalculator.Calc(transaction);

            if (commission != null)
            {
                _transactionRepository.AddTransaction(commission);
            }

            //if (transaction is Transfer)
            //{
            //    var commission = new Commission(transaction);
            //    _transactionRepository.AddTransaction(commission);
            //}
        }
Exemple #11
0
 public void AddTransactions(UserData userData)
 {
     if (userData != null && userData.Transactions != null)
     {
         foreach (var transaction in userData.Transactions)
         {
             _transactionRepo.AddTransaction(transaction);
         }
     }
 }
Exemple #12
0
        public int AddTransaction(Models.Transaction transactions)
        {
            _logger.Log(
                $"[TransactionService::AddTransaction] Entering method successfully",
                LogLevel.Info);

            var repositoryTransactions = Mapper.Map(transactions, new Transaction());

            return(_transactionRepository.AddTransaction(repositoryTransactions));
        }
 public void RegisterTransaction(TransactionDto transaction)
 {
     transactionsRepository.AddTransaction(new Data.Entities.TransactionEntity()
     {
         AccountId        = transaction.AccountId,
         Ammount          = transaction.Amount,
         TransactionUid   = DataHelper.GenerateUniqueId(),
         CustomerId       = transaction.CustomerId,
         TransactionsDate = transaction.TransactionDate
     });
 }
Exemple #14
0
 public void AddTransaction(string input)
 {
     try
     {
         var transaction = _transactionParser.Parse(input);
         _transactionRepository.AddTransaction(transaction);
     }
     catch (Exception e)
     {
         Console.WriteLine($"Не верно указали строку: {e.Message}");
     }
 }
Exemple #15
0
        public void AddBalance(int userId, decimal amount)
        {
            var balance = _userRepository.GetBalance(userId) ?? 0;

            balance = balance + amount;

            using (var transaction = new BgsTransactionScope())
            {
                _userRepository.UpdateBalance(userId, balance);
                _transactionRepository.AddTransaction((int)TransactionType.Deposit, userId, DateTime.Now, amount);
                transaction.Complete();
            };
        }
        public AddTransactionResponse Handle(AddTransactionRequest message)
        {
            _transactionRepository.AddTransaction(new TransactionEntity()
            {
                Amount          = message.Amount,
                Description     = message.Description,
                TransactionDate = System.DateTime.Parse(message.TransactionDate),
                Tags            = message.Tags,
                UserId          = _identity.Id
            });

            return(new AddTransactionResponse());
        }
Exemple #17
0
        public void PlaceOrder(int userId)
        {
            var balance = _userRepository.GetBalance(userId);

            var cartItems = _cartRepository.GetCartItems(userId);

            var totalAmount = cartItems.Sum(x => x.Price * x.Quantity);

            balance = balance - totalAmount;

            if (balance < 0)
            {
                throw new BgsException((int)WebApiErrorCodes.NotEnoughBalance);
            }

            using (var transaction = new BgsTransactionScope())
            {
                _userRepository.UpdateBalance(userId, balance);

                foreach (var item in cartItems)
                {
                    var blocked = (int)_productRepository.GetBlockedProductQuantity(item.ProductId);
                    _productRepository.UpdateBlockedProductQuantity(item.ProductId, blocked - item.Quantity);

                    var stock = _productRepository.GetProductStock(item.ProductId) ?? 0;

                    if ((stock - item.Quantity) < 0)
                    {
                        throw new BgsException((int)WebApiErrorCodes.OutOfStock);
                    }


                    _productRepository.UpdateProductStock(item.ProductId, stock - item.Quantity);
                }

                _transactionRepository.AddTransaction((int)TransactionType.Payment, userId, DateTime.Now, totalAmount);

                _cartRepository.DeleteCartItems(userId);

                var orderId = _orderRepository.AddOrder(userId, (int)OrderStatus.Pending, totalAmount, DateTime.Now, DateTime.Now);

                foreach (var item in cartItems)
                {
                    var amount = item.Price * item.Quantity;
                    _orderRepository.AddOrderItem(orderId, item.ProductId, item.Quantity, item.Price, amount);
                }

                transaction.Complete();
            }
        }
        public Ticket CreateTicket(TicketForCreationDto ticketInput)
        {
            double totalOdd = 1;

            foreach (var match in ticketInput.SelectedMatches)
            {
                totalOdd *= match.SelectedOddValue;
            }

            var payoutTransaction =
                _transactionRepository.AddTransaction(Transaction.TransactionType.Payout, ticketInput.Stake);

            var stakeWithHandlingCost = ticketInput.Stake - ticketInput.Stake * 0.05;

            var possiblePayout = totalOdd * stakeWithHandlingCost;

            var ticket = new Ticket
            {
                TotalOdd       = Math.Round(totalOdd, 2),
                Stake          = Math.Round(ticketInput.Stake, 2),
                PossiblePayout = Math.Round(possiblePayout, 2),
                TransactionId  = payoutTransaction.Id
            };

            var createdTicket = _ticketRepository.AddTicket(ticket);

            _transactionRepository.UpdateTicketId(payoutTransaction, ticket.Id);

            if (IsWinningTicket(ticket))
            {
                var paymentTransaction =
                    _transactionRepository.AddTransaction(Transaction.TransactionType.Payment, ticket.PossiblePayout);
                _transactionRepository.UpdateTicketId(paymentTransaction, ticket.Id);
            }

            return(createdTicket);
        }
        public async Task <BetResponseModel> Bet(int userId, decimal amount, decimal number)
        {
            var balance = await _UserRepository.GetBalance(userId);

            balance = balance - amount;

            if (balance < 0)
            {
                await _TransactionRepository.AddTransaction((int)TransactionType.Bet, userId, (int)TransactionStatus.Failed, DateTime.Now, amount);

                throw new BgsException((int)WebApiErrorCodes.NotEnoughBalance);
            }

            var     winNumber = new Random().Next(0, 36);
            decimal winAmount = 0;

            if (winNumber == number)
            {
                winAmount = amount * 36;
                balance   = balance + winAmount;
            }

            using (var transaction = new BgsTransactionScope())
            {
                await _UserRepository.UpdateBalance(userId, balance);

                await _TransactionRepository.AddTransaction((int)TransactionType.Win, userId, (int)TransactionStatus.Success, DateTime.Now, winAmount);

                transaction.Complete();
            }

            return(new BetResponseModel
            {
                WinAmount = winAmount,
                WinnerNumber = winNumber
            });
        }
        public async Task <IActionResult> Purchase(PurchaseViewModel purchaseViewModel)
        {
            if (ModelState.IsValid)
            {
                var product = _productRepository.GetProductByProductCode(
                    purchaseViewModel.Id, _userManager.GetUserId(User));

                var isAuthorized = await _authorizationService.AuthorizeAsync(
                    User, product,
                    new OperationAuthorizationRequirement
                    { Name = "Update" });

                if (!isAuthorized.Succeeded)
                {
                    return(new ChallengeResult());
                }

                product.Purchase(purchaseViewModel.Quantity);
                _productRepository.UpdateProduct(product);

                _transactionRepository.AddTransaction(new Transaction()
                {
                    ProductId         = product.Id,
                    ProductCode       = product.ProductCode,
                    Name              = product.Name,
                    Size              = product.Size,
                    DateOfTransaction = purchaseViewModel.DatePurchased,
                    TypeOfTransaction = "Purchase",
                    Quantity          = purchaseViewModel.Quantity,
                    Description       = purchaseViewModel.Description,
                    OwnerID           = _userManager.GetUserId(User)
                });

                return(RedirectToAction("Index", "Home"));
            }
            return(View(purchaseViewModel));
        }
        public async Task <IActionResult> AddTransaction(TransactionRequestViewModel transactionRequestViewModel)
        {
            try
            {
                await _transactionRepository.AddTransaction(transactionRequestViewModel.ToTransaction());
            }
            catch (Exception)
            {
                return(BadRequest(new ErrorResponseViewModel()
                {
                    Id = (int)ErrorResponseIds.InvalidTransaction, Message = "Invalid Transaction"
                }));
            }

            return(Ok(true));
        }
        public IActionResult OnPost()
        {
            if (ModelState.IsValid)
            {
                //var count = _productRepository.Add(product);
                var count = _transactionRepository.AddTransaction(transaction);

                if (count > 0)
                {
                    Message = "New Product Added Successfully !";
                    // return RedirectToPage("/Transaction/Index");
                }
            }

            return(Page());
        }
        public IActionResult CreateTransaction([FromBody] JObject value)
        {
            var amount = value["amount"].ToObject <double>();

            if (amount <= 0)
            {
                return(BadRequest());
            }

            var createdTransaction = _transactionRepository.AddTransaction(Transaction.TransactionType.Payment, amount);

            if (createdTransaction == null)
            {
                return(BadRequest());
            }

            return(Created($"transactions/create/payment/{createdTransaction.Id}",
                           _mapper.Map <CreatedPaymentTransactionDto>(createdTransaction)));
        }
        private ICollection <Transaction> AddTransaction()
        {
            ICollection <Transaction> transactions = new List <Transaction>();

            if ((User)SelectListUser.SelectedItem == null || (User)SelectListCustomer.SelectedItem == null)
            {
                MessageBox.Show("Musisz wybrać Odbiorcę i użytkownika", "Błąd", MessageBoxButton.OK,
                                MessageBoxImage.Error);
                return(null);
            }
            SetEdited(false);
            var transactionNumber = _editedMode
                ? ((Transaction)this.DataContext).TransactionNumber
                : _db.GetTransactionNumber();

            foreach (var tool in ToolsListView.ItemsSource)
            {
                var price = TransactionType == TransactionType.Return
                    ? _db.GetPriceForRent(((Tool)tool).ToolId, (DateTime)TransactionDate.SelectedDate)
                    : 0;

                if (TransactionDate.SelectedDate == null)
                {
                    continue;
                }
                var transaction = new Transaction
                {
                    TransactionId     = Guid.NewGuid(),
                    TransactionDate   = ((DateTime)TransactionDate.SelectedDate).Add(DateTime.Now.TimeOfDay),
                    TransactionType   = TransactionType,
                    TransactionNumber = transactionNumber,
                    Tool         = (Tool)tool,
                    AppUser      = (User)SelectListUser.SelectedItem,
                    Customer     = (User)SelectListCustomer.SelectedItem,
                    PriceForRent = price
                };

                _db.AddTransaction(transaction);
                transactions.Add(transaction);
            }

            return(transactions);
        }
        public void AddTransaction_productsAndType_Transaction()
        {
            var c = new List <ProductHistory>
            {
                new ProductHistory {
                    Id = 9, Name = "fef", Price = 12, Quantity = 5, TransactionId = 3
                },
                new ProductHistory {
                    Id = 10, Name = "Fsdga", Price = 51, Quantity = 5, TransactionId = 3
                },
                new ProductHistory {
                    Id = 11, Name = "Kadwcz", Price = 4, Quantity = 5, TransactionId = 3
                },
                new ProductHistory {
                    Id = 12, Name = "Srsfgba", Price = 1.25, Quantity = 10, TransactionId = 3
                }
            };
            var expected = _repo.AddTransaction(c, TransactionType.Bought);

            Assert.IsTrue(_context.Transactions.Count() == 3);
        }
Exemple #26
0
        public async Task <ActionResult <Transaction> > PostTransaction(TransactionDto transactionDto)
        {
            string  errMsg;
            int     currentMonth = DateTime.Now.Month;
            int     currentYear  = DateTime.Now.Year;
            decimal monthSum     = _transactionRepository.MonthSum(transactionDto.UserId, currentMonth, currentYear);

            if (Utils.ValidateAmount((monthSum + transactionDto.Amount), transactionDto.Currency))
            {
                Transaction transaction = _mapper.Map <Transaction>(transactionDto);
                transaction.Date = DateTime.Now;
                _transactionRepository.AddTransaction(transaction);
                await _transactionRepository.SaveChangesAsync();

                return(CreatedAtAction("PostTransaction", new { id = transaction.UserId }, new { result = transaction.Amount.ToString() + " / " + transaction.ChangeRate.ToString() + " " + transaction.Currency }));
            }
            else
            {
                errMsg = "Sobrepasa el limite admitido";
            }
            return(BadRequest(errMsg));
        }
Exemple #27
0
        public async Task <IActionResult> AddTransaction(TransactionViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(StatusCode(StatusCodes.Status400BadRequest,
                                  new Response {
                    Status = "Error", Message = "fill all fields"
                }));
            }

            var claimsIdentity = User.Identity as ClaimsIdentity;
            var userId         = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;

            var transaction = _transactionRepository.AddTransaction(new Transaction {
                ServiceId = model.ServiceId, Cost = model.Cost, ApplicationUserId = userId
            });

            if (await _transactionRepository.SaveChangesAsync())
            {
                var service = await _serviceRepository.FetchService(model.ServiceId);

                var network = _userNetworkRepository.GetUserNetwork(userId);

                _commissionRepository.AddCommision(new Commission {
                    ApplicationUserId = network == null?userId:network.Network.ApplicationUserId, Amount = service.CommissionPercentage * model.Cost, TransactionId = transaction.Id
                });
                if (await _commissionRepository.SaveChangesAsync())
                {
                    return(Ok(new Response {
                        Status = "success", Message = "Saved successfully"
                    }));
                }
            }

            return(StatusCode(StatusCodes.Status500InternalServerError));
        }
Exemple #28
0
 public IActionResult BuyProducts([FromBody] List <Product> products)
 {
     _lastTransaction = _transactionRepository.AddTransaction(ProductWrapper.productHistories(products), TransactionType.Bought);
     _productRepository.AddProducts(products);
     return(Ok());
 }
        public IActionResult Post(Transaction transaction)
        {
            var result = _transaction.AddTransaction(transaction);

            return(Ok(result));
        }
Exemple #30
0
 public void Post([FromBody] Transaction transaction)
 {
     Repository.AddTransaction(transaction);
 }