internal static int[] GetParentIdsForTree(ParentIdsForTreeQuery query) { using (var scope = new QPConnectionScope()) { if (query.EntityTypeCode == EntityTypeCode.Article) { var contentId = QPContext.EFContext.ArticleSet.FirstOrDefault(x => query.Ids.Contains((int)x.Id))?.ContentId; if (contentId == null) { return(new int[0]); } var selfRelationFieldId = QPContext.EFContext.FieldSet.FirstOrDefault(x => x.ContentId == contentId && x.UseForTree)?.Id; if (selfRelationFieldId == null) { var relationFieldTypeId = QPContext.EFContext.FieldTypeSet.FirstOrDefault(x => x.InputType == "relation").Id; var fieldIds = QPContext.EFContext.FieldSet.Where(x => x.ContentId == contentId).Select(x => x.Id).ToList(); var field = QPContext .EFContext .FieldSet // .Include(x => x.RelationField) .Where(x => x.ContentId == contentId && x.TypeId == relationFieldTypeId && x.RelationId != null && fieldIds.Contains(x.RelationId.Value)) .OrderBy(x => x.Id) .FirstOrDefault(); selfRelationFieldId = field?.Id; } if (selfRelationFieldId == null) { return(new int[0]); } var selfRelationFieldName = FieldRepository.GetById((int)selfRelationFieldId.Value)?.Name; return(Common.GetParentEntityIdsForTree(scope.DbConnection, query.EntityTypeCode, query.Ids, contentId, selfRelationFieldName, null, null, null)); } var entity = EntityTypeRepository.GetByCode(query.EntityTypeCode); if (string.IsNullOrWhiteSpace(entity?.Source) || string.IsNullOrWhiteSpace(entity?.IdField) || string.IsNullOrWhiteSpace(entity?.RecurringIdField)) { return(new int[0]); } return(Common.GetParentEntityIdsForTree(scope.DbConnection, query.EntityTypeCode, query.Ids, null, null, entity.Source, entity.IdField, entity.RecurringIdField)); } }
public static int[] GetParentIdsForTree(ParentIdsForTreeQuery query) => EntityObjectRepository.GetParentIdsForTree(query);
public JsonResult GetParentIdsForTree([FromBody] ParentIdsForTreeQuery query) { return(Json(EntityObjectService.GetParentIdsForTree(query))); }