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,
     });
 }
Exemple #4
0
        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),
            });
        }