public void All_ItShouldReturnTheListOfBills()
        {
            var list = RecurringBill.All();

            Assert.AreEqual("rbill-1", list[0].Id);
            Assert.AreEqual("rbill-2", list[1].Id);
        }
        public void Retrieve_ItShouldReturnASingleBill()
        {
            var obj = RecurringBill.With(presetName).Retrieve("rbill-1");

            Assert.AreEqual("rbill-1", obj.Id);
            Assert.AreEqual(presetName, obj.PresetName);
        }
Пример #3
0
        private DateTime?CalculateNextOccurenceDate(RecurringBill rb)
        {
            if (DateTime.Compare(DateTime.Now, rb.StartDate) <= 0)
            {
                return(rb.StartDate);
            }
            else
            {
                if (rb.LastOccurenceDate == null)
                {
                    rb.LastOccurenceDate = DateTime.Now.AddHours(-1);
                }

                //We assume that there was at least one occurence, so LastOccurenceDate is not null
                int weekDaysNumber = 7;
                int numberOfDaysToAdd = 0, numberOfWeeksToAdd = 0, numberOfMonthsToAdd = 0;
                switch (rb.Frequency)
                {
                case Helpers.Frequency.EveryDay:
                    numberOfDaysToAdd = 1;
                    break;

                case Helpers.Frequency.EveryWeek:
                    numberOfWeeksToAdd = 1;
                    break;

                case Helpers.Frequency.Every2Weeks:
                    numberOfWeeksToAdd = 2;
                    break;

                case Helpers.Frequency.Every3Weeks:
                    numberOfWeeksToAdd = 3;
                    break;

                case Helpers.Frequency.EveryMonth:
                    numberOfMonthsToAdd = 1;
                    break;

                case Helpers.Frequency.Every2Months:
                    numberOfMonthsToAdd = 2;
                    break;

                case Helpers.Frequency.Every3Months:
                    numberOfMonthsToAdd = 3;
                    break;

                case Helpers.Frequency.Every6Months:
                    numberOfMonthsToAdd = 6;
                    break;

                case Helpers.Frequency.EveryYear:
                    numberOfMonthsToAdd = 12;
                    break;
                }
                DateTime nextOccurenceDate = rb.LastOccurenceDate.Value.AddDays(numberOfDaysToAdd + weekDaysNumber * numberOfWeeksToAdd).AddMonths(numberOfMonthsToAdd);
                return((DateTime.Compare(nextOccurenceDate, rb.ExpirationDate) <= 0) ? (DateTime?)nextOccurenceDate : null);
            }
        }
        public void Create_ItShouldCreateABill()
        {
            var obj = RecurringBill.Create(
                groupId: "cld-3",
                priceCents: 1500,
                description: "Some Bill"
                );

            Assert.IsNotNull(obj.Id);
            Assert.IsNotNull(obj.CreatedAt);
        }
        public void Create_ItShouldCreateABill()
        {
            var obj = RecurringBill.With(presetName).Create(
                groupId: "cld-3",
                priceCents: 1500,
                description: "Some Bill"
                );

            Assert.IsNotNull(obj.Id);
            Assert.IsNotNull(obj.CreatedAt);
            Assert.AreEqual(presetName, obj.PresetName);
        }
        public void Cancel_ItShouldCancelABill()
        {
            var obj = RecurringBill.Create(
                groupId: "cld-3",
                priceCents: 1500,
                description: "Some Bill"
                );
            var updatedAt = obj.UpdatedAt;

            obj.Cancel();
            Assert.AreEqual("cancelled", obj.Status);
            Assert.IsTrue(obj.UpdatedAt.HasValue);
        }
Пример #7
0
        /// <summary>
        /// Perform a new RecurringBilling.
        ///
        /// <param name="recurringBill">
        /// RecurringBill object.
        /// </param>
        /// <returns>
        /// RecurringBillingInformation object.
        /// </returns>
        /// <seealso cref="PayHubWS.com.payhub.ws.api.RecurringBillingInformation"/>
        /// </summary>
        public RecurringBillInformation doRecurringBill(RecurringBill recurringBill)
        {
            recurringBill.Merchant = _merchant;
            recurringBill._url     = _url;
            var    request = setHeadersPost(recurringBill._url, this._oauthToken);
            string json    = JsonConvert.SerializeObject(recurringBill, Formatting.None, new JsonSerializerSettings {
                DefaultValueHandling = DefaultValueHandling.Ignore
            });
            RecurringBillInformation response = recurringBill.PerformRecurringBill(json, request);

            response.transactionManager = this;
            return(response);
        }
