public IList <IRmaViewModel> LoadRange(int startIndex, int count, SortDescriptionCollection sortDescriptions, out int overallCount)
        {
            var retVal = new List <IRmaViewModel>();

            using (var repository = _orderRepositoryFactory.GetRepositoryInstance())
            {
                var query = repository.RmaRequests.Expand("RmaReturnItems/RmaLineItems/LineItem,Order");
                //.Where(rma => rma.RmaReturnItems.Any(item => item.ItemState == "AwaitingReturn"));// == Enum.GetName(typeof(RmaRequestStatus), RmaRequestStatus.AwaitingStockReturn));

                if (!string.IsNullOrEmpty(SearchFilterAuthorizationCode))
                {
                    query = query.Where(x => x.AuthorizationCode.Contains(SearchFilterAuthorizationCode));
                }

                if (!string.IsNullOrEmpty(SearchFilterItemName))
                {
                    query =
                        query.Where(
                            x =>
                            x.RmaReturnItems.Any(
                                rItem => rItem.RmaLineItems.Any(lItem => lItem.LineItem.DisplayName.Contains(SearchFilterItemName))));
                }

                if (SearchFilterStatus is RmaRequestStatus)
                {
                    query = query.Where(x => x.Status == Enum.GetName(typeof(RmaRequestStatus), SearchFilterStatus));
                }

                if (!string.IsNullOrEmpty(SearchFilterCustomerName))
                {
                    query = query.Where(x => x.Order.CustomerName.Contains(SearchFilterCustomerName));
                }

                if (!string.IsNullOrEmpty(SearchFilterOrderTrackingNumber))
                {
                    query = query.Where(x => x.Order.TrackingNumber.Contains(SearchFilterOrderTrackingNumber));
                }

                if (!string.IsNullOrEmpty(SearchFilterItemCode))
                {
                    query =
                        query.Where(
                            x =>
                            x.RmaReturnItems.Any(
                                rItem => rItem.RmaLineItems.Any(lItem => lItem.LineItem.CatalogItemCode.Contains(SearchFilterItemCode))));
                }

                if (!string.IsNullOrEmpty(SearchFilterReason) &&
                    AvailableReasons.Any(reason => string.Equals(SearchFilterReason, reason)))
                {
                    query = query.Where(x => x.RmaReturnItems.Any(item => item.ReturnReason == SearchFilterReason));
                }

                overallCount = query.Count();
                var l = query.OrderByDescending(x => x.Created).Skip(startIndex).Take(count).ToList();

                retVal.AddRange(l.Select(i => _rmaVmFactory.GetViewModelInstance(new KeyValuePair <string, object>("item", i))));
            }
            return(retVal);
        }
        private async void Initialize()
        {
            QuantityToMove   = 1;
            AvailableReasons = await Task.Run(() =>
            {
                string[] result = null;
                using (var repository = _repository.GetRepositoryInstance())
                {
                    var setting = repository.Settings.Where(x => x.Name == SettingName_ReturnReasons).ExpandAll().SingleOrDefault();
                    if (setting != null)
                    {
                        result = setting.SettingValues.Select(x => x.ShortTextValue).ToArray();
                    }
                }
                return(result);
            });

            if (AvailableReasons != null)
            {
                OnPropertyChanged("AvailableReasons");
                SelectedReason = AvailableReasons.FirstOrDefault();
                OnPropertyChanged("SelectedReason");
            }
        }