public void Save(Registration item) { MemoryStream stream = new MemoryStream(); BinaryFormatter bf = new BinaryFormatter(); try { bf.Serialize(stream, item); byte[] data = stream.ToArray(); RegistrationDto dto = new RegistrationDto(); dto.Id = item.Id; dto.Guid = item.Guid; dto.Email = item.Email; dto.Created = item.Created; dto.IsComplete = item.IsComplete; dto.Data = data; dto = (RegistrationDto)base.Session.Merge(dto); SaveObject(dto); } finally { stream.Close(); } }
public void SendRegistrationEmail(CmsSubscription subscription, Registration registration) { String template = GooeyConfigManager.GetEmailTemplate(EmailTemplates.Signup); String body = PerformReplacements(template,subscription: subscription, registration: registration); EmailInfo info = GetEmailInfo(body, subscription.PrimaryUser.Email); SendEmail(info); }
/// <summary> /// Converts the registration into a paid account /// accessible to the cms system and control panel. /// </summary> /// <param name="registration"></param> public static void ConvertToAccount(Registration registration) { MembershipUserWrapper wrapper = MembershipUtil.CreateFromRegistration(registration); if (wrapper == null) throw new ArgumentException("The subscription could not be created because the registration was not valid."); SubscriptionManager.CreateFromRegistration(registration); registration.IsComplete = true; Save(registration); }
/// <summary> /// Finds an existing registration based upon the specified guid. /// </summary> /// <param name="guid"></param> /// <param name="createIfNecessary">Set to true to create a new registration if one doesn't exist.</param> /// <returns></returns> public static Registration FindExisting(String guid, Boolean createIfNecessary) { RegistrationDao dao = new RegistrationDao(); Registration registration = dao.FindByGuid(guid); if ((createIfNecessary) && (registration == null)) { registration = new Registration(); registration.Guid = guid; registration.Created = UtcDateTime.Now; } return registration; }
/// <summary> /// Gets all of the billing agreements for the specified registration /// </summary> /// <param name="registration"></param> /// <returns></returns> public static NvpBaItem GetBillingAgreement(Registration registration) { StringBuilder description = new StringBuilder(); CmsSubscriptionPlan plan = SubscriptionManager.GetSubscriptionPlan(registration); Double totalPrice = (Double)plan.Price; description.AppendFormat("{0} / {1:c} ", plan.Name, plan.Price); if (registration.IsCampaignEnabled) { description.AppendFormat(" +Campaigns / {0:c} ", GooeyConfigManager.CampaignOptionPrice); totalPrice += GooeyConfigManager.CampaignOptionPrice; } if (registration.IsSalesforceEnabled) { description.AppendFormat(" +Salesforce / {0:c} ", GooeyConfigManager.SalesForcePrice); totalPrice += GooeyConfigManager.SalesForcePrice; } description.AppendFormat(". Total: {0:c} / month after {1} days free.", totalPrice, GooeyConfigManager.FreeTrialLength); return PaypalExpressCheckout.GetBillingAgreement(registration.Guid, description.ToString()); }
private static void AddSalesforceLead(Registration registration, CmsSubscription subscription) { try { if (GooeyConfigManager.Salesforce.IsEnabled) { Dictionary<String, String> fields = new Dictionary<string, string>(); fields.Add("FirstName", registration.Firstname); fields.Add("LastName", registration.Lastname); fields.Add("Company", registration.Company); fields.Add("Email", registration.Email); fields.Add("Gooey_CMS_Site__c", registration.Sitename + ".gooeycms.net"); fields.Add("subscription_type__c", subscription.SubscriptionPlanSku); fields.Add("PayPal_Profile__c", subscription.PaypalProfileId); fields.Add("Subscription_ID__c", subscription.Guid); SalesforcePartnerClient salesforce = new SalesforcePartnerClient(); try { salesforce.Login(GooeyConfigManager.Salesforce.SalesforceUsername, GooeyConfigManager.Salesforce.ApiPassword); salesforce.AddLead(fields, null); } finally { salesforce.Logout(); } } else { Logging.Database.Write("salesforce-client", "Salesforce has not been setup for tracking registration leads"); } } catch (Exception e) { Logging.Database.Write("salesforce-client", "Failed to create the salesforce lead:" + e.Message); } }
private CmsSubscription CreateSubscription(Registration registration, String paypalProfileId) { if (registration == null) throw new ArgumentException("The registration guid is not valid and may not be used"); CmsSubscription subscription = SubscriptionManager.GetSubscription(registration.Guid); if (subscription == null) { //If there were no errors then activate the subscription Registrations.ConvertToAccount(registration); //Store the profile ids associated with each of these subscriptions subscription = SubscriptionManager.GetSubscription(registration.Guid); subscription.PaypalProfileId = paypalProfileId; SubscriptionManager.Save(subscription); double totalCost = SubscriptionManager.CalculateCost(subscription); BillingManager.Instance.AddHistory(subscription.Guid, paypalProfileId, BillingManager.NotApplicable, BillingManager.Signup, totalCost, "Initial signup for " + subscription.SubscriptionPlan.Name); //Add this user to salesforce as a new lead AddSalesforceLead(registration, subscription); EmailManager.Instance.SendRegistrationEmail(subscription,registration); } return subscription; }
/// <summary> /// Saves or updates the registration /// </summary> /// <param name="registration"></param> public static void Save(Registration registration) { RegistrationDao dao = new RegistrationDao(); using (Transaction tx = new Transaction()) { dao.Save(registration); tx.Commit(); } }
private static void Delete(Registration registration) { RegistrationDao dao = new RegistrationDao(); using (Transaction tx = new Transaction()) { dao.DeleteObject(registration); tx.Commit(); } }
private String PerformReplacements(String body, CmsSubscription subscription = null, Registration registration = null, Receipt receipt = null) { UserInfo user = null; if (receipt == null) user = MembershipUtil.FindByUserGuid(subscription.PrimaryUserGuid).UserInfo; else user = MembershipUtil.FindByUserGuid(receipt.UserGuid).UserInfo; body = body.Replace("{email}", user.Email); body = body.Replace("{firstname}", user.Firstname); body = body.Replace("{lastname}", user.Lastname); body = body.Replace("{username}", user.Username); body = body.Replace("{current-date}", UtcDateTime.Now.ToString("MM/dd/yyyy hh:mm:ss")); if (subscription != null) { Double totalCost = SubscriptionManager.CalculateCost(subscription); body = body.Replace("{domain}", subscription.Domain); body = body.Replace("{staging-domain}", subscription.StagingDomain); body = body.Replace("{subscription-cost}", String.Format("{0:c}", totalCost)); body = body.Replace("{subscription-description}", SubscriptionManager.GetSubscriptionDescription(subscription).ToString()); body = body.Replace("{paypal-id}", subscription.PaypalProfileId); } else { body = body.Replace("{domain}", String.Empty); body = body.Replace("{staging}", String.Empty); body = body.Replace("{subscription-cost}", String.Empty); body = body.Replace("{subscription-description}", String.Empty); body = body.Replace("{paypal-id}", String.Empty); } if (registration != null) { String password = TextEncryption.Decode(registration.EncryptedPassword); body = body.Replace("{password}", password); } else { body = body.Replace("{password}", String.Empty); } if (receipt != null) { String packageGuid = receipt.PackageGuid; Package package = SitePackageManager.NewInstance.GetPackage(packageGuid); body = body.Replace("{purchase-type}", package.PackageType.ToString()); body = body.Replace("{purchase-date}", receipt.Created.ToString("MM/dd/yyyy")); body = body.Replace("{purchase-amount}", String.Format("{0:c}",receipt.Amount)); body = body.Replace("{purchase-name}", package.Title); body = body.Replace("{purchase-txid}", receipt.TransactionId); } return body.Trim(); }
public ProfileResultStatus CreateRecurringPayment(Registration registration) { NvpBaItem agreement = GetBillingAgreement(registration); Double total = SubscriptionManager.CalculateCost(registration); return CreateRecurringPayment(agreement, total); }
public void AddBillingAgreement(Registration registration) { NvpBaItem agreement = PaypalExpressCheckout.GetBillingAgreement(registration); AddBillingAgreement(agreement); }
public static MembershipUserWrapper CreateFromRegistration(Registration registration) { Boolean exists = (System.Web.Security.Membership.GetUser(registration.Email) != null); MembershipUserWrapper wrapper = new MembershipUserWrapper(); if (String.IsNullOrEmpty(registration.ExistingAccountGuid)) { UserInfo info = new UserInfo(); MembershipUser user = null; info.Username = registration.Email; info.Email = registration.Email; info.Firstname = registration.Firstname; info.Lastname = registration.Lastname; info.Company = registration.Company; info.Address1 = registration.Address1; info.Address2 = registration.Address2; info.City = registration.City; info.State = registration.State; info.Zipcode = registration.Zipcode; info.Guid = System.Guid.NewGuid().ToString(); info.Created = UtcDateTime.Now; UserInfoDao dao = new UserInfoDao(); if (!exists) { using (Transaction tx = new Transaction()) { dao.SaveObject(info); tx.Commit(); } } //Create the account in the asp.net membership system String password = Decrypt(registration.EncryptedPassword); try { if (!exists) user = System.Web.Security.Membership.CreateUser(registration.Email, password, registration.Email); if (!System.Web.Security.Roles.IsUserInRole(registration.Email, SecurityConstants.Roles.SITE_ADMINISTRATOR)) System.Web.Security.Roles.AddUserToRole(registration.Email, SecurityConstants.Roles.SITE_ADMINISTRATOR); } catch (MembershipCreateUserException e) { //Rollback the user info using (Transaction tx = new Transaction()) { dao.DeleteObject(info); tx.Commit(); } throw e; } wrapper.MembershipUser = user; wrapper.UserInfo = info; } else { UserInfo info = new UserInfoDao().FindByGuid(registration.ExistingAccountGuid); if (info != null) { //make sure the email addresses match if (info.Email.EqualsCaseInsensitive(registration.Email)) wrapper = FindByUsername(info.Email); } } return wrapper; }