/// <summary> /// Gets the return reason codes. /// </summary> /// <param name="request">The request.</param> /// <returns>The info codes response.</returns> private static GetReturnOrderReasonCodesServiceResponse GetReturnOrderReasonCodes(GetReturnOrderReasonCodesServiceRequest request) { GetReturnOrderReasonCodesDataRequest getReturnOrderReasonCodesDataRequest = new GetReturnOrderReasonCodesDataRequest(request.QueryResultSettings); PagedResult <ReasonCode> reasonCodes = request.RequestContext.Runtime.Execute <EntityDataServiceResponse <ReasonCode> >(getReturnOrderReasonCodesDataRequest, request.RequestContext).PagedEntityCollection; SetProductIdsForUpsell(request.RequestContext, reasonCodes.Results); return(new GetReturnOrderReasonCodesServiceResponse(reasonCodes)); }
/// <summary> /// Gets the return reason code for the transaction or empty, if none. /// </summary> /// <param name="salesTransaction">The sales transaction to get the reason code from.</param> /// <param name="context">The request context.</param> /// <returns>The reason code for the transaction or empty if none.</returns> private static string GetReturnReasonCodeId(SalesTransaction salesTransaction, RequestContext context) { // transaction server expects only one reason code, so we just take it from the first line that has reason codes SalesLine firstLineWithReasonCode = salesTransaction.SalesLines.FirstOrDefault(sl => sl.ReasonCodeLines.Any()); GetReturnOrderReasonCodesDataRequest getReturnOrderReasonCodesDataRequest = new GetReturnOrderReasonCodesDataRequest(QueryResultSettings.AllRecords); ReadOnlyCollection <ReasonCode> returnOrderReasonCodes = context.Runtime.Execute <EntityDataServiceResponse <ReasonCode> >(getReturnOrderReasonCodesDataRequest, context).PagedEntityCollection.Results; ReasonCodeLine returnReasonCodeLine = firstLineWithReasonCode != null ? firstLineWithReasonCode.ReasonCodeLines.FirstOrDefault(reasonCodeLine => returnOrderReasonCodes.Any(returnOrderReasonCode => returnOrderReasonCode.ReasonCodeId == reasonCodeLine.ReasonCodeId)) : null; return((returnReasonCodeLine != null && !string.IsNullOrWhiteSpace(returnReasonCodeLine.ReasonCodeId)) ? returnReasonCodeLine.ReasonCodeId : null); }
private EntityDataServiceResponse <ReasonCode> GetReturnOrderReasonCodes(GetReturnOrderReasonCodesDataRequest request) { ThrowIf.Null(request, "request"); ThrowIf.Null(request.QueryResultSettings, "request.QueryResultSettings"); ReasonCodeL2CacheDataStoreAccessor level2CacheDataAccessor = GetReasonCodeL2CacheDataStoreAccessor(request.RequestContext); bool found; bool updateL2Cache; PagedResult <ReasonCode> result = DataManager.GetDataFromCache(() => level2CacheDataAccessor.GetReturnOrderReasonCodes(request.QueryResultSettings), out found, out updateL2Cache); if (!found) { var query = new SqlPagedQuery(request.QueryResultSettings) { From = ReturnOrderReasonCodesViewName, OrderBy = InfoCodeIdColumnName }; query.Parameters["@DataAreaId"] = request.RequestContext.GetChannelConfiguration().InventLocationDataAreaId; List <string> whereClauses = new List <string>(); whereClauses.Add(@"(DATAAREAID = @DataAreaId)"); query.Where = string.Join(" AND ", whereClauses); // Load info codes using (DatabaseContext databaseContext = new DatabaseContext(request.RequestContext)) { result = databaseContext.ReadEntity <ReasonCode>(query); } updateL2Cache &= result != null && result.Results.Count < MaxCachedCollectionSize; } if (updateL2Cache) { level2CacheDataAccessor.PutReturnOrderReasonCodes(request.QueryResultSettings, result); } return(new EntityDataServiceResponse <ReasonCode>(result)); }