/// <inheritdoc /> public IEnumerable <IRelationType> GetAllRelationTypes(params int[] ids) { using (var scope = ScopeProvider.CreateScope(autoComplete: true)) { return(_relationTypeRepository.GetMany(ids)); } }
public IEnumerable <IRelation> GetPagedRelationsByQuery(IQuery <IRelation>?query, long pageIndex, int pageSize, out long totalRecords, Ordering?ordering) { Sql <ISqlContext> sql = GetBaseQuery(false); if (ordering == null || ordering.IsEmpty) { ordering = Ordering.By(SqlSyntax.GetQuotedColumn(Constants.DatabaseSchema.Tables.Relation, "id")); } var translator = new SqlTranslator <IRelation>(sql, query); sql = translator.Translate(); // apply ordering ApplyOrdering(ref sql, ordering); var pageIndexToFetch = pageIndex + 1; Page <RelationDto>?page = Database.Page <RelationDto>(pageIndexToFetch, pageSize, sql); List <RelationDto>?dtos = page.Items; totalRecords = page.TotalItems; var relTypes = _relationTypeRepository.GetMany(dtos.Select(x => x.RelationType).Distinct().ToArray())? .ToDictionary(x => x.Id, x => x); var result = dtos.Select(r => { if (relTypes is null || !relTypes.TryGetValue(r.RelationType, out IRelationType? relType)) { throw new InvalidOperationException(string.Format("RelationType with Id: {0} doesn't exist", r.RelationType)); } return(DtoToEntity(r, relType)); }).WhereNotNull().ToList(); return(result); }