public ForumThreadsDrop(IPortalLiquidContext portalLiquidContext, IDataAdapterDependencies dependencies, IForum forum, int startRowIndex = 0, int pageSize = -1, string orderBy = "adx_lastpostdate", string sortDirection = "asc" ) : base(portalLiquidContext) { if (forum != null) { Dependencies = dependencies; PortalLiquidContext = portalLiquidContext; SetParams(startRowIndex, pageSize, orderBy, sortDirection); Forum = forum; var forumAggregationDataAdapter = new ForumDataAdapter(forum.EntityReference, Dependencies, serviceContext => CreateThreadEntityQuery(serviceContext, Forum.EntityReference)); _adapter = forumAggregationDataAdapter; _threads = new Lazy <ForumThreadDrop[]>(() => _adapter.SelectThreads(StartRowIndex, PageSize).Select(e => new ForumThreadDrop(this, Dependencies, e)).ToArray(), LazyThreadSafetyMode.None); } else { Dependencies = dependencies; PortalLiquidContext = portalLiquidContext; SetParams(startRowIndex, pageSize, orderBy, sortDirection); var forumAggregationDataAdapter = new ForumDataAdapter(Dependencies, serviceContext => CreateThreadEntityQuery(serviceContext)); _adapter = forumAggregationDataAdapter; _threads = new Lazy <ForumThreadDrop[]>(() => _adapter.SelectThreads(StartRowIndex, PageSize).Select(e => new ForumThreadDrop(this, Dependencies, e)).ToArray(), LazyThreadSafetyMode.None); } }
protected override void ProcessRequest(HttpContext context, ICmsEntityServiceProvider serviceProvider, Guid portalScopeId, IPortalContext portal, OrganizationServiceContext serviceContext, Entity entity, CmsEntityMetadata entityMetadata, ICrmEntitySecurityProvider security) { if (!(IsRequestMethod(context.Request, "POST") || IsRequestMethod(context.Request, "DELETE"))) { throw new CmsEntityServiceException(HttpStatusCode.MethodNotAllowed, "Request method {0} not allowed for this resource.".FormatWith(context.Request.HttpMethod)); } CrmEntityInactiveInfo inactiveInfo; if (CrmEntityInactiveInfo.TryGetInfo(entity.LogicalName, out inactiveInfo)) { serviceContext.SetState(inactiveInfo.InactiveState, inactiveInfo.InactiveStatus, entity); WriteNoContentResponse(context.Response); return; } if (entity.LogicalName == "adx_communityforumthread") { var forum = entity.GetRelatedEntity(serviceContext, new Relationship("adx_communityforum_communityforumthread")); if (forum != null) { var forumDataAdapter = new ForumDataAdapter( forum.ToEntityReference(), new PortalConfigurationDataAdapterDependencies(portalName: PortalName, requestContext: context.Request.RequestContext)); forumDataAdapter.DeleteThread(entity.ToEntityReference()); WriteNoContentResponse(context.Response); if (FeatureCheckHelper.IsFeatureEnabled(FeatureNames.TelemetryFeatureUsage)) { PortalFeatureTrace.TraceInstance.LogFeatureUsage(FeatureTraceCategory.Forum, HttpContext.Current, "delete_forumthread", 1, entity.ToEntityReference(), "delete"); } return; } } if (entity.LogicalName == "adx_communityforumpost") { var forumThread = entity.GetRelatedEntity(serviceContext, new Relationship("adx_communityforumthread_communityforumpost")); if (forumThread != null) { var forumThreadDataAdapter = new ForumThreadDataAdapter( forumThread.ToEntityReference(), new PortalConfigurationDataAdapterDependencies(portalName: PortalName, requestContext: context.Request.RequestContext)); forumThreadDataAdapter.DeletePost(entity.ToEntityReference()); WriteNoContentResponse(context.Response); if (FeatureCheckHelper.IsFeatureEnabled(FeatureNames.TelemetryFeatureUsage)) { PortalFeatureTrace.TraceInstance.LogFeatureUsage(FeatureTraceCategory.Forum, HttpContext.Current, "delete_forumpost", 1, entity.ToEntityReference(), "delete"); } return; } } serviceContext.DeleteObject(entity); serviceContext.SaveChanges(); WriteNoContentResponse(context.Response); if (FeatureCheckHelper.IsFeatureEnabled(FeatureNames.TelemetryFeatureUsage)) { PortalFeatureTrace.TraceInstance.LogFeatureUsage(FeatureTraceCategory.Blog, HttpContext.Current, "delete_blogpost", 1, entity.ToEntityReference(), "delete"); } }