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