Пример #1
0
        private IList <TResource> GetRecentResources <TResource>(Guid userId, IEnumerable <TResource> resources, IEnumerable <Resource> excludeResources)
            where TResource : Resource
        {
            var recentResources = excludeResources == null
                ? resources.Take(2).ToList()
                : (from r in resources
                       where excludeResources.All(x => x.Id != r.Id)
                   select r).Take(2).ToList();

            for (var index = 0; index < recentResources.Count; ++index)
            {
                var viewing = new ResourceViewing
                {
                    ResourceType = typeof(TResource) == typeof(Article)
                        ? ResourceType.Article
                        : typeof(TResource) == typeof(Video)
                            ? ResourceType.Video
                            : ResourceType.QnA,
                    UserId     = userId,
                    ResourceId = recentResources[index].Id,
                    Id         = Guid.NewGuid(),
                    Time       = DateTime.Now.AddDays(-1 * (index + 1)),
                };
                _resourcesRepository.CreateResourceViewing(viewing);
            }

            return(recentResources);
        }
Пример #2
0
 void IResourcesRepository.CreateResourceViewing(ResourceViewing resourceViewing)
 {
     using (var dc = CreateContext())
     {
         dc.ResourceViewingEntities.InsertOnSubmit(resourceViewing.Map());
         dc.SubmitChanges();
     }
 }
Пример #3
0
 internal static ResourceViewingEntity Map(this ResourceViewing viewing)
 {
     return(new ResourceViewingEntity
     {
         id = viewing.Id,
         userId = viewing.UserId,
         resourceId = viewing.ResourceId,
         resourceType = (byte)viewing.ResourceType,
         time = viewing.Time,
     });
 }
Пример #4
0
        private void ViewResource(ResourceType resourceType, Guid userId, Guid resourceId)
        {
            var viewing = new ResourceViewing {
                ResourceType = resourceType, UserId = userId, ResourceId = resourceId
            };

            viewing.Prepare();
            viewing.Validate();
            _repository.CreateResourceViewing(viewing);

            var handlers = ResourceViewed;

            if (handlers != null)
            {
                handlers(this, new ResourceEventArgs(viewing.ResourceId));
            }
        }
Пример #5
0
        protected IList <Resource> GetRelatedResources(Guid userId, Resource resource, int count)
        {
            var resources = (from a in _resourcesQuery.GetArticles()
                             where a.Id != resource.Id &&
                             a.SubcategoryId == resource.SubcategoryId
                             select(Resource) a)
                            .Concat(from v in _resourcesQuery.GetVideos()
                                    where v.Id != resource.Id &&
                                    v.SubcategoryId == resource.SubcategoryId
                                    select v)
                            .Concat(from q in _resourcesQuery.GetQnAs()
                                    where q.Id != resource.Id &&
                                    q.SubcategoryId == resource.SubcategoryId
                                    select q).Randomise().ToList();

            // View more than are needed to push them down the list, but not resources of the same type.

            resources = resources.Where(r => r.GetType() == resource.GetType()).Concat(resources.Where(r => r.GetType() != resource.GetType())).ToList();

            for (var index = count; index < resources.Count; ++index)
            {
                var relatedResource = resources[index];
                var viewing         = new ResourceViewing
                {
                    ResourceType = relatedResource is Article
                        ? ResourceType.Article
                        : resource is Video
                            ? ResourceType.Video
                            : ResourceType.QnA,
                    UserId     = userId,
                    ResourceId = relatedResource.Id,
                    Id         = Guid.NewGuid(),
                    Time       = DateTime.Now.AddDays(-1 * (index + 1))
                };
                _resourcesRepository.CreateResourceViewing(viewing);
            }

            return(resources.ToList());
        }