/// <summary> /// Creating the member subscription /// </summary> /// <param name="organizationService"></param> /// <param name="member"></param> private void CreateMemberSubscription(IOrganizationService organizationService, Account member) { CrmServiceContext crmServiceContext = new CrmServiceContext(organizationService); //Get Membership Type of the member sbma_membershiptype membershipType = GetMembershipTypeOfMember(crmServiceContext, member.sbma_MembershipTypeId.Id); if (membershipType == null) { throw new ArgumentNullException("Error in retrieving membership type"); } //Set the Membershipcription Properties sbma_membersubscription membersubscription = new sbma_membersubscription { //Se the entity reference with Member record sbma_MemberId = new EntityReference(member.LogicalName, member.AccountId.Value), //Set the entity reference with Membership Type record sbma_MembershipTypeId = new EntityReference(membershipType.LogicalName, membershipType.sbma_membershiptypeId.Value), //Set the subscription due date sbma_SubscriptionDueDate = DateTime.Now.AddDays(7.0), //Set the Subscription status to pending sbma_SubscriptionStatus = new OptionSetValue( (int)sbma_membersubscription_sbma_SubscriptionStatus.Pending) }; //Calling the organization service to create the new member subscription organizationService.Create(membersubscription); }
/// <summary> /// Get Subscription fee /// </summary> /// <param name="crmServiceContext"></param> /// <param name="membersubscription"></param> /// <returns></returns> private decimal GetDuePayment(CrmServiceContext crmServiceContext, sbma_membersubscription membersubscription) { var membershipType = (from mt in crmServiceContext.sbma_membershiptypeSet where mt.sbma_membershiptypeId == membersubscription.sbma_MembershipTypeId.Id select mt).FirstOrDefault(); return(membershipType.sbma_SubscriptionFee.Value); }
/// <summary> /// Create member payment record /// </summary> /// <param name="organizationService"></param> /// <param name="memberSubscriptionId"></param> /// <param name="accountId"></param> private void CreateMemberPaymentRecord(IOrganizationService organizationService, Guid memberSubscriptionId, Guid accountId) { CrmServiceContext crmServiceContext = new CrmServiceContext(organizationService); sbma_membersubscription membersubscriptionlocal = GetSubscription(crmServiceContext, memberSubscriptionId); Account membershipLocal = GetMember(crmServiceContext, accountId); sbma_memberpayment memberpayment = new sbma_memberpayment() { sbma_AmountDue = new Money(GetDuePayment(crmServiceContext, membersubscriptionlocal)), sbma_PaymentDue = membersubscriptionlocal.sbma_SubscriptionDueDate, sbma_PaymentMethod = new OptionSetValue((membershipLocal.sbma_PaymentMethod.Value == (int)Account_sbma_PaymentMethod.CreditCard) ? (int)Account_sbma_PaymentMethod.CreditCard : (int)Account_sbma_PaymentMethod.DirectDebit), sbma_MemberSubscriptionId = new EntityReference(membersubscriptionlocal.LogicalName, membersubscriptionlocal.Id) }; organizationService.Create(memberpayment); }
public void CreateRenewalSubscriptionProcess(IOrganizationService organizationService) { CrmServiceContext crmServiceContext = new CrmServiceContext(organizationService); SubscriptionDataAccess subscriptionDataAccess = new SubscriptionDataAccess(); // Get the list of accounts that subscription is expiring in 30 days log.Info("Get members renewing in 30 days..."); List <Account> accountsList = subscriptionDataAccess.GetMembersExpiringIn30Days(crmServiceContext); // Execute only if there are any reocrds, else do nothing if (accountsList.Count > 0) { log.Info("Processing " + accountsList.Count + " members..."); for (int i = 0; i < accountsList.Count; i++) { // For each account check whether there are any unpaid subscriptions for the period. Create only if there are no unpaid subscriptions log.Info("Check for unpaid member susbcriptions for the period"); List <sbma_membersubscription> membersubscriptions = subscriptionDataAccess.GetUnpaidSubscriptions(crmServiceContext, accountsList[i].AccountId.Value); if (membersubscriptions.Count == 0) { log.Info("Creating member subscription for member: " + accountsList[i].AccountId.Value); sbma_membershiptype membershiptype = subscriptionDataAccess.GetMembershipTypeOfMember(crmServiceContext, accountsList[i].sbma_MembershipTypeId.Id); //Set the Membershipcription Properties sbma_membersubscription membersubscription = new sbma_membersubscription { //Se the entity reference with Member record sbma_MemberId = new EntityReference(accountsList[i].LogicalName, accountsList[i].AccountId.Value), //Set the entity reference with Membership Type record sbma_MembershipTypeId = new EntityReference(membershiptype.LogicalName, membershiptype.sbma_membershiptypeId.Value), //Set the subscription due date sbma_SubscriptionDueDate = DateTime.Now.AddDays(7.0), //Set the Subscription status to pending sbma_SubscriptionStatus = new OptionSetValue( (int)sbma_membersubscription_sbma_SubscriptionStatus.Pending) }; // Create the subscription subscriptionDataAccess.CreateRenewalMemberSubscription(organizationService, membersubscription); log.Info("Subscription created successfully."); } } } }
/// <summary> /// Create the member subscription /// </summary> /// <param name="organizationService"></param> /// <param name="membersubscription"></param> public void CreateRenewalMemberSubscription(IOrganizationService organizationService, sbma_membersubscription membersubscription) { organizationService.Create(membersubscription); }