Пример #1
0
        public async Task <Member> MemberSetupAsync(string userId, string firstName, string lastName, string inviteCode)
        {
            Member member = await CreateNewMemberAsync(userId, firstName, lastName);

            await AddUserToMemberRoleAsync(userId);

            var spec = new InvitationByInviteCodeSpec(inviteCode);

            var invite = await _invitationRepository.GetBySpecAsync(spec);

            if (invite is null)
            {
                throw new InvitationNotFoundException(inviteCode);
            }
            var subscriptionId = invite.PaymentHandlerSubscriptionId;

            var subscriptionDateTimeRange = _paymentHandlerSubscription.GetDateTimeRange(subscriptionId);

            member.AddSubscription(subscriptionDateTimeRange);

            // Member has now been created and set up from the invite used. Invite should now be deactivated
            invite.Deactivate();
            await _invitationRepository.UpdateAsync(invite);

            return(member);
        }
    public void AddsSubscriptionWithGivenDateTimeRange()
    {
        Member             member       = MemberHelpers.CreateWithDefaultConstructor();
        MemberSubscription subscription = SubscriptionHelpers.GetDefaultTestSubscription();

        member.AddSubscription(subscription.Dates, 1);

        var subscriptionAdded = member.MemberSubscriptions.Any(s => s.Dates.Equals(subscription.Dates));

        Assert.True(subscriptionAdded);
    }
Пример #3
0
        public void DoesNothingGivenNoCurrentSubscription()
        {
            Member             member = MemberHelpers.CreateWithDefaultConstructor();
            MemberSubscription starterSubscription = SubscriptionHelpers.GetSubscriptionWithPastEndDate();
            DateTime           newEndDate          = DateTime.Now.AddDays(30);
            var originalEndDate = starterSubscription.Dates.EndDate;

            member.AddSubscription(starterSubscription.Dates);

            member.ExtendCurrentSubscription(newEndDate);

            Assert.Equal(originalEndDate, member.MemberSubscriptions[0].Dates.EndDate);

            Assert.Single(member.MemberSubscriptions);
        }
Пример #4
0
        public void ExtendsSubscription()
        {
            Member             member = MemberHelpers.CreateWithDefaultConstructor();
            MemberSubscription starterSubscription = SubscriptionHelpers.GetDefaultTestSubscription();
            DateTime           newEndDate          = DateTime.Now.AddDays(30);
            DateTime           originalStartDate   = starterSubscription.Dates.StartDate;

            member.AddSubscription(starterSubscription.Dates);

            member.ExtendCurrentSubscription(newEndDate);

            Assert.Equal(newEndDate, member.MemberSubscriptions[0].Dates.EndDate);
            Assert.Equal(originalStartDate, member.MemberSubscriptions[0].Dates.StartDate);

            Assert.Single(member.MemberSubscriptions);
        }
Пример #5
0
    public async Task <Member> MemberSetupAsync(string userId,
                                                string firstName, string lastName, string inviteCode, string email)
    {
        Guard.Against.NullOrEmpty(inviteCode, nameof(inviteCode));
        Member member = await CreateNewMemberAsync(userId, firstName, lastName);

        await AddUserToMemberRoleAsync(userId);

        var spec   = new InvitationByInviteCodeSpec(inviteCode);
        var invite = await _invitationRepository.GetBySpecAsync(spec);

        _logger.LogInformation($"Looking up invitation with code {inviteCode}");
        if (invite is null)
        {
            throw new InvitationNotFoundException($"Could not find invitation with code {inviteCode}.");
        }
        var paymentHandlerSubscriptionId = invite.PaymentHandlerSubscriptionId;

        var subscriptionDateTimeRange = _paymentHandlerSubscription.GetDateTimeRange(paymentHandlerSubscriptionId);

        var billingPeriod = _paymentHandlerSubscription.GetBillingPeriod(paymentHandlerSubscriptionId);

        int devBetterSubscriptionPlanId = 1; // monthly

        if (billingPeriod == Enums.BillingPeriod.Year)
        {
            devBetterSubscriptionPlanId = 2; // yearly
        }

        member.AddSubscription(subscriptionDateTimeRange, devBetterSubscriptionPlanId);

        // Member has now been created and set up from the invite used. Invite should now be deactivated
        await DeactivateInviteAndDuplicates(invite);

        await AddNewSubscriberBillingActivity(invite.PaymentHandlerSubscriptionId, email);

        return(member);
    }