예제 #1
0
        public async Task <GetRecommendedServicesResponse> GetRecommendedServices(GetRecommendedServicesRequest request, DealerConfigurationResponse dealer)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            if (dealer == null)
            {
                throw new ArgumentNullException(nameof(dealer));
            }

            var cdkRecommendedServiceRequest = MapRecommendedServicesRequest(request, dealer);

            var startTime = DateTime.Now;
            var timer     = System.Diagnostics.Stopwatch.StartNew();

            var cdkRecommendedServiceResponse = await _restfulClient.PostAsync <GetCdkRecommendedServiceRequest, CdkRecommendedServicesResponse>(
                GetRecommendedServicesUrl, cdkRecommendedServiceRequest);

            _telemetryClient?.TrackDependency("CDKAutolineService", "GetRecommendedServices",
                                              JsonConvert.SerializeObject(request), startTime,
                                              timer.Elapsed,
                                              cdkRecommendedServiceResponse != null);

            return(MapRecommendedServicesReponse(cdkRecommendedServiceResponse));
        }
예제 #2
0
        internal GetCdkRecommendedServiceRequest MapRecommendedServicesRequest(GetRecommendedServicesRequest request, DealerConfigurationResponse dealer)
        {
            var getCdkRecommendedServiceRequest = _mapper.Map <GetRecommendedServicesRequest, GetCdkRecommendedServiceRequest>(request);

            getCdkRecommendedServiceRequest.EstVehicleAgeMonths = GetEstVehicleAgeMonths(request.ModelYear);

            return(_mapper.Map(dealer, getCdkRecommendedServiceRequest));
        }
 public void SetUp()
 {
     _fixture                                 = new Fixture().Customize(new AutoMoqCustomization());
     _restfulClientMock                       = _fixture.Freeze <Mock <IRestfulClient> >();
     _getRecommendedServicesRequest           = _fixture.Create <GetRecommendedServicesRequest>();
     _getRecommendedServicesRequest.ModelYear = "2017";
     _dealerConfigurationResponse             = _fixture.Create <DealerConfigurationResponse>();
     _underTest                               = _fixture.Create <CDKAutolineService>();
 }
예제 #4
0
        public async Task <GetRecommendedServicesResponse> Get(GetRecommendedServicesRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var dealer = await _dealerService.GetDealerConfiguration(request.DealerId);

            if (dealer == null)
            {
                return(null);
            }

            return(await _cdkAutolineService.GetRecommendedServices(request, dealer));
        }
예제 #5
0
        public async Task <GetRecommendedServicesResponse> GetRecommendedServices(GetRecommendedServicesRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var requestBody = UtilityHelper.SerializeObject(new
            {
                request.RooftopId,
                request.MakeCode,
                request.ModelCode,
                request.EstOdometer,
                request.EstVehicleAgeMonths
            });

            var cdkApiRequest = new ApiRequest
            {
                Body   = requestBody,
                Method = HttpVerbs.POST.ToString(),
                Url    = CombineUrl(GetCdkAutolineUrl(_cdkAutolineUrl,
                                                      request.CommunityId), GetRecommendedServiceUrl),
                ContentType = Constants.ContentTypeJson
            };

            var appToken = await _tokenService.GetAppToken(request.CommunityId, request.RooftopId);

            AddRequestHeader(cdkApiRequest, $"{Constants.DataHubAppTokenHeaderValuePrefix}{appToken}");

            var startTime = DateTime.Now;
            var timer     = System.Diagnostics.Stopwatch.StartNew();
            var getRecommendedServiceApiResponse = await _restApiClient.Invoke <CDKRecommendedServiceResponse>(cdkApiRequest);

            _telemetryClient?.TrackDependency("CDKAutolineService", "GetRecommendedService",
                                              JsonConvert.SerializeObject(cdkApiRequest), startTime,
                                              timer.Elapsed,
                                              getRecommendedServiceApiResponse != null);
            _telemetryClient?.TrackTrace($"CDKAutolineService GetRecommendedService response: {JsonConvert.SerializeObject(getRecommendedServiceApiResponse)}");

            if (getRecommendedServiceApiResponse?.Result == null || !getRecommendedServiceApiResponse.Success ||
                !(getRecommendedServiceApiResponse.Result is CDKRecommendedServiceResponse cdkRecommendedServiceResponse))
            {
                throw new CDKAutolineException(UtilityHelper.SerializeObject(getRecommendedServiceApiResponse?.Errors));
            }

            return(cdkRecommendedServiceResponse.Results);
        }