public static ApiCustomContact CreateContact(int?collectionPlanId = null, bool paid = true, decimal credits = 0, PaymentMethod paymentMethod = PaymentMethod.CreditCard, Currency paymentCurrency = Currency.Usd, int?lastMasterId = null)
        {
            var result = new ApiCustomContact()
            {
                Id = 1,
                CollectionPlanId           = collectionPlanId,
                HasPaidHealingTechnologies = paid,
                AccountCredits             = credits,
                RecurringPaymentMethod     = paymentMethod,
                RecurringPaymentCurrency   = paymentCurrency,
                RecurringLastMasterId      = lastMasterId
            };

            result.ClearChanges();
            return(result);
        }
Esempio n. 2
0
        /// <summary>
        /// Returns the list of products to settle due payments.
        /// </summary>
        /// <param name="contact">The contact to create the bill for.</param>
        /// <param name="planList">The list of due payment plans.</param>
        /// <param name="currentDate">The current date, ensuring all calculations are done using the exact same date.</param>
        /// <param name="deduct">An amount to deduct from the order, such as account credits.</param>
        /// <returns>The list of products to pay.</returns>
        public IList <ProcessOrderProduct> GetBillProducts(ApiCustomContact contact, IEnumerable <ApiPaymentPlan> planList, DateTimeOffset currentDate)
        {
            contact.CheckNotNull(nameof(contact));
            planList.CheckNotNull(nameof(planList));

            var products = new List <ProcessOrderProduct>();

            // Don't bill trials until something has been paid.
            foreach (var plan in planList.Where(x => contact.HasPaidHealingTechnologies == true || x.PeriodUnit != PaymentPeriodUnit.MonthPostpaidTrial))
            {
                //var isTrialExpired = ((currentDate - (plan.StartDate ?? plan.DateAdded!.Value)).TotalDays > (plan.PeriodQty ?? _config.Value.DefaultTrialDays))
                var qty = CalcPeriodQty(plan, currentDate);

                if (qty > 0)
                {
                    // Apply TransactionsLeft.
                    //var maxQty = plan.TransactionsLeft ?? (plan.PeriodUnit == PaymentPeriodUnit.MonthPostpaid || plan.PeriodUnit == PaymentPeriodUnit.MonthPostpaidTrial ? (int?)null : 1);
                    //if (maxQty != null && qty > maxQty)
                    //{
                    //    qty = maxQty.Value;
                    //}

                    // Add product to cart.
                    var product = new ProcessOrderProduct(plan.ProductName ?? string.Empty);
                    if ((qty % 1) == 0)
                    {
                        product.Quantity = (int)qty;
                        product.Price    = plan.PricePerPeriod ?? 0;
                    }
                    else
                    {
                        product.Quantity = 1;
                        product.Price    = Math.Round((plan.PricePerPeriod ?? 0) * qty, 2);
                    }
                    products.Add(product);
                }
            }

            return(products.GroupDuplicates());
        }
Esempio n. 3
0
        public Task <ApplicationUser> FindByEmailAsync(string normalizedEmail, CancellationToken cancellationToken)
        {
            ApplicationUser  applicationUser = new ApplicationUser();
            ApiCustomContact customer        = _ontraportContacts.SelectAsync(normalizedEmail).Result;

            if (customer != null)
            {
                if (customer.Data.Count() > 0)
                {
                    if (customer.Email.ToUpper() == normalizedEmail)
                    {
                        applicationUser.UserName     = customer.Email;
                        applicationUser.Email        = customer.Email;
                        applicationUser.PasswordHash = customer.Password;
                        applicationUser.UserRole     = customer.UserRole;
                        //applicationUser.FirstName = customer.FirstName;
                        //applicationUser.LastName = customer.LastName;
                        //applicationUser.Name = customer.FirstName + " " + customer.LastName;
                    }
                }
            }
            return(Task.FromResult <ApplicationUser>(applicationUser));
        }
Esempio n. 4
0
        public Task <IdentityResult> CreateAsync(ApplicationUser user, CancellationToken cancellationToken)
        {
            IdentityResult identityResult = new IdentityResult();
            var            userOntraPort  = new ApiCustomContact()
            {
                Email = user.Email,
                //FirstName = user.PasswordHash,
                ////LastName = user.LastName,
                Password = user.PasswordHash,
                UserRole = user.UserRole
            };

            try
            {
                var result = _ontraportContacts.CreateOrMergeAsync(userOntraPort.GetChanges()).Result;
                return(Task.FromResult <IdentityResult>(identityResult));
            }

            catch (Exception ex)
            {
            }
            return(Task.FromResult <IdentityResult>(null));
        }