/// <summary> /// Gets the discount codes from pricing services. /// </summary> /// <param name="request">The request.</param> /// <returns>The response.</returns> protected override GetDiscountCodesResponse Process(GetDiscountCodesRequest request) { ThrowIf.Null(request, "request"); ThrowIf.Null(request.QueryResultSettings, "request.QueryResultSettings"); // Create service request. var serviceRequest = new GetDiscountCodesServiceRequest( request.OfferId, request.DiscountCode, request.Keyword, request.ActiveDate, request.QueryResultSettings); // Execute service request. var serviceResponse = this.Context.Execute <GetDiscountCodesServiceResponse>(serviceRequest); // If no discount codes were found then attempt the search again using Barcode if (serviceResponse.DiscountCodes != null && serviceResponse.DiscountCodes.Results.Count == 0) { var scanInfo = new ScanInfo() { ScannedText = request.Keyword }; var barcodeRequest = new GetBarcodeRequest(scanInfo); GetBarcodeResponse getBarcodeResponse = this.Context.Runtime.Execute <GetBarcodeResponse>(barcodeRequest, this.Context); Barcode barcode = getBarcodeResponse.Barcode; if (barcode != null && barcode.Mask.MaskType == BarcodeMaskType.DiscountCode) { var getDiscountCodesByBarcodeServiceRequest = new GetDiscountCodesServiceRequest( request.OfferId, barcode.DiscountCode, null, request.ActiveDate, request.QueryResultSettings); serviceResponse = this.Context.Execute <GetDiscountCodesServiceResponse>(getDiscountCodesByBarcodeServiceRequest); } } // Convert service response to response. return(new GetDiscountCodesResponse(serviceResponse.DiscountCodes)); }
/// <summary> /// Gets the discount codes with offer id, or keyword, or get all if none specified. /// </summary> /// <param name="request">The request.</param> /// <returns>The discount codes.</returns> public GetDiscountCodesServiceResponse GetDiscountCodes(GetDiscountCodesServiceRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.RequestContext == null) { throw new ArgumentException("request.RequestContext is not set", "request"); } IEnumerable <DiscountCode> discountCodes = this.pricingDataManager.GetDiscountCodes(request.OfferId, request.DiscountCode, request.Keyword, request.ActiveDate); return(new GetDiscountCodesServiceResponse(discountCodes.AsPagedResult())); }
/// <summary> /// Gets the discount codes. /// </summary> /// <param name="request">The request.</param> /// <returns>The response object.</returns> private static GetDiscountCodesServiceResponse GetDiscountCodes(GetDiscountCodesServiceRequest request) { var service = Discount.Create(request.RequestContext); return(service.GetDiscountCodes(request)); }