public IEntitlementAccess Find(IEntitledProduct entitledProduct) { if (!EntitlementChecksEnabled.Enabled) { return(Create(null, EntitledAccessLevel.Individual)); } if (entitledProduct == null) { return(Create(null, EntitledAccessLevel.None)); } var productCode = entitledProduct.ProductCode; var entitlements = EntitlementsContexts.SelectMany(ec => ec.Entitlements.Where(e => string.Equals(e.ProductCode, productCode, StringComparison.InvariantCultureIgnoreCase)).Select(e => Create(e, ec.AccessLevel))); foreach (var accessLevel in OrderedAccessLevels) { var entitlementAccess = entitlements.FirstOrDefault(e => e.AccessLevel == accessLevel); if (entitlementAccess != null) { return(entitlementAccess); } } return(Create(null, EntitledAccessLevel.None)); }
public IEntitlementAccess Find(IEntitledProduct entitledProduct) { var matchingPurchase = ArticlePurchasesContext.ArticlesPurchases?.FirstOrDefault(ap => string.Equals(ap.DocumentId, entitledProduct.DocumentId, StringComparison.InvariantCultureIgnoreCase)); if (matchingPurchase == null || entitledProduct.PublishedOn >= matchingPurchase.Expiration) { return(Create(EntitledAccessLevel.None)); } return(Create(EntitledAccessLevel.Individual)); }
public bool IsArchiveLimited(IEntitlement entitlement, IEntitledProduct entitledProduct) { if (entitlement == null || !entitlement.ArchiveLimited) { return(false); } var productPublishedOn = entitledProduct.PublishedOn; var archiveLimit = DateTime.Now.AddDays(entitlement.ArchiveLimitedDays * -1); return(archiveLimit >= productPublishedOn); }
public bool IsEntitled(IEntitledProduct entitledProduct) { if (entitledProduct == null) { return(false); } if (entitledProduct.IsFree || (entitledProduct.IsFreeWithRegistration && AuthenticatedUserContext.IsAuthenticated)) { return(true); } var entitlementAccesses = EntitlementAccessContexts.Select(eac => eac.Find(entitledProduct)); var filteredEntitlementAccesses = entitlementAccesses .Where(ea => ea != null && ea.AccessLevel != EntitledAccessLevel.None && !IsArchiveLimited(ea.Entitlement, entitledProduct) ) .ToList(); return(filteredEntitlementAccesses.Any()); }