예제 #1
0
 public async Task <IActionResult> RunCustTransaction(CustomerTransactionModel model)
 {
     try
     {
         Response response = new Response();
         if (model.customer == null)
         {
             string msg = "customer info is required to save cc info.";
             return(BadRequest(msg));
         }
         // test salesOrder object
         SalesOrder salesOrder = new SalesOrder();
         salesOrder.CustomerId       = "409";
         salesOrder.Amount           = 20;
         salesOrder.SalesOrderNumber = "so89899865";
         model.salesOrder            = salesOrder;
         // test invoice object
         Invoice invoice = new Invoice();
         invoice.AmountDue     = 200;
         invoice.CustomerId    = "409";
         invoice.InvoiceNumber = "1286";
         model.invoice         = invoice;
         TransactionDetail details = new TransactionDetail();
         details.Amount      = 2;
         details.Description = "Example QuickSale";
         model.isOrder       = false;
         details.Invoice     = "1286";
         details.OrderID     = "so89899865";
         model.customerTransaction.Details         = details;
         model.customerTransaction.Software        = ".NetApi";
         model.customerTransaction.CustReceipt     = true;
         model.customerTransaction.CustReceiptName = "Aaadam Smith";
         model.customerTransaction.Command         = "AuthOnly";
         model.customerTransaction.Software        = model.customer?.SoftwareId;
         // test PaymentMethodProfile object
         PaymentMethodProfile payMethod = new PaymentMethodProfile();
         payMethod.CardExpiration   = "0922";
         payMethod.CardNumber       = "4000100511112229";
         payMethod.AvsStreet        = "123 Main st.";
         payMethod.AvsZip           = "90046";
         payMethod.CardCode         = "999";
         payMethod.MethodName       = "My Visa";
         model.paymentMethodProfile = payMethod;
         response = await new TransactionManager().SaveCustTransaction(model);
         return(Ok(response));
     }
     catch (Exception ex)
     {
         return(BadRequest(ex.Message));
     }
 }
        public async Task <ActionResult> GetStatementAsync(long id)
        {
            try
            {
                var Customer = await _customerRepo.GetById(id).ConfigureAwait(false) ?? throw new CustomerNotFoundException();

                var CustomerName = Customer.FullName;
                var vm           = new List <CustomerTransactionModel>();
                var Transactions = await _transactionRepo.GetAllTransactionOfCustomer(id);

                foreach (var t in Transactions)
                {
                    var tt = new CustomerTransactionModel()
                    {
                        TransactionDate = t.TransactionDate,
                        Amount          = t.Amount,
                        AmountType      = t.AmountType,
                        TransactionId   = t.Id,
                        Type            = t.Type,
                        BalanceAmount   = 0,
                        BalanceType     = ""
                    };

                    vm.Add(tt);
                }
                var CustomerStatementModelsWithBalance = new List <CustomerTransactionModel>();
                for (int i = 0; i < vm.Count; i++)
                {
                    var     CurrentData     = vm[i];
                    var     CurrentIndex    = i;
                    int     PreviousIndex   = CurrentIndex - 1;
                    decimal PreviousBalance = 0;

                    var StatementModel = new CustomerTransactionModel()
                    {
                        TransactionId   = CurrentData.TransactionId,
                        Amount          = CurrentData.Amount,
                        TransactionDate = CurrentData.TransactionDate,
                        Type            = CurrentData.Type,
                        AmountType      = CurrentData.AmountType
                    };
                    if (i > 0)
                    {
                        PreviousBalance = CustomerStatementModelsWithBalance[PreviousIndex].BalanceAmount;
                    }

                    var BalanceAmount = StatementModel.AmountType == CustomerTransaction.TypeDebit
                        ? PreviousBalance + StatementModel.Amount
                        : PreviousBalance - StatementModel.Amount;
                    StatementModel.BalanceType   = BalanceAmount < 0 ? "" : "(Due)";
                    StatementModel.BalanceAmount = Math.Abs(BalanceAmount);

                    CustomerStatementModelsWithBalance.Add(StatementModel);
                }
                vm = CustomerStatementModelsWithBalance;

                return(Ok(vm));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public async Task <IActionResult> Index(long customerId = 0)
        {
            CustomerTransactionViewModel vm = new CustomerTransactionViewModel
            {
                CustomerId = customerId,
                customers  = await _customerRepo.GetAllAsync()
            };

            if (customerId > 0)
            {
                var Customer = await _customerRepo.GetById(customerId).ConfigureAwait(false);

                vm.CustomerName = Customer.FullName;

                var Transactions = await _transactionRepo.GetAllTransactionOfCustomer(customerId).ConfigureAwait(false);

                foreach (var t in Transactions)
                {
                    var tt = new CustomerTransactionModel()
                    {
                        TransactionDate = t.TransactionDate,
                        Amount          = t.Amount,
                        AmountType      = t.AmountType,
                        TransactionId   = t.Id,
                        Type            = t.Type,
                        BalanceAmount   = 0,
                        BalanceType     = ""
                    };

                    vm.Transactions.Add(tt);
                }
                var CustomerStatementModelsWithBalance = new List <CustomerTransactionModel>();
                for (int i = 0; i < vm.Transactions.Count; i++)
                {
                    var     CurrentData     = vm.Transactions[i];
                    var     CurrentIndex    = i;
                    int     PreviousIndex   = CurrentIndex - 1;
                    decimal PreviousBalance = 0;

                    var StatementModel = new CustomerTransactionModel()
                    {
                        TransactionId   = CurrentData.TransactionId,
                        Amount          = CurrentData.Amount,
                        TransactionDate = CurrentData.TransactionDate,
                        Type            = CurrentData.Type,
                        AmountType      = CurrentData.AmountType
                    };
                    if (i > 0)
                    {
                        PreviousBalance = CustomerStatementModelsWithBalance[PreviousIndex].BalanceAmount;
                    }

                    var BalanceAmount = StatementModel.AmountType == CustomerTransaction.TypeDebit
                        ? PreviousBalance + StatementModel.Amount
                        : PreviousBalance - StatementModel.Amount;
                    StatementModel.BalanceType   = BalanceAmount < 0 ? "" : "(Due)";
                    StatementModel.BalanceAmount = Math.Abs(BalanceAmount);

                    CustomerStatementModelsWithBalance.Add(StatementModel);
                }
                vm.Transactions = CustomerStatementModelsWithBalance;
            }
            return(View(vm));
        }