/// <summary> /// Get item availabilities by requested item quantities. /// </summary> /// <param name="request">The request.</param> /// <returns><see cref="Response"/> object.</returns> private Response GetItemAvailabilities(GetItemAvailabilitiesDataRequest request) { var dataManager = new ItemAvailabilityDataManager(request.RequestContext); PagedResult <ItemAvailability> itemAvailabilities = null; ItemAvailabilitiesQueryCriteria criteria = request.QueryCriteria; ThrowIf.Null(criteria, "request.QueryCriteria"); if (criteria.MaxWarehousesPerItem.HasValue) { // Get item availabilities by requested item quantities. itemAvailabilities = dataManager.GetItemAvailabilitiesByItemQuantities(criteria.ItemQuantities, criteria.CustomerAccountNumber, criteria.MaxWarehousesPerItem.Value, request.QueryResultSettings); return(new EntityDataServiceResponse <ItemAvailability>(itemAvailabilities)); } if (criteria.ItemWarehouses != null) { // Get item availabilities by item and warehouse combinations. itemAvailabilities = dataManager.GetItemAvailabilitiesByItemWarehouses(criteria.ItemWarehouses, request.QueryResultSettings); return(new EntityDataServiceResponse <ItemAvailability>(itemAvailabilities)); } if (criteria.IncludeQuantities) { // Get item available quantities by items. PagedResult <ItemAvailableQuantity> itemAvailableQuantities = dataManager.GetItemAvailableQuantitiesByItems(criteria.Items, criteria.CustomerAccountNumber, request.QueryResultSettings); return(new EntityDataServiceResponse <ItemAvailableQuantity>(itemAvailableQuantities)); } // Get item availabilities by items. itemAvailabilities = dataManager.GetItemAvailabilitiesByItems(criteria.Items, criteria.CustomerAccountNumber, request.QueryResultSettings); return(new EntityDataServiceResponse <ItemAvailability>(itemAvailabilities)); }
private static GetItemAvailabilitiesByItemWarehousesServiceResponse GetItemAvailabilitiesByItemWarehouses(GetItemAvailabilitiesByItemWarehousesServiceRequest request) { QueryResultSettings settings = request.QueryResultSettings ?? QueryResultSettings.AllRecords; PagedResult <ItemAvailability> itemAvailabilities = null; try { var searchCriteria = new ItemAvailabilitiesQueryCriteria(request.ItemWarehouses); var dataRequest = new GetItemAvailabilitiesDataRequest(searchCriteria, settings); itemAvailabilities = request.RequestContext.Runtime.Execute <EntityDataServiceResponse <ItemAvailability> >(dataRequest, request.RequestContext).PagedEntityCollection; } catch (StorageException) { // supress exception in order not to block the order // raise the notification instead UnableToDetermineQuantityForStoresNotification notification = new UnableToDetermineQuantityForStoresNotification(request.ItemWarehouses); request.RequestContext.Notify(notification); } return(new GetItemAvailabilitiesByItemWarehousesServiceResponse(itemAvailabilities)); }
private static GetItemAvailableQuantitiesByItemsServiceResponse GetItemAvailableQuantitiesByItems(GetItemAvailableQuantitiesByItemsServiceRequest request) { var settings = request.QueryResultSettings ?? QueryResultSettings.AllRecords; PagedResult <ItemAvailableQuantity> itemAvailableQuantities = null; try { var searchCriteria = new ItemAvailabilitiesQueryCriteria(request.CustomerAccountNumber, request.Items, includeQuantities: true); var dataRequest = new GetItemAvailabilitiesDataRequest(searchCriteria, settings); itemAvailableQuantities = request.RequestContext.Execute <EntityDataServiceResponse <ItemAvailableQuantity> >(dataRequest).PagedEntityCollection; } catch (StorageException) { // supress exception in order to not block the order // raise the notification instead UnableToDetermineQuantityNotification notification = new UnableToDetermineQuantityNotification(request.Items); request.RequestContext.Notify(notification); } return(new GetItemAvailableQuantitiesByItemsServiceResponse(itemAvailableQuantities)); }