예제 #1
0
 public void LoadScreen(PaymentListModel paymentModel)
 {
     Number     = System.Text.RegularExpressions.Regex.Replace(paymentModel.CARD_NUMBER.ToString(), ".{4}", "$0-").Remove(19);
     Expdate    = System.Text.RegularExpressions.Regex.Replace(paymentModel.CARD_EXP_DATE, ".{2}", "$0/");
     Chname     = paymentModel.CARD_HOLDER_NAME;
     IsSaveCard = paymentModel.CARD_DEFAULT == null ? true : false;
 }
예제 #2
0
        public async Task <string> SaveCardAsync(PaymentListModel paymentListModel)
        {
            var     uri     = new Uri(string.Format(Constants.BaseUrl + "payment/add", string.Empty));
            JObject jObject = new JObject();

            jObject.Add("USER_ID", Application.Current.Properties["USER_ID"].ToString());
            jObject.Add("CARD_EXP_DATE", paymentListModel.CARD_EXP_DATE);
            jObject.Add("CARD_HOLDER_NAME", paymentListModel.CARD_HOLDER_NAME);
            jObject.Add("CARD_NUMBER", paymentListModel.CARD_NUMBER.ToString());
            jObject.Add("CARD_TYPE", paymentListModel.CARD_TYPE);

            var json    = JsonConvert.SerializeObject(jObject);
            var content = new StringContent(json, Encoding.UTF8, "application/json");
            var client  = new HttpClient();
            HttpResponseMessage response = null;

            response = await client.PostAsync(uri, content);

            var contents = await response.Content.ReadAsStringAsync();

            JObject jwtDynamic  = JsonConvert.DeserializeObject <dynamic>(contents);
            var     accessToken = jwtDynamic.Value <string>("Message");

            if (response.IsSuccessStatusCode)
            {
                Debug.WriteLine(@"\tTodoItem successfully saved.");
            }
            return(contents);
        }
예제 #3
0
        public ActionResult Payment()
        {
            var model = new PaymentListModel();


            return(View(model));
        }
예제 #4
0
        public async Task RequestAdvanceOnceTest()
        {
            //load the context
            await GetAdvancePaymentRequestDetailsTest();

            var registeredCustomer = await DbContext.Customers.FirstOrDefaultAsync();

            var waiToken = registeredCustomer.MapToWhoAmI().EncryptToken();

            PaymentController controller = new PaymentController(DbContext, FakeAcquirer, FakeAccount, FakeLogger);

            var paymentListModel = new PaymentListModel()
            {
                AuthToken = waiToken
            };

            var seccondPaymentForAdvance = new AdvanceListModel()
            {
                AuthToken = waiToken,
                Payments  = new[] { (await controller.ListAvailableForAdvance(paymentListModel)).Payments.ToList()[0] }.Select(q => q.Id)
            };

            var adv2 = await controller.RequestForAdvance(seccondPaymentForAdvance);

            Assert.IsType <AdvanceErrorJson>(adv2);
        }
예제 #5
0
        public async Task <PaymentListJson> ListAvailableForAdvance([FromQuery] PaymentListModel model)
        {
            var wai = await _accountApi.WhoAmI(model.AuthToken);

            var paymentQuery = _context.Payments
                               .WhereDateFrom(model.StartDate)
                               .WhereDateUntil(model.EndDate)
                               .WherePayerName(model.CardName)
                               .WherePaidDateFrom(model.StartPaidDate)
                               .WherePaidDateFrom(model.EndPaidDate)
                               .WhereStatus(model.Status)
                               .Where(q => q.AdvanceId == null && q.CustomerId == wai.CustomerId);

            paymentQuery = paymentQuery
                           .OrderByDescending(q => q.CreatedAt).AsQueryable();

            if (model.Index.HasValue)
            {
                paymentQuery = paymentQuery.Skip(model.Index.Value);
            }

            if (model.Length.HasValue)
            {
                paymentQuery = paymentQuery.Take(model.Length.Value);
            }

            var payments = await paymentQuery.ToListAsync();

            //var periodAmount = await paymentQuery.SumAsync(payment => payment.Amount);
            var count = await paymentQuery.LongCountAsync();

            return(new PaymentListJson(payments, count));
        }
 private void UpdatePaymentListFromModel(PaymentList target, PaymentListModel source)
 {
     target.DateOfPayment = source.DateOfPayment.UtcDateTime;
     target.BankAccountId = source.BankAccountId;
     target.CashAccountId = source.CashAccountId;
     target.ChequeNo      = source.ChequeNo;
     target.Narration     = source.Narration;
     target.PaymentId     = source.PaymentId;
     target.PaymentTypeId = source.PaymentTypeId;
     target.Amount        = Convert.ToDecimal(string.IsNullOrEmpty(source.Amount) ? "0" : source.Amount);
     target.PDC           = source.PDC;
 }
