public async Task <bool> MembershipIsActive(MemberSubscription subscription, Guid chapterId) { ChapterMembershipSettings membershipSettings = await _cacheService.GetOrSetItem( () => _chapterRepository.GetChapterMembershipSettings(chapterId), chapterId); return(MembershipIsActive(subscription, membershipSettings)); }
private void ValidateChapterMembershipSettings(ChapterMembershipSettings settings) { if (settings.MembershipDisabledAfterDaysExpired < 0 || settings.TrialPeriodMonths <= 0) { throw new OdkServiceException("Some required fields are missing"); } }
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(); }
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); }
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 } }); }
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)); }
public async Task <ChapterAdminMembershipSettingsApiResponse> GetMembershipSettings(Guid id) { ChapterMembershipSettings settings = await _chapterAdminService.GetChapterMembershipSettings(GetMemberId(), id); return(_mapper.Map <ChapterAdminMembershipSettingsApiResponse>(settings)); }
public async Task <ActionResult <ChapterMembershipSettingsApiResponse> > MembershipSettings(Guid id) { ChapterMembershipSettings settings = await _chapterService.GetChapterMembershipSettings(id); return(_mapper.Map <ChapterMembershipSettingsApiResponse>(settings)); }