protected async Task <int> GetTotalPages( ExerciseQuery request, bool onlyAvailable = true, int?dealerId = default, CancellationToken cancellationToken = default) { var exerciseSpecification = this.GetExerciseSpecification(request); var dealerSpecification = this.GetInstructorSpecification(request, dealerId); var totalCarAds = await this.exerciseRepository.Total( exerciseSpecification, dealerSpecification, cancellationToken); return((int)Math.Ceiling((double)totalCarAds / ExercisesPerPage)); }
protected async Task <IEnumerable <TOutputModel> > GetExercisesListings <TOutputModel>( ExerciseQuery request, //bool onlyAvailable = true, int?dealerId = default, CancellationToken cancellationToken = default) { var carAdSpecification = this.GetExerciseSpecification(request); var dealerSpecification = this.GetInstructorSpecification(request, dealerId); var searchOrder = new ExercisesSortOrder(request.SortBy, request.Order); var skip = (request.Page - 1) * ExercisesPerPage; return(await this.exerciseRepository.GetExercisesListings <TOutputModel>( carAdSpecification, dealerSpecification, searchOrder, skip, take : ExercisesPerPage, cancellationToken)); }
private Specification <Instructor> GetInstructorSpecification(ExerciseQuery request, int?instructorId) => new InstructorByIdSpecification(instructorId) .And(new InstructorByNameSpecification(request.Instructor));
private Specification <Exercise> GetExerciseSpecification(ExerciseQuery request) => new ExerciseByMuscleSpecification(request.Muscle) .And(new ExerciseByComplexitySpecification(request.Complexity));