/// <summary> /// Applies a specialty type filter to the query. /// </summary> /// <param name="query">The query.</param> /// <param name="request">The request.</param> /// <returns></returns> public static IQueryable<Specialty> FilterBySpecialtyType(this IQueryable<Specialty> query, SearchSpecialtyRequest request) { if (!string.IsNullOrEmpty(request.SpecialtyType)) query = query.Where(i => i.SpecialtyType == request.SpecialtyType); if (request.IncludeParentSpecialties && !request.IncludeSubSpecialties) query = query.Where(i => !i.ParentSpecialtyId.HasValue); else if (!request.IncludeParentSpecialties && request.IncludeSubSpecialties) query = query.Where(i => i.ParentSpecialtyId.HasValue); return query; }
/// <summary> /// Filters the query by specialties in use. /// </summary> /// <param name="query">The query.</param> /// <param name="request">The request.</param> /// <param name="entityContext">The entity context.</param> /// <returns></returns> public static IQueryable<Specialty> FilterBySpecialtiesInUse(this IQueryable<Specialty> query, SearchSpecialtyRequest request, IEntityContext entityContext) { if (request.OnlyInUseSpecialties) { query = (from q in query join ps in entityContext.EntitySet<ProviderSpecialty>() on q.Id equals ps.SpecialtyId select q); } else { query = (from q in query where q.IsEnabled select q); } return query; }
/// <summary> /// Applies a parent specialty Id filter to the query. /// </summary> /// <param name="query">The query.</param> /// <param name="request">The request.</param> /// <returns></returns> public static IQueryable<Specialty> FilterByParentSpecialtyId(this IQueryable<Specialty> query, SearchSpecialtyRequest request) { if (request.ParentSpecialtyId.HasValue) query = query.Where(i => i.ParentSpecialtyId == request.ParentSpecialtyId.Value); return query; }