public async Task CompositeCourseSearch() { var courseSearchRequest = new CUIModels.CourseSearchProperties { Filters = new CUIModels.CourseSearchFilters { SearchTerm = "T Level" }, OrderedBy = CUIModels.CourseSearchOrderBy.RecentlyAdded, }; var courseSearchService = new CourseSearchApiService(findACourseClient, auditService, mapper); var searchResponse = await courseSearchService.SearchCoursesAsync(courseSearchRequest).ConfigureAwait(false); searchResponse.Should().NotBeNull(); }
public async Task CompositeCourseTownSearch() { var courseSearchRequest = new CUIModels.CourseSearchProperties { Filters = new CUIModels.CourseSearchFilters { Town = "Derby", Distance = 5, DistanceSpecified = true }, }; courseSearchRequest.Filters.CourseType.Add(CUIModels.CourseType.ClassroomBased); var courseSearchService = new CourseSearchApiService(findACourseClient, auditService, mapper); var searchResponse = await courseSearchService.SearchCoursesAsync(courseSearchRequest).ConfigureAwait(false); searchResponse.Should().NotBeNull(); searchResponse.Courses.OrderByDescending(c => c.LocationDetails.Distance).FirstOrDefault().Location.Should().Contain("Derby"); }
private static CourseSearchRequest BuildCourseSearchRequest(Comp.CourseSearchProperties input) { return(new CourseSearchRequest { Distance = input.Filters.DistanceSpecified ? input.Filters.Distance : default(float), Start = input.Count * (input.Page - 1), Limit = input.Count, DeliveryModes = input.Filters.CourseType.MapToCompositeDeliveryModes(), StudyModes = input.Filters.CourseHours.MapToCompositeStudyModes(), AttendancePatterns = input.Filters.CourseStudyTime.MapToCompositeAttendancePattern(), Town = input.Filters?.Town, Postcode = input.Filters?.PostCode, SortBy = input.OrderedBy.MapToCompositeSortBy(), StartDateFrom = input.Filters.StartDate.GetEarliestCompositeStartDate(input.Filters.StartDateFrom), SubjectKeyword = input.Filters.SearchTerm, ProviderName = input.Filters?.Provider, StartDateTo = (input.Filters.StartDateTo < DateTime.Now) ? null : input.Filters.StartDateTo.ToString("yyyy-MM-ddTHH:mm:ssZ"), Longitude = input.Filters.Longitude, Latitude = input.Filters.Latitude, }); }
public async Task <Comp.CourseSearchResult> SearchCoursesAsync(Comp.CourseSearchProperties courseSearchProperties) { if (courseSearchProperties.Filters.SearchTerm == null) { courseSearchProperties.Filters.SearchTerm = string.Empty; } var request = BuildCourseSearchRequest(courseSearchProperties); var apiResult = await findACourseClient.CourseSearchAsync(request).ConfigureAwait(false); return(new Comp.CourseSearchResult { ResultProperties = { TotalPages = apiResult?.Total == 0 ? 0 : GetTotalPages((apiResult?.Total).GetValueOrDefault(), (apiResult?.Limit).GetValueOrDefault()), TotalResultCount = (apiResult?.Total).GetValueOrDefault(), Page = apiResult?.Start == 0 ? 0 : GetCurrentPageNumber((apiResult?.Start).GetValueOrDefault(), (apiResult?.Limit).GetValueOrDefault()), OrderedBy = courseSearchProperties.OrderedBy, }, Courses = mapper.Map <List <Comp.Course> >(apiResult?.Results), }); }