Example #1
0
        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));
            }
        }
Example #2
0
 public static int[] GetParentIdsForTree(ParentIdsForTreeQuery query) => EntityObjectRepository.GetParentIdsForTree(query);
Example #3
0
 public JsonResult GetParentIdsForTree([FromBody] ParentIdsForTreeQuery query)
 {
     return(Json(EntityObjectService.GetParentIdsForTree(query)));
 }