Exemplo n.º 1
0
        public async Task <ActionResult <List <PagedSearchResult <EnhancedItem> > > > Get([FromQuery] EnhancedItemSearch enhancedItemSearch)
        {
            var enhancedItems = await _enhancedItemManager.SearchEnhancedItems(enhancedItemSearch);

            return(Ok(enhancedItems));
        }
        public async Task <PagedSearchResult <EnhancedItem> > SearchEnhancedItems(EnhancedItemSearch enhancedItemSearch)
        {
            var filter = "";

            if (!string.IsNullOrEmpty(enhancedItemSearch.Name))
            {
                if (!string.IsNullOrEmpty(filter))
                {
                    filter = $"{filter} and";
                }
                filter = $"{filter} Name eq '{enhancedItemSearch.Name}'";
            }
            if (enhancedItemSearch.ContentType.HasValue && enhancedItemSearch.ContentType != ContentType.None)
            {
                if (!string.IsNullOrEmpty(filter))
                {
                    filter = $"{filter} and";
                }
                filter = $"{filter} ContentType eq '{enhancedItemSearch.ContentType.ToString()}'";
            }
            if (enhancedItemSearch.RequiresAttunement.HasValue)
            {
                if (!string.IsNullOrEmpty(filter))
                {
                    filter = $"{filter} and";
                }
                filter = $"{filter} RequiresAttunement eq {enhancedItemSearch.RequiresAttunement.ToString().ToLower()}";
            }
            if (enhancedItemSearch.Rarity.HasValue && enhancedItemSearch.Rarity != EnhancedItemRarity.None)
            {
                if (!string.IsNullOrEmpty(filter))
                {
                    filter = $"{filter} and";
                }
                filter = $"{filter} SearchableRarity eq '{enhancedItemSearch.Rarity.ToString()}'";
            }
            if (enhancedItemSearch.Type.HasValue && enhancedItemSearch.Type != EnhancedItemType.None)
            {
                if (!string.IsNullOrEmpty(filter))
                {
                    filter = $"{filter} and";
                }
                filter = $"{filter} Type eq '{enhancedItemSearch.Type.ToString()}'";
            }
            if (enhancedItemSearch.AdventuringGearType.HasValue && enhancedItemSearch.AdventuringGearType != AdventuringGearType.None)
            {
                if (!string.IsNullOrEmpty(filter))
                {
                    filter = $"{filter} and";
                }
                filter = $"{filter} AdventuringGearType eq '{enhancedItemSearch.AdventuringGearType.ToString()}'";
            }
            if (enhancedItemSearch.ConsumableType.HasValue && enhancedItemSearch.ConsumableType != ConsumableType.None)
            {
                if (!string.IsNullOrEmpty(filter))
                {
                    filter = $"{filter} and";
                }
                filter = $"{filter} ConsumableType eq '{enhancedItemSearch.ConsumableType.ToString()}'";
            }
            if (enhancedItemSearch.CyberneticAugmentationType.HasValue && enhancedItemSearch.CyberneticAugmentationType != CyberneticAugmentationType.None)
            {
                if (!string.IsNullOrEmpty(filter))
                {
                    filter = $"{filter} and";
                }
                filter = $"{filter} CyberneticAugmentationType eq '{enhancedItemSearch.CyberneticAugmentationType.ToString()}'";
            }
            if (enhancedItemSearch.DroidCustomizationType.HasValue && enhancedItemSearch.DroidCustomizationType != DroidCustomizationType.None)
            {
                if (!string.IsNullOrEmpty(filter))
                {
                    filter = $"{filter} and";
                }
                filter = $"{filter} DroidCustomizationType eq '{enhancedItemSearch.DroidCustomizationType.ToString()}'";
            }
            if (enhancedItemSearch.EnhancedWeaponType.HasValue && enhancedItemSearch.EnhancedWeaponType != EnhancedWeaponType.None)
            {
                if (!string.IsNullOrEmpty(filter))
                {
                    filter = $"{filter} and";
                }
                filter = $"{filter} EnhancedWeaponType eq '{enhancedItemSearch.EnhancedWeaponType.ToString()}'";
            }
            if (enhancedItemSearch.EnhancedArmorType.HasValue && enhancedItemSearch.EnhancedArmorType != EnhancedArmorType.None)
            {
                if (!string.IsNullOrEmpty(filter))
                {
                    filter = $"{filter} and";
                }
                filter = $"{filter} EnhancedArmorType eq '{enhancedItemSearch.EnhancedArmorType.ToString()}'";
            }
            if (enhancedItemSearch.EnhancedShieldType.HasValue && enhancedItemSearch.EnhancedShieldType != EnhancedShieldType.None)
            {
                if (!string.IsNullOrEmpty(filter))
                {
                    filter = $"{filter} and";
                }
                filter = $"{filter} EnhancedShieldType eq '{enhancedItemSearch.EnhancedShieldType.ToString()}'";
            }
            if (enhancedItemSearch.FocusType.HasValue && enhancedItemSearch.FocusType != FocusType.None)
            {
                if (!string.IsNullOrEmpty(filter))
                {
                    filter = $"{filter} and";
                }
                filter = $"{filter} FocusType eq '{enhancedItemSearch.FocusType.ToString()}'";
            }
            if (enhancedItemSearch.ItemModificationType.HasValue && enhancedItemSearch.ItemModificationType != ItemModificationType.None)
            {
                if (!string.IsNullOrEmpty(filter))
                {
                    filter = $"{filter} and";
                }
                filter = $"{filter} ItemModificationType eq '{enhancedItemSearch.ItemModificationType.ToString()}'";
            }
            if (enhancedItemSearch.ValuableType.HasValue && enhancedItemSearch.ValuableType != ValuableType.None)
            {
                if (!string.IsNullOrEmpty(filter))
                {
                    filter = $"{filter} and";
                }
                filter = $"{filter} ValuableType eq '{enhancedItemSearch.ValuableType.ToString()}'";
            }
            if (enhancedItemSearch.HasPrerequisite.HasValue)
            {
                if (!string.IsNullOrEmpty(filter))
                {
                    filter = $"{filter} and";
                }
                filter = $"{filter} HasPrerequisite eq {enhancedItemSearch.HasPrerequisite.ToString().ToLower()}";
            }

            var query         = new TableQuery <EnhancedItem>().Where(filter);
            var enhancedItems = await _tableStorage.QueryAsync("enhancedItems", query);

            switch (enhancedItemSearch.EnhancedItemSearchOrdering)
            {
            case EnhancedItemSearchOrdering.None:
                break;

            case EnhancedItemSearchOrdering.NameAscending:
                enhancedItems = enhancedItems.OrderBy(p => p.Name);
                break;

            case EnhancedItemSearchOrdering.NameDescending:
                enhancedItems = enhancedItems.OrderByDescending(p => p.Name);
                break;

            case EnhancedItemSearchOrdering.ContentTypeAscending:
                enhancedItems = enhancedItems.OrderBy(p => p.ContentType);
                break;

            case EnhancedItemSearchOrdering.ContentTypeDescending:
                enhancedItems = enhancedItems.OrderByDescending(p => p.ContentType);
                break;

            case EnhancedItemSearchOrdering.RequiresAttunementAscending:
                enhancedItems = enhancedItems.OrderBy(e => e.RequiresAttunement);
                break;

            case EnhancedItemSearchOrdering.RequiresAttunementDescending:
                enhancedItems = enhancedItems.OrderByDescending(e => e.RequiresAttunement);
                break;

            case EnhancedItemSearchOrdering.RarityOptionsAscending:
                enhancedItems = enhancedItems.OrderBy(p => p.RarityOptions.FirstOrDefault());
                break;

            case EnhancedItemSearchOrdering.RarityOptionsDescending:
                enhancedItems = enhancedItems.OrderByDescending(p => p.RarityOptions.LastOrDefault());
                break;

            case EnhancedItemSearchOrdering.TypeAscending:
                enhancedItems = enhancedItems.OrderBy(p => p.Type);
                break;

            case EnhancedItemSearchOrdering.TypeDescending:
                enhancedItems = enhancedItems.OrderByDescending(p => p.Type);
                break;

            case EnhancedItemSearchOrdering.AdventuringGearTypeAscending:
                enhancedItems = enhancedItems.OrderBy(p => p.AdventuringGearType);
                break;

            case EnhancedItemSearchOrdering.AdventuringGearTypeDescending:
                enhancedItems = enhancedItems.OrderByDescending(p => p.AdventuringGearType);
                break;

            case EnhancedItemSearchOrdering.ConsumableTypeAscending:
                enhancedItems = enhancedItems.OrderBy(p => p.ConsumableType);
                break;

            case EnhancedItemSearchOrdering.ConsumableTypeDescending:
                enhancedItems = enhancedItems.OrderByDescending(p => p.ConsumableType);
                break;

            case EnhancedItemSearchOrdering.CyberneticAugmentationTypeAscending:
                enhancedItems = enhancedItems.OrderBy(p => p.CyberneticAugmentationType);
                break;

            case EnhancedItemSearchOrdering.CyberneticAugmentationTypeDescending:
                enhancedItems = enhancedItems.OrderByDescending(p => p.CyberneticAugmentationType);
                break;

            case EnhancedItemSearchOrdering.DroidCustomizationTypeAscending:
                enhancedItems = enhancedItems.OrderBy(p => p.DroidCustomizationType);
                break;

            case EnhancedItemSearchOrdering.DroidCustomizationTypeDescending:
                enhancedItems = enhancedItems.OrderByDescending(p => p.DroidCustomizationType);
                break;

            case EnhancedItemSearchOrdering.EnhancedArmorTypeAscending:
                enhancedItems = enhancedItems.OrderBy(p => p.EnhancedArmorType);
                break;

            case EnhancedItemSearchOrdering.EnhancedArmorTypeDescending:
                enhancedItems = enhancedItems.OrderByDescending(p => p.EnhancedArmorType);
                break;

            case EnhancedItemSearchOrdering.EnhancedShieldTypeAscending:
                enhancedItems = enhancedItems.OrderBy(p => p.EnhancedShieldType);
                break;

            case EnhancedItemSearchOrdering.EnhancedShieldTypeDescending:
                enhancedItems = enhancedItems.OrderByDescending(p => p.EnhancedShieldType);
                break;

            case EnhancedItemSearchOrdering.ItemModificationTypeAscending:
                enhancedItems = enhancedItems.OrderBy(p => p.ItemModificationType);
                break;

            case EnhancedItemSearchOrdering.ItemModificationTypeDescending:
                enhancedItems = enhancedItems.OrderByDescending(p => p.ItemModificationType);
                break;

            case EnhancedItemSearchOrdering.ValuableTypeAscending:
                enhancedItems = enhancedItems.OrderBy(p => p.ValuableType);
                break;

            case EnhancedItemSearchOrdering.ValuableTypeDescending:
                enhancedItems = enhancedItems.OrderByDescending(p => p.ValuableType);
                break;

            case EnhancedItemSearchOrdering.EnhancedWeaponTypeAscending:
                enhancedItems = enhancedItems.OrderBy(p => p.EnhancedWeaponType);
                break;

            case EnhancedItemSearchOrdering.EnhancedWeaponTypeDescending:
                enhancedItems = enhancedItems.OrderByDescending(p => p.EnhancedWeaponType);
                break;

            case EnhancedItemSearchOrdering.FocusTypeAscending:
                enhancedItems = enhancedItems.OrderBy(p => p.FocusType);
                break;

            case EnhancedItemSearchOrdering.FocusTypeDescending:
                enhancedItems = enhancedItems.OrderByDescending(p => p.FocusType);
                break;

            case EnhancedItemSearchOrdering.HasPrerequisiteAscending:
                enhancedItems = enhancedItems.OrderBy(p => p.HasPrerequisite);
                break;

            case EnhancedItemSearchOrdering.HasPrerequisiteDescending:
                enhancedItems = enhancedItems.OrderByDescending(p => p.HasPrerequisite);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(new PagedSearchResult <EnhancedItem>(enhancedItems.ToList(), enhancedItemSearch.PageSize, enhancedItemSearch.CurrentPage));
        }