public async Task <GetAllJobsByFilterResponse> GetAllJobsByFilter(GetAllJobsByFilterRequest request)
        {
            string path = $"/api/GetAllJobsByFilter";

            using (HttpResponseMessage response = await _httpClientWrapper.GetAsync(HttpClientConfigName.RequestService, path, request, CancellationToken.None).ConfigureAwait(false))
            {
                string jsonResponse = await response.Content.ReadAsStringAsync();

                var getJobsResponse = JsonConvert.DeserializeObject <ResponseWrapper <GetAllJobsByFilterResponse, RequestServiceErrorCode> >(jsonResponse);
                if (getJobsResponse.HasContent && getJobsResponse.IsSuccessful)
                {
                    return(getJobsResponse.Content);
                }
                else
                {
                    if (response.StatusCode == System.Net.HttpStatusCode.BadRequest)
                    {
                        throw new BadRequestException($"GetAllJobsByFilter Returned a bad request");
                    }
                    else
                    {
                        throw new InternalServerException($"GetAllJobsByFilter Returned {jsonResponse}");
                    }
                }
            }
        }
Exemple #2
0
        public async Task <GetAllJobsByFilterResponse> GetAllJobsByFilterAsync(GetAllJobsByFilterRequest request)
        {
            var response = await PostAsync <BaseRequestHelpResponse <GetAllJobsByFilterResponse> >($"/api/GetAllJobsByFilter", request);

            if (response.HasContent && response.IsSuccessful)
            {
                return(response.Content);
            }
            throw new Exception("GetJobsByFilter call failed");
        }
Exemple #3
0
        public async Task <IEnumerable <JobSummary> > GetJobsForUserAsync(int userId, bool waitForData, CancellationToken cancellationToken)
        {
            NotInCacheBehaviour notInCacheBehaviour = waitForData ? NotInCacheBehaviour.WaitForData : NotInCacheBehaviour.DontWaitForData;

            var jobs = await _memDistCache.GetCachedDataAsync(async (cancellationToken) =>
            {
                var request = new GetAllJobsByFilterRequest {
                    AllocatedToUserId = userId
                };
                var response = await _requestHelpRepository.GetAllJobsByFilterAsync(request);
                return(response.JobSummaries);
            }, $"{CACHE_KEY_PREFIX}-user-{userId}-accepted-jobs", RefreshBehaviour.DontWaitForFreshData, cancellationToken, notInCacheBehaviour);

            if (jobs != null)
            {
                return(jobs.OrderOpenJobsForDisplay());
            }
            throw new Exception($"Unable to get jobs for user {userId}");
        }
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]
            GetAllJobsByFilterRequest req,
            CancellationToken cancellationToken)
        {
            try
            {
                _logger.LogInformation("GetAllJobsByFilter started");
                GetAllJobsByFilterResponse response = await _mediator.Send(req, cancellationToken);

                return(new OkObjectResult(ResponseWrapper <GetAllJobsByFilterResponse, RequestServiceErrorCode> .CreateSuccessfulResponse(response)));
            }
            catch (PostCodeException exc)
            {
                _logger.LogErrorAndNotifyNewRelic($"{req.Postcode} is an invalid postcode", exc);
                return(new ObjectResult(ResponseWrapper <GetAllJobsByFilterResponse, RequestServiceErrorCode> .CreateUnsuccessfulResponse(RequestServiceErrorCode.ValidationError, "Invalid Postcode"))
                {
                    StatusCode = StatusCodes.Status400BadRequest
                });
            }
            catch (InvalidFilterException exc)
            {
                _logger.LogErrorAndNotifyNewRelic($"invalid filter", exc);
                return(new ObjectResult(ResponseWrapper <GetAllJobsByFilterResponse, RequestServiceErrorCode> .CreateUnsuccessfulResponse(RequestServiceErrorCode.ValidationError, "Invalid filter combination"))
                {
                    StatusCode = StatusCodes.Status400BadRequest
                });
            }
            catch (Exception exc)
            {
                _logger.LogErrorAndNotifyNewRelic("Exception occured in GetAllJobsByFilter", exc);
                return(new ObjectResult(ResponseWrapper <GetAllJobsByFilterResponse, RequestServiceErrorCode> .CreateUnsuccessfulResponse(RequestServiceErrorCode.InternalServerError, "Internal Error"))
                {
                    StatusCode = StatusCodes.Status500InternalServerError
                });
            }
        }