Example #1
0
        public async Task <GetFrameworkResponse> Handle(GetFrameworkQuery message, CancellationToken cancellationToken)
        {
            var result   = _validator.Validate(message);
            var response = new GetFrameworkResponse();

            if (!result.IsValid && result.Errors.Any(x => x.ErrorCode == ValidationCodes.InvalidId))
            {
                response.StatusCode = GetFrameworkResponse.ResponseCodes.InvalidFrameworkId;
                return(response);
            }

            var framework = _getFrameworks.GetFrameworkById(message.Id);

            if (framework == null)
            {
                _logger.Warn($"Not possible to get framework {message.Id}");
                response.StatusCode = GetFrameworkResponse.ResponseCodes.FrameworkNotFound;

                return(response);
            }

            if (!framework.IsActiveFramework)
            {
                _logger.Warn($"Framework {message.Id} is not active");

                response.StatusCode = GetFrameworkResponse.ResponseCodes.Gone;

                return(response);
            }

            response.Framework   = framework;
            response.SearchTerms = message.Keywords;

            return(response);
        }
        private void EnrichFramework(ApprenticeshipFavouriteRead apprenticeship)
        {
            var framework = _getFrameworks.GetFrameworkById(apprenticeship.ApprenticeshipId);

            apprenticeship.Title              = framework.Title;
            apprenticeship.Duration           = framework.Duration;
            apprenticeship.Level              = framework.Level;
            apprenticeship.EffectiveTo        = framework.EffectiveTo;
            apprenticeship.ApprenticeshipType = ApprenticeshipType.Framework;
            apprenticeship.Active             = framework.IsActiveFramework;
        }
        public Framework Get(string id)
        {
            var response = _getFrameworks.GetFrameworkById(id);

            if (response == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }

            response.Uri = Resolve(response.FrameworkId);
            return(response);
        }
        private ApprenticeshipProviderDetailResponse GetFramework(ApprenticeshipProviderDetailQuery message)
        {
            var model = _apprenticeshipProviderRepository.GetCourseByFrameworkId(
                message.UkPrn,
                message.LocationId,
                message.FrameworkId);

            var apprenticeshipProduct = _getFrameworks.GetFrameworkById(message.FrameworkId);

            var response = CreateResponse(model, apprenticeshipProduct, ApprenticeshipTrainingType.Framework);

            response.RegulatedApprenticeship = false;
            return(response);
        }
        public ActionResult <Framework> Get(string id)
        {
            var response = _getFrameworks.GetFrameworkById(id);

            if (response == null)
            {
                return(NotFound());
            }

            response.Uri       = Resolve(response.FrameworkId);
            response.Providers = ResolveProvidersUrl(id);

            return(response);
        }
        public ActionResult <IEnumerable <Provider> > GetFrameworkProviders(string frameworkId)
        {
            if (_getFrameworks.GetFrameworkById(frameworkId) == null)
            {
                return(NotFound($"The framework {frameworkId} is not found, it should be in the format {{framework code}}-{{program type}}-{{pathway code}}"));
            }

            var response = _getProviders.GetProvidersByFrameworkId(frameworkId);

            var providersList = response.GroupBy(x => x.Ukprn).Select(x => x.First());

            var ukprns = providersList.Select(item => item.Ukprn).Select(dummy => (long)dummy).ToList();

            return(_getProviders.GetProviderByUkprnList(ukprns).ToList());
        }
Example #7
0
        public async Task <GetFrameworkProvidersResponse> Handle(GetFrameworkProvidersQuery message, CancellationToken cancellationToken)
        {
            var framework = _getFrameworks.GetFrameworkById(message.FrameworkId);

            if (framework == null)
            {
                return(new GetFrameworkProvidersResponse
                {
                    StatusCode = GetFrameworkProvidersResponse.ResponseCodes.NoFrameworkFound
                });
            }

            return(new GetFrameworkProvidersResponse
            {
                FrameworkId = framework.FrameworkId,
                Title = framework.Title,
                Keywords = message.Keywords,
                Postcode = message.Postcode,
                Level = framework.Level
            });
        }
        public async Task <ProviderSearchResults> SearchProviders(string apprenticeshipId, string postCode, Pagination pagination, IEnumerable <string> deliveryModes, bool hasNonLevyContract, bool showNationalOnly, int orderBy = 0)
        {
            if (string.IsNullOrEmpty(postCode))
            {
                return(new ProviderSearchResults {
                    ApprenticeshipId = apprenticeshipId, PostCodeMissing = true
                });
            }

            int apprenticeshipIdInt;

            IApprenticeshipProduct apprenticeship;

            if (int.TryParse(apprenticeshipId, out apprenticeshipIdInt))
            {
                apprenticeship = _getStandards.GetStandardById(apprenticeshipId);
            }
            else
            {
                apprenticeship = _getFrameworks.GetFrameworkById(apprenticeshipId);
            }

            if (apprenticeship == null)
            {
                return(GetProviderSearchResultErrorResponse(apprenticeshipId, null, postCode, LocationLookupResponse.ApprenticeshipNotFound));
            }

            try
            {
                var coordinateResponse = await _postCodeLookup.GetLatLongFromPostCode(postCode);

                var coordinates = coordinateResponse.Coordinate;


                if (coordinateResponse.ResponseCode != LocationLookupResponse.Ok)
                {
                    return(GetProviderSearchResultErrorResponse(apprenticeshipId, apprenticeship?.Title, postCode, coordinateResponse.ResponseCode));
                }

                var takeElements = pagination.Take == 0 ? _paginationSettings.DefaultResultsAmount : pagination.Take;

                LogSearchRequest(postCode, coordinates);

                var filter = new ProviderSearchFilter
                {
                    DeliveryModes      = deliveryModes,
                    HasNonLevyContract = hasNonLevyContract,
                    ShowNationalOnly   = showNationalOnly
                };

                var searchResults = await _providerSearchProvider.SearchProvidersByLocation(apprenticeshipId, coordinates, pagination.Page, takeElements, filter, orderBy);

                var result = new ProviderSearchResults
                {
                    TotalResults               = searchResults.Total,
                    ResultsToTake              = takeElements,
                    ApprenticeshipId           = apprenticeshipId,
                    Title                      = apprenticeship?.Title,
                    Level                      = apprenticeship.Level,
                    PostCode                   = postCode,
                    TrainingOptionsAggregation = searchResults.TrainingOptionsAggregation,
                    NationalProviders          = searchResults.NationalProvidersAggregation,
                    SelectedTrainingOptions    = deliveryModes,
                    ResponseCode               = LocationLookupResponse.Ok,
                    ShowNationalProvidersOnly  = false,
                    Hits     = searchResults.Hits,
                    LastPage = takeElements > 0 ? (int)System.Math.Ceiling((double)searchResults.Total / takeElements) : 1
                };

                return(result);
            }
            catch (SearchException ex)
            {
                _logger.Error(ex, "Search for provider failed.");

                return(GetProviderSearchResultErrorResponse(apprenticeshipId, apprenticeship?.Title, postCode, ServerLookupResponse.InternalServerError));
            }
        }