public static HttpOperationResponse <object> MockSearchResults(CoordinatesResponse coordinatesResponse, int searchResultsCount = 200)
        {
            var _result = new HttpOperationResponse <object>();

            _result.Request  = new HttpRequestMessage();
            _result.Response = new HttpResponseMessage(HttpStatusCode.OK);

            var vacancyResults = new VacancySearchResults();

            var results = new List <Result>();


            while (results.Count != searchResultsCount)
            {
                var random = new Random();
                var id     = results.Count + 1;
                results.Add(new Result()
                {
                    Location = new Vacancies.Api.Models.Location()
                    {
                        Latitude = coordinatesResponse.Coordinates.Lat, Longitude = coordinatesResponse.Coordinates.Lon
                    },
                    Title            = $"Vacancy {id}",
                    ShortDescription = "short description of vacancy",
                    DistanceInMiles  = random.NextDouble() * 100,
                    VacancyReference = id,
                    TrainingType     = (id % 2 == 0) ? TrainingType.Framework : TrainingType.Standard
                });
            }

            vacancyResults.Results = results.ToArray();
            _result.Body           = vacancyResults;

            return(_result);
        }
コード例 #2
0
        private void SendCoordinates(string sessionQeueu)
        {
            CoordinatesResponse response = new CoordinatesResponse {
                Coordinates = ClientsList.ToArray()
            };

            channel.BasicPublish(exchange: "", routingKey: sessionQeueu, basicProperties: null, body: response.Serializer());
        }
コード例 #3
0
 public static Coordinates MapToCoordinates(this CoordinatesResponse response)
 {
     return(new Coordinates
     {
         Latitude = response.Lat,
         Longitude = response.Lon
     });
 }
コード例 #4
0
        private List <Result> GetVacancyList(int distance, CoordinatesResponse coordinates, int pageNumber = 1)
        {
            var result = (HttpOperationResponse <object>)_vacanciesApi.SearchApprenticeshipVacancies(
                coordinates.Coordinates.Lat, coordinates.Coordinates.Lon, pageNumber, 250, distance);

            var vacancyList = ((VacancySearchResults)(result).Body).Results.ToList();

            return(vacancyList);
        }
コード例 #5
0
        public HttpResponseMessage Post([FromBody] CoordinatesRequest request)
        {
            Coordinates Coordinates = new Coordinates();

            try
            {
                if (request.branch != null)
                {
                    var list = GInfraEntities.sp_polygon(request.branch).ToList();
                    if (list.Count > 0)
                    {
                        foreach (var k in list)
                        {
                            CoordinatesResponse CoordinatesResponse = new CoordinatesResponse();

                            CoordinatesResponse.Lattitude  = k.lattitude.ToString();
                            CoordinatesResponse.Longtitude = k.longitude.ToString();



                            Coordinates.Data.Add(CoordinatesResponse);
                        }
                        Coordinates.Status  = true;
                        Coordinates.Message = "Data Fetched Successfully";
                        return(Request.CreateResponse(HttpStatusCode.OK, Coordinates));
                    }
                    else
                    {
                        Coordinates.Status  = false;
                        Coordinates.Message = "No Record Found";
                        return(Request.CreateResponse(HttpStatusCode.OK, Coordinates));
                    }
                }
                else
                {
                    Coordinates.Status  = false;
                    Coordinates.Message = "BadRequest";
                    return(Request.CreateResponse(HttpStatusCode.OK, Coordinates));
                }
            }
            catch (Exception ex)
            {
                Coordinates.Status  = false;
                Coordinates.Message = "" + ex + "";
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, Coordinates));
            }
        }
コード例 #6
0
        private async Task <List <Result> > GetVacancyListByRoute(string routeId, int distance,
                                                                  CoordinatesResponse coordinates, int pageNumber = 1)
        {
            var standards = await _standardsRepository.GetByRoute(routeId);

            var result = (HttpOperationResponse <object>)_vacanciesApi.SearchApprenticeshipVacancies(
                coordinates.Coordinates.Lat, coordinates.Coordinates.Lon, pageNumber, 250, distance, string.Join(",", standards));

            if (!result.Response.IsSuccessStatusCode)
            {
                _logger.LogError($"Unable to get vacancies for {routeId} from api: {result.Response.Content.ReadAsStringAsync().Result}");
                throw new HttpOperationException(result.Response.Content.ReadAsStringAsync().Result);
            }

            var vacancyList = ((VacancySearchResults)(result).Body).Results.ToList();

            return(vacancyList);
        }
コード例 #7
0
        public async Task <CoordinatesResponse> GetFromPostCode(string postcode)
        {
            var coordinates = new Coordinates();
            var uri         = new Uri(_postcodeConfiguration.Url + "postcodes/" + postcode.Replace(" ", string.Empty));

            try
            {
                var stopwatch = Stopwatch.StartNew();
                var response  = await _retryWebRequests.Retry(() => _retryWebRequests.MakeRequestAsync(uri.ToString()), CouldntConnect);

                stopwatch.Stop();
                var responseTime = stopwatch.ElapsedMilliseconds;

                if (response.IsSuccessStatusCode)
                {
                    var value = await response.Content.ReadAsStringAsync();

                    var result = JsonConvert.DeserializeObject <PostCodeResponse>(value);
                    if (!result.Result.Latitude.HasValue || !result.Result.Longitude.HasValue)
                    {
                        return(new CoordinatesResponse
                        {
                            Coordinates = null,
                            ResponseCode = LocationLookupResponse.MissingCoordinates
                        });
                    }

                    coordinates.Lat = result.Result.Latitude.Value;
                    coordinates.Lon = result.Result.Longitude.Value;

                    SendDependencyLog(response.StatusCode, uri, responseTime);

                    var coordinateResponse = new CoordinatesResponse
                    {
                        Coordinates  = coordinates,
                        Country      = result.Result.Country,
                        ResponseCode = LocationLookupResponse.Ok
                    };

                    return(coordinateResponse);
                }

                if (response.StatusCode == HttpStatusCode.InternalServerError)
                {
                    LogInformation(postcode, uri, response, responseTime, "Postcodes.IO-ServerError", "Server error trying to find postcode");

                    return(new CoordinatesResponse
                    {
                        Coordinates = null,
                        ResponseCode = LocationLookupResponse.ServerError
                    });
                }

                LogInformation(postcode, uri, response, responseTime, "Postcodes.IO-PostCodeNotFound", "Unable to find coordinates for postcode");

                return(new CoordinatesResponse
                {
                    Coordinates = null,
                    ResponseCode = LocationLookupResponse.WrongPostcode
                });
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"Unable to connect to Postcode lookup servce. Url: {uri}");

                throw new Exception("Unable to connect to Post Code Lookup service", ex);
            }
        }