예제 #7
0
        public async Task CheckAvailablePaymentsTest()
        {
            var customer = new CustomerModel()
            {
                Name  = "Olavo Neto",
                Email = "*****@*****.**",
            };

            var registeredCustomer = await DbContext.Customers.FirstOrDefaultAsync();

            var waiToken = registeredCustomer.MapToWhoAmI().EncryptToken();

            customer.Id = registeredCustomer.Id;

            var paymentModel = new PaymentModel()
            {
                Customer           = customer,
                Amount             = 100,
                InstalmentsCount   = 5,
                CardNumber         = "5555111122223333",
                CardExpirationDate = "08/2021",
                CardName           = "OLAVO DE SOUZA ROCHA NETO",
                CardSecurityNumber = "558",
                AuthToken          = waiToken
            };
            var before = DateTime.Now;

            var paymentModel2 = new PaymentModel()
            {
                Customer           = customer,
                Amount             = 150,
                InstalmentsCount   = 5,
                CardNumber         = "5555111122223333",
                CardExpirationDate = "08/2021",
                CardName           = "OLAVO DE SOUZA ROCHA NETO",
                CardSecurityNumber = "558",
                AuthToken          = waiToken
            };

            PaymentController controller = new PaymentController(DbContext, FakeAcquirer, FakeAccount, FakeLogger);
            var cResponse1 = await controller.ProcessPayment(paymentModel);

            var cResponse2 = await controller.ProcessPayment(paymentModel2);

            var paymentListModel = new PaymentListModel()
            {
                AuthToken = waiToken
            };
            var cResponse3 = await controller.ListAvailableForAdvance(paymentListModel);

            Assert.Equal(2, cResponse3.Count);
        }
 public EditPaymentPop(PaymentListModel selectedItem)
 {
     InitializeComponent();
     UserId                  = Application.Current.Properties["USER_ID"].ToString();
     paymentListModel        = selectedItem;
     this.BindingContext     = new PaymentViewModel();
     pickerMonth.ItemsSource = new List <string>
     {
         "01", "02", "03", "04", "05", "06", "06", "07", "08", "09", "10", "11", "12"
     };
     pickerYear.ItemsSource = new List <string>
     {
         "2019", "2020", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030"
     };
 }
예제 #9
0
 public void LoadCardsOnPopup(PaymentListModel paymentListModel)
 {
     Number        = (paymentListModel.CARD_NUMBER ?? "").ToString();
     Chname        = paymentListModel.CARD_HOLDER_NAME;
     SelectedMonth = paymentListModel.CARD_EXP_DATE;
     if (!(SelectedMonth == null))
     {
         SelectedMonth = SelectedMonth.Substring(0, 2);
     }
     SelectedYear = paymentListModel.CARD_EXP_DATE;
     if (!(SelectedYear == null))
     {
         SelectedYear = "20" + SelectedYear.Substring(2, 2);
     }
 }
예제 #10
0
        public IActionResult All()
        {
            PaymentListModel model = new PaymentListModel()
            {
                Payments = _payments.GetAll().Select(t => new PaymentItemModel()
                {
                    TenantId   = t.Tenant.Id,
                    TenantName = t.Tenant.FullName,
                    Amount     = t.Amount,
                    Date       = t.Date.ToString("dd/MM/yyyy")
                })
            };

            return(View(model));
        }
