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();
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        /// <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());
        }
Beispiel #6
0
        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);
            }
        }
Beispiel #7
0
        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;
        }
Beispiel #8
0
 /// <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();
     }
 }
Beispiel #9
0
 private static void Delete(Registration registration)
 {
     RegistrationDao dao = new RegistrationDao();
     using (Transaction tx = new Transaction())
     {
         dao.DeleteObject(registration);
         tx.Commit();
     }
 }
Beispiel #10
0
        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);
 }
Beispiel #13
0
        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;
        }