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); }
/// <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()); }
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)); }
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)); }