示例#1
0
        public async Task <bool> MembershipIsActive(MemberSubscription subscription, Guid chapterId)
        {
            ChapterMembershipSettings membershipSettings = await _cacheService.GetOrSetItem(
                () => _chapterRepository.GetChapterMembershipSettings(chapterId),
                chapterId);

            return(MembershipIsActive(subscription, membershipSettings));
        }
示例#2
0
 private void ValidateChapterMembershipSettings(ChapterMembershipSettings settings)
 {
     if (settings.MembershipDisabledAfterDaysExpired < 0 ||
         settings.TrialPeriodMonths <= 0)
     {
         throw new OdkServiceException("Some required fields are missing");
     }
 }
示例#3
0
 public async Task UpdateChapterMembershipSettings(ChapterMembershipSettings settings)
 {
     await Context
     .Update <ChapterMembershipSettings>()
     .Set(x => x.MembershipDisabledAfterDaysExpired, settings.MembershipDisabledAfterDaysExpired)
     .Set(x => x.TrialPeriodMonths, settings.TrialPeriodMonths)
     .Where(x => x.ChapterId).EqualTo(settings.ChapterId)
     .ExecuteAsync();
 }
示例#4
0
        public async Task UpdateChapterMembershipSettings(Guid currentMemberId, Guid chapterId, UpdateChapterMembershipSettings settings)
        {
            ChapterMembershipSettings update = await GetChapterMembershipSettings(currentMemberId, chapterId);

            update.MembershipDisabledAfterDaysExpired = settings.MembershipDisabledAfterDaysExpired;
            update.TrialPeriodMonths = settings.TrialPeriodMonths;

            ValidateChapterMembershipSettings(update);

            await _chapterRepository.UpdateChapterMembershipSettings(update);

            _cacheService.UpdateItem(update, chapterId);
        }
示例#5
0
        public async Task CreateMember(Guid chapterId, CreateMemberProfile profile)
        {
            await ValidateMemberProfile(chapterId, profile);

            ValidateMemberImage(profile.Image.MimeType, profile.Image.ImageData);

            Member existing = await _memberRepository.FindMemberByEmailAddress(profile.EmailAddress);

            if (existing != null)
            {
                return;
            }

            Member create = new Member(Guid.Empty, chapterId, profile.EmailAddress, profile.EmailOptIn, profile.FirstName, profile.LastName,
                                       DateTime.UtcNow, false, false, 0);

            Guid id = await _memberRepository.CreateMember(create);

            ChapterMembershipSettings membershipSettings = await _chapterRepository.GetChapterMembershipSettings(chapterId);

            MemberSubscription subscription = new MemberSubscription(id, SubscriptionType.Trial, create.CreatedDate.AddMonths(membershipSettings.TrialPeriodMonths));
            await _memberRepository.UpdateMemberSubscription(subscription);

            MemberImage image = CreateMemberImage(id, profile.Image.MimeType, profile.Image.ImageData);
            await _memberRepository.AddMemberImage(image);

            IEnumerable <MemberProperty> memberProperties = profile.Properties
                                                            .Select(x => new MemberProperty(Guid.Empty, id, x.ChapterPropertyId, x.Value));

            await _memberRepository.UpdateMemberProperties(id, memberProperties);

            string activationToken = RandomStringGenerator.Generate(64);

            await _memberRepository.AddActivationToken(new MemberActivationToken(id, activationToken));

            Chapter chapter = await _chapterRepository.GetChapter(chapterId);

            string url = _settings.ActivateAccountUrl.Interpolate(new Dictionary <string, string>
            {
                { "chapter.name", chapter.Name },
                { "token", HttpUtility.UrlEncode(activationToken) }
            });

            await _emailService.SendEmail(chapter, create.EmailAddress, EmailType.ActivateAccount, new Dictionary <string, string>
            {
                { "chapter.name", chapter.Name },
                { "url", url }
            });
        }
示例#6
0
        public bool MembershipIsActive(MemberSubscription subscription, ChapterMembershipSettings membershipSettings)
        {
            if (subscription.Type == SubscriptionType.Alum)
            {
                return(false);
            }

            if (subscription.ExpiryDate == null || subscription.ExpiryDate >= DateTime.UtcNow)
            {
                return(true);
            }

            if (membershipSettings.MembershipDisabledAfterDaysExpired <= 0)
            {
                return(true);
            }

            return(subscription.ExpiryDate >= DateTime.UtcNow.AddDays(-1 * membershipSettings.MembershipDisabledAfterDaysExpired));
        }
示例#7
0
        public async Task <ChapterAdminMembershipSettingsApiResponse> GetMembershipSettings(Guid id)
        {
            ChapterMembershipSettings settings = await _chapterAdminService.GetChapterMembershipSettings(GetMemberId(), id);

            return(_mapper.Map <ChapterAdminMembershipSettingsApiResponse>(settings));
        }
示例#8
0
        public async Task <ActionResult <ChapterMembershipSettingsApiResponse> > MembershipSettings(Guid id)
        {
            ChapterMembershipSettings settings = await _chapterService.GetChapterMembershipSettings(id);

            return(_mapper.Map <ChapterMembershipSettingsApiResponse>(settings));
        }