Пример #8
0
        public void doRecurringBilling()
        {
            string             url   = "https://staging-api.payhub.com/api/v2/";
            string             oauth = "107d74ab-4a18-4713-88ff-69bd05710086";
            ScheduleSartAndEnd scheduleSartAndEnd = new ScheduleSartAndEnd();

            scheduleSartAndEnd.Start_date    = Convert.ToDateTime("2015-07-08");
            scheduleSartAndEnd.End_date      = Convert.ToDateTime("2016-07-08");
            scheduleSartAndEnd.end_date_type = "O";
            MontlySchedule montlySchedule = new MontlySchedule();

            montlySchedule.Monthly_type = "E";
            List <int> m = new List <int>();

            m.Add(15);
            montlySchedule.Monthly_each_days = m;
            Schedule schedule = new Schedule(scheduleSartAndEnd, montlySchedule);

            schedule.Schedule_type            = "M";
            schedule.Bill_generation_interval = 1;
            Merchant merchant = new Merchant();

            merchant.organization_id = 10127;
            merchant.terminal_id     = 215;
            Bill bill = new Bill();

            bill.Base_amount = (decimal)19.99m;
            CardData card_data = new CardData();

            card_data.card_number      = "4012881888818888";
            card_data.card_expiry_date = "202012"; //September 2018
            card_data.billing_zip      = "60527";
            Customer customer = new Customer();

            customer.first_name   = "Joe";
            customer.last_name    = "Tester";
            customer.phone_number = "844-217-1631";
            customer.phone_type   = "W";
            RecurringBill recurringBill = new RecurringBill(merchant, card_data, customer, schedule, bill);

            recurringBill.Merchant  = merchant;
            recurringBill.Card_data = card_data;
            recurringBill.Customer  = customer;
            recurringBill.Schedule  = schedule;
            recurringBill.Bill      = bill;
            TransactionManager       transaction = new TransactionManager(url, oauth, merchant);
            RecurringBillInformation response    = transaction.doRecurringBill(recurringBill);

            Console.Write(response.rowData);
        }
Пример #9
0
        public IActionResult NewRecurringBill([Bind("Subject, Value, Frequency, ExpenseCategory, StartDate, ExpirationDate, GroupId, ParticipantIds")] BillingViewModel rbcvm)
        {
            if (ModelState.IsValid)
            {
                var newRecurringBill = new RecurringBill
                {
                    Id              = rbcvm.Id,
                    CreationDate    = DateTime.Now,
                    ExpenseCategory = rbcvm.ExpenseCategory,
                    ExpirationDate  = rbcvm.ExpirationDate,
                    Frequency       = rbcvm.Frequency,
                    StartDate       = rbcvm.StartDate,
                    Subject         = rbcvm.Subject,
                    Value           = rbcvm.Value
                };

                _context.RecurringBills.Add(newRecurringBill);
                _context.SaveChanges();

                var currentUserId = 1;

                var billAssignments = new List <RecurringBillPerTeamMember>()
                {
                    new RecurringBillPerTeamMember
                    {
                        TeamId          = rbcvm.GroupId,
                        RecurringBillId = newRecurringBill.Id,
                        UserId          = currentUserId
                    }
                };

                foreach (var participantId in rbcvm.ParticipantIds)
                {
                    billAssignments.Add(new RecurringBillPerTeamMember
                    {
                        TeamId          = rbcvm.GroupId,
                        RecurringBillId = newRecurringBill.Id,
                        UserId          = participantId
                    });
                }

                _context.RecurringBillAssignments.AddRange(billAssignments);
                _context.SaveChanges();
                //TODO: change for the currentUserId
                return(RedirectToAction("Index", "BudgetManager", null));
            }
            return(PartialView("_newRecurringBillPartial", rbcvm));
        }
Пример #10
0
        private static RecurringBill [] InitializeRecurringBills(FlatmateContext context)
        {
            var RBs = new RecurringBill[]
            {
                new RecurringBill
                {
                    CreationDate      = DateTime.Now,
                    ExpenseCategory   = Helpers.ExpenseCategory.Bill,
                    ExpirationDate    = DateTime.Parse("06/05/2021"),
                    Frequency         = Helpers.Frequency.Every2Months,
                    LastOccurenceDate = DateTime.Parse("06/07/2019"),
                    StartDate         = DateTime.Parse("06/05/2018"),
                    Subject           = "Miesięczne opłaty",
                    Value             = 295.0
                },
                new RecurringBill
                {
                    CreationDate      = DateTime.Now,
                    ExpenseCategory   = Helpers.ExpenseCategory.Bill,
                    ExpirationDate    = DateTime.Parse("11/07/2020"),
                    Frequency         = Helpers.Frequency.EveryMonth,
                    LastOccurenceDate = DateTime.Parse("11/08/2019"),
                    StartDate         = DateTime.Parse("11/07/2018"),
                    Subject           = "Internet",
                    Value             = 125.0
                }
            };

            foreach (RecurringBill rb in RBs)
            {
                context.RecurringBills.Add(rb);
            }
            context.SaveChanges();

            return(RBs);
        }
        public void Retrieve_ItShouldReturnASingleBill()
        {
            var obj = RecurringBill.Retrieve("rbill-1");

            Assert.AreEqual("rbill-1", obj.Id);
        }