public void Components_AddUsage_ForSubscription()
        {
            // Arrange
            var productFamily = Chargify.GetProductFamilyList().Values.FirstOrDefault();

            if (productFamily == null)
            {
                Assert.Inconclusive("A valid product family could not be found.");
            }
            var subscription = Chargify.GetSubscriptionList().FirstOrDefault(s => s.Value.State == SubscriptionState.Active).Value;

            if (subscription == null)
            {
                Assert.Inconclusive("A valid subscription could not be found.");
            }
            var component = Chargify.GetComponentsForProductFamily(productFamily.ID, false).FirstOrDefault(c => c.Value.Kind == ComponentType.Metered_Component).Value;

            if (component == null)
            {
                Assert.Inconclusive("A valid component could not be found.");
            }
            int    usageQuantity    = 5;
            string usageDescription = "testing";

            // Act
            var usageResult = Chargify.AddUsage(subscription.SubscriptionID, component.ID, usageQuantity, usageDescription);

            // Assert
            Assert.IsNotNull(usageResult);
            //Assert.IsInstanceOfType(usageResult, typeof(IUsage));
            Assert.IsTrue(usageResult.Memo == usageDescription);
            Assert.IsTrue(usageResult.Quantity == usageQuantity);
        }
Beispiel #2
0
        private void PurchaseTrainingHours(string buttonID)
        {
            this.MasterPage.MessageType = NoticeMessageType.Error;

            Setting setting      = null;
            string  trainingName = string.Empty;

            switch (buttonID)
            {
            case "btnPurchase1Hour":
                setting      = PaidSettings["Training1Hour"];
                trainingName = "Purchase Training 1 Hour";
                break;

            case "btnPurchase3Hours":
                setting      = PaidSettings["Training3Hours"];
                trainingName = "Purchase Training 3 Hours";
                break;

            case "btnPurchase8Hours":
                setting      = PaidSettings["Training8Hours"];
                trainingName = "Purchase Training 8 Hours";
                break;
            }

            if (setting == null)
            {
                this.MasterPage.Message = trainingName + ": Component definition is not found.";
                this.List_DataBind();
                return;
            }

            if (string.IsNullOrEmpty(setting.ExternalId))
            {
                this.MasterPage.Message = trainingName + ": Component External Id is not defined.";
                this.List_DataBind();
                return;
            }

            int _cid   = 0;
            int _count = 1;

            if (!int.TryParse(setting.ExternalId, out _cid))
            {
                this.MasterPage.Message = trainingName + ": Component External Id is invalid.";
                this.List_DataBind();
                return;
            }

            try
            {
                Chargify.AddUsage(SubscriptionId, _cid, _count, "Purchase Training");
            }
            catch (ChargifyException cex)
            {
                if ((int)cex.StatusCode == 422)
                {
                    this.MasterPage.Message = trainingName + ": Credit Card Transaction Failed!";
                }
                else
                {
                    this.MasterPage.Message = cex.Message;
                }
                this.List_DataBind();
                return;
            }
            catch (Exception ex)
            {
                this.MasterPage.Message = ex.Message;
                this.List_DataBind();
                return;
            }
            this.MasterPage.MessageType = NoticeMessageType.Success;
            this.MasterPage.Message     = "Your " + trainingName +
                                          " proccessed successfully! You will receive confirmation email.";
            UserContext usr          = UserContext.Current;
            string      _usrFullName = usr.FirstName + " " + usr.LastName;
            string      _subject     = (!string.IsNullOrEmpty(usr.Title) ? usr.Title + " " : string.Empty) + _usrFullName + " from " + usr.Organization.Name + " " + usr.Instance.Name + " purchased " + trainingName + ".";
            string      _body1       = "Hi, " + _usrFullName + "\r\n\r\nYou purchased " +
                                       FrameworkConfiguration.Current.WebApplication.Name + " " + trainingName +
                                       ".\r\nOur support team will contact with you ASAP to schedule a time when we can do a training for you.\r\n\r\nThanks.";
            string _body2 = "Please, contact me via Email " + usr.Email +
                            (!string.IsNullOrEmpty(usr.Phone) ? " or by phone " + usr.Phone : string.Empty) +
                            (!string.IsNullOrEmpty(usr.MobilePhone) ? " or by mobile " + usr.MobilePhone : string.Empty) +
                            " to schedule a time when we can do a training.";

            try
            {
                Support.SendEmail(FrameworkConfiguration.Current.WebApplication.Email.SalesTeam, FrameworkConfiguration.Current.WebApplication.Email.SalesTeam, usr.Email,
                                  string.Empty, "Thank You for purchase " + FrameworkConfiguration.Current.WebApplication.Name + " " + trainingName, _body1, false, false, EmailSendingReason.Undefined);
                Support.SendEmail(FrameworkConfiguration.Current.WebApplication.Support.Email, FrameworkConfiguration.Current.WebApplication.Support.Email, FrameworkConfiguration.Current.WebApplication.Email.SalesTeam,
                                  string.Empty, _subject, _body2, false, false, EmailSendingReason.Undefined);
            }
            catch (Exception ex)
            {
                this.MasterPage.MessageType = NoticeMessageType.Warning;
                this.MasterPage.Message     = "Your " + trainingName +
                                              " proccessed successfully! But Confirmation emails was not sent.";
                this.MasterPage.MessageDescription = ex.ToString();
            }
            this.List_DataBind();
        }