public IEnumerable <ProjectActivityDto> GetProjectActivity(int projectId, int skip, int take)
        {
            var recognisedCategories = new HashSet <string>(new string[] {
                Constants.ActivityLogCategories.TASK_ADDED,
                Constants.ActivityLogCategories.MEMBER_ADDED
            });

            IEnumerable <IComposibleProjectActivity> reports =
                _activityLogService
                .Select <ActivityLogItem>(item => item, item => recognisedCategories.Contains(item.Category), skip, take)
                .Select <ActivityLogItem, IComposibleProjectActivity>(item => {
                switch (item.Category)
                {
                case Constants.ActivityLogCategories.TASK_ADDED:
                    return(new TaskAddedReport(item));

                case Constants.ActivityLogCategories.MEMBER_ADDED:
                    return(new MemberAddedReport(item));

                default:
                    throw new Exception("Unrecognised activity category");
                }
            });

            return(reports.Select(report => report.ToProjectActivity(_serviceProvider)));
        }