예제 #11
0
        //[CheckSession(SubActId = 8)]
        public virtual ActionResult PaymentList(DataSourceRequest command, PaymentListModel model)
        {
            if (model.Customer_ID == 0 && string.IsNullOrEmpty(model.PreInvoiceNumber) && string.IsNullOrEmpty(model.PaymentDate) && model.PaymentAmount == 0 && string.IsNullOrEmpty(model.Description))
            {
                var hardwareItems = _accService.GetAllPayment();
                var gridModel     = new DataSourceResult
                {
                    Data = hardwareItems.Select(x => new PaymentModel
                    {
                        PaymentAmount    = x.PaymentAmount,
                        PaymentDate      = x.PaymentDate,
                        Payment_ID       = x.Payment_ID,
                        Customer_ID      = x.Customer_ID,
                        PreInvoiceNumber = x.PreInvoiceNumber,
                        Description      = x.Description,
                        CustomerName     = _customerService.GetCustomerById(x.Customer_ID).CustomerName
                    }),
                    Total = hardwareItems.Count()
                };

                return(Json(gridModel));
            }
            else
            {
                var hardwareItems = _accService.SearchPayment(model.Customer_ID, model.PreInvoiceNumber, model.PaymentDate, model.PaymentAmount, model.Description);
                var gridModel     = new DataSourceResult
                {
                    Data = hardwareItems.Select(x => new PaymentModel
                    {
                        PaymentAmount    = x.PaymentAmount,
                        PaymentDate      = x.PaymentDate,
                        Payment_ID       = x.Payment_ID,
                        Customer_ID      = x.Customer_ID,
                        PreInvoiceNumber = x.PreInvoiceNumber,
                        Description      = x.Description,
                        CustomerName     = _customerService.GetCustomerById(x.Customer_ID).CustomerName
                    }),
                    Total = hardwareItems.Count()
                };

                return(Json(gridModel));
            }
        }
예제 #12
0
        public ActionResult SubmitPayment(DataSourceRequest command, PaymentListModel model)
        {
            HttpSessionStateBase session = HttpContext.Session;

            try
            {
                Tbl_Payment tu = new Tbl_Payment();
                tu.Customer_ID      = model.Customer_ID;
                tu.Description      = model.Description;
                tu.PaymentAmount    = model.PaymentAmount;
                tu.PaymentDate      = model.PaymentDate;
                tu.Payment_ID       = model.Payment_ID;
                tu.PreInvoiceNumber = model.PreInvoiceNumber;


                tu.LastUpdateUser_ID = Convert.ToInt32(session["UserID"]);
                tu.LastUpdateDate    = DateTime.Now.ToString("yyyy-MM-dd");
                tu.LastUpdateTime    = DateTime.Now.ToString("HH:mm");

                if (_accService.AddNewPayment(tu))
                {
                    var gridModel = new DataSourceResult
                    {
                        ExtraData = new PaymentModel
                        {
                            Message      = Message.OperationSuccessful,
                            MessageColor = "green"
                        },
                        Total = 1
                    };
                    return(Json(gridModel));
                }
                else
                {
                    var gridModel = new DataSourceResult
                    {
                        ExtraData = new PaymentModel
                        {
                            Message      = Message.OperationUnsuccessful,
                            MessageColor = "red"
                        },
                        Total = 1
                    };
                    return(Json(gridModel));
                }
            }
            catch (Exception ex)
            {
                var gridModel = new DataSourceResult
                {
                    ExtraData = new PaymentModel
                    {
                        Message      = Message.OperationUnsuccessful,
                        MessageColor = "red"
                    },
                    Total = 1
                };
                return(Json(gridModel));
            }
            //return "";
        }
예제 #13
0
        public async Task GetAdvancePaymentRequestDetailsTest()
        {
            #region ContextSetup

            var dbContext = DbContext;

            var registeredCustomer = await dbContext.Customers.FirstOrDefaultAsync();

            var waiToken      = registeredCustomer.MapToWhoAmI().EncryptToken();
            var customerModel = new CustomerModel()
            {
                Id = registeredCustomer.Id, Name = registeredCustomer.Name, Email = registeredCustomer.Email
            };
            var paymentModel = new PaymentModel()
            {
                Customer           = customerModel,
                Amount             = 100,
                InstalmentsCount   = 5,
                CardNumber         = "5555111122223333",
                CardExpirationDate = "08/2021",
                CardName           = "OLAVO DE SOUZA ROCHA NETO",
                CardSecurityNumber = "558",
                AuthToken          = waiToken
            };
            var before = DateTime.Now;

            var paymentModel2 = new PaymentModel()
            {
                Customer           = customerModel,
                Amount             = 150,
                InstalmentsCount   = 5,
                CardNumber         = "5555111122223333",
                CardExpirationDate = "08/2021",
                CardName           = "OLAVO DE SOUZA ROCHA NETO",
                CardSecurityNumber = "558",
                AuthToken          = waiToken
            };

            PaymentController controller = new PaymentController(dbContext, FakeAcquirer, FakeAccount, FakeLogger);
            await controller.ProcessPayment(paymentModel);

            await controller.ProcessPayment(paymentModel2);

            var paymentListModel = new PaymentListModel()
            {
                AuthToken = waiToken
            };
            var firstPaymentForAdvance =
                new AdvanceListModel()
            {
                AuthToken = waiToken,
                Payments  = new[] { (await controller.ListAvailableForAdvance(paymentListModel)).Payments.First() }.Select(q => q.Id)
            };

            var adv = await controller.RequestForAdvance(firstPaymentForAdvance);

            #endregion

            var adModel = new AdvanceDetailsModel()
            {
                AuthToken = waiToken,
                Id        = adv.Id
            };
            var radv = await controller.GetAdvanceDetails(adModel);

            Assert.Equal(radv.Id, adModel.Id);
            Assert.Single(radv.Payments);

            var percentTax = 0.038m;
            var instalment = decimal.Divide(150, 5);
            Assert.Equal(150m - 0.9m - (1m * percentTax) * instalment - (2m * percentTax) * instalment - (3m * percentTax) * instalment - (4m * percentTax) * instalment - (5m * percentTax) * instalment, adv.NetAmount);
        }
예제 #14
0
        public async Task RequestForAdvancePaymentTest()
        {
            var customer = new CustomerModel()
            {
                Name  = "Olavo Neto",
                Email = "*****@*****.**",
            };

            var registeredCustomer = await DbContext.Customers.FirstOrDefaultAsync();

            var waiToken = registeredCustomer.MapToWhoAmI().EncryptToken();

            customer.Id = registeredCustomer.Id;

            var paymentModel = new PaymentModel()
            {
                Customer           = customer,
                Amount             = 100,
                InstalmentsCount   = 5,
                CardNumber         = "5555111122223333",
                CardExpirationDate = "08/2021",
                CardName           = "OLAVO DE SOUZA ROCHA NETO",
                CardSecurityNumber = "558",
                AuthToken          = waiToken
            };
            var before = DateTime.Now;

            var paymentModel2 = new PaymentModel()
            {
                Customer           = customer,
                Amount             = 150,
                InstalmentsCount   = 5,
                CardNumber         = "5555111122223333",
                CardExpirationDate = "08/2021",
                CardName           = "OLAVO DE SOUZA ROCHA NETO",
                CardSecurityNumber = "558",
                AuthToken          = waiToken
            };

            PaymentController controller = new PaymentController(DbContext, FakeAcquirer, FakeAccount, FakeLogger);
            await controller.ProcessPayment(paymentModel);

            await controller.ProcessPayment(paymentModel2);

            var paymentListModel = new PaymentListModel()
            {
                AuthToken = waiToken
            };
            var firstPaymentForAdvance =
                new AdvanceListModel()
            {
                AuthToken = waiToken,
                Payments  = new[] { (await controller.ListAvailableForAdvance(paymentListModel)).Payments.First() }.Select(q => q.Id)
            };

            var adv = await controller.RequestForAdvance(firstPaymentForAdvance);

            Assert.Equal(150, adv.GrossAmount);
            var percentTax = 0.038m;
            var instalment = decimal.Divide(150, 5);

            Assert.Equal(150m - 0.9m - (1m * percentTax) * instalment - (2m * percentTax) * instalment - (3m * percentTax) * instalment - (4m * percentTax) * instalment - (5m * percentTax) * instalment, adv.NetAmount);
        }