Example #1
0
        /// <summary>
        ///     Gets the featured / top symbols of the specified category.
        /// </summary>
        /// <param name="category">A type of symbol</param>
        /// <returns><see cref="MarketCategoriesResult"/></returns>
        public async Task <MarketCategoriesResult> GetFeaturedSymbols(
            MarketCategory category)
        {
            var query = new Dictionary <string, string>
            {
                { "category", category.ToString().ToLower() }
            };

            return(await GetResult <MarketCategoriesResult>(
                       OpenbookUri.Markets.Category, query));
        }
Example #2
0
        public void GetByID_OneItem_ReturnsMarketCategory()
        {
            // Arrange
            MarketCategory entity = new MarketCategory {
                ID = 1
            };

            // Act
            MessageHub.Instance.Publish(new OnCacheObjectSet <MarketCategory>(entity));

            // Assert
            Assert.AreNotSame(entity, _cache.GetByID(1));
        }
Example #3
0
        public void GetByID_TwoItems_ReturnsCorrectObject()
        {
            // Arrange
            MarketCategory entity1 = new MarketCategory {
                ID = 1
            };
            MarketCategory entity2 = new MarketCategory {
                ID = 2
            };

            // Act
            MessageHub.Instance.Publish(new OnCacheObjectSet <MarketCategory>(entity1));
            MessageHub.Instance.Publish(new OnCacheObjectSet <MarketCategory>(entity2));

            // Assert
            Assert.AreNotSame(entity1, _cache.GetByID(1));
            Assert.AreNotSame(entity2, _cache.GetByID(2));
        }
Example #4
0
        public void GetByID_RemovedItem_ReturnsCorrectObject()
        {
            // Arrange
            MarketCategory entity1 = new MarketCategory {
                ID = 1
            };
            MarketCategory entity2 = new MarketCategory {
                ID = 2
            };

            // Act
            MessageHub.Instance.Publish(new OnCacheObjectSet <MarketCategory>(entity1));
            MessageHub.Instance.Publish(new OnCacheObjectSet <MarketCategory>(entity2));
            MessageHub.Instance.Publish(new OnCacheObjectDeleted <MarketCategory>(entity1));

            // Assert
            Assert.Throws <KeyNotFoundException>(() => { _cache.GetByID(1); });
            Assert.AreNotSame(entity2, _cache.GetByID(2));
        }
Example #5
0
        public void GetByID_NoItems_ThrowsKeyNotFoundException()
        {
            // Arrange
            MarketCategory entity1 = new MarketCategory {
                ID = 1
            };
            MarketCategory entity2 = new MarketCategory {
                ID = 2
            };

            // Act
            MessageHub.Instance.Publish(new OnCacheObjectSet <MarketCategory>(entity1));
            MessageHub.Instance.Publish(new OnCacheObjectSet <MarketCategory>(entity2));
            MessageHub.Instance.Publish(new OnCacheObjectDeleted <MarketCategory>(entity1));
            MessageHub.Instance.Publish(new OnCacheObjectDeleted <MarketCategory>(entity2));

            // Assert
            Assert.Throws <KeyNotFoundException>(() => { _cache.GetByID(1); });
            Assert.Throws <KeyNotFoundException>(() => { _cache.GetByID(2); });
        }
Example #6
0
        public static IEnumerable <ParsedItem> Parse(ItemParserSettings settings, string content)
        {
            var lines = Regex.Split(content, Environment.NewLine).Where(p => !string.IsNullOrEmpty(p));

            var items = new List <ParsedItem>();

            foreach (var l in lines.Skip(settings.HasHeader ? 1 : 0))
            {
                var fields = l.Split(',');
                var item   = new ParsedItem();
                item.Name     = fields[settings.NamePosition];
                item.Category = fields[settings.CategoryPosition];
                MarketCategory cat = MarketCategory.General;
                if (!MarketCategory.TryParse(fields[settings.MarketCategoryPosition], out cat))
                {
                    item.MarketCategoryParseError = true;
                }

                item.MarketCategory = cat;

                item.VendorSells = bool.Parse(fields[settings.VendorSellsPosition]);

                if (fields.Length > settings.VendorCostPosition)
                {
                    item.VendorCost = int.Parse(fields[settings.VendorCostPosition]);
                }
                else
                {
                    item.VendorCost = 0;
                }

                items.Add(item);
            }

            return(items);
        }
Example #7
0
        private void LoadSellItemPage()
        {
            var    player = GetPC();
            var    model  = MarketService.GetPlayerMarketData(player);
            string header;

            // A null or empty item object signifies that an item hasn't been selected for selling yet.
            // Hide all options except for "Pick Item"
            if (string.IsNullOrWhiteSpace(model.ItemObject))
            {
                int numberItemsSelling = DataService
                                         .PCMarketListing
                                         .GetAllBySellerPlayerID(player.GlobalID)
                                         .Count(x => x.DateRemoved == null &&
                                                x.DateSold == null);
                bool canSellAnotherItem = numberItemsSelling < MarketService.NumberOfItemsAllowedToBeSoldAtATime;
                header  = ColorTokenService.Green("Galactic Trade Network - Sell Item") + "\n\n";
                header += ColorTokenService.Green("Items Selling: ") + numberItemsSelling + " / " + MarketService.NumberOfItemsAllowedToBeSoldAtATime + "\n\n";

                if (canSellAnotherItem)
                {
                    header += "Please select an item to sell.";
                }
                else
                {
                    header += "You cannot sell any more items at this time.";
                }

                SetResponseVisible("SellItemPage", 1, false);              // Refresh
                SetResponseVisible("SellItemPage", 2, canSellAnotherItem); // Pick Item
                SetResponseVisible("SellItemPage", 3, false);              // Change Price
                SetResponseVisible("SellItemPage", 4, false);              // Change Seller Note
                SetResponseVisible("SellItemPage", 5, false);              // Remove Seller Note
                SetResponseVisible("SellItemPage", 6, false);              // Change Listing Length
                SetResponseVisible("SellItemPage", 7, false);              // List the Item
            }
            // Otherwise an item has already been picked.
            else
            {
                MarketCategory category = DataService.MarketCategory.GetByID(model.ItemMarketCategoryID);
                float          feeRate  = MarketService.CalculateFeePercentage(model.LengthDays);
                int            fees     = (int)(model.SellPrice * feeRate);
                if (fees < 1)
                {
                    fees = 1;
                }
                bool   canListItem = model.SellPrice > 0;
                string sellerNote  = model.SellerNote;
                if (string.IsNullOrWhiteSpace(sellerNote))
                {
                    sellerNote = "[NOT SPECIFIED]";
                }

                header  = ColorTokenService.Green("Galactic Trade Network - Sell Item") + "\n\n";
                header += ColorTokenService.Green("Item: ") + model.ItemStackSize + "x " + model.ItemName + "\n";
                header += ColorTokenService.Green("Category: ") + category.Name + "\n";

                if (model.ItemRecommendedLevel > 0)
                {
                    header += ColorTokenService.Green("Recommended Level: ") + model.ItemRecommendedLevel + "\n";
                }

                header += ColorTokenService.Green("Sell Price: ") + model.SellPrice + " credits\n";
                header += ColorTokenService.Green("Fees: ") + fees + " credits\n";
                header += ColorTokenService.Green("Listing Length: ") + model.LengthDays + " days\n";
                header += ColorTokenService.Green("Seller Note: ") + sellerNote + "\n\n";

                if (canListItem)
                {
                    header += ColorTokenService.Green("This item can be listed now.");
                }
                else
                {
                    header += ColorTokenService.Red("This item cannot be listed yet. Please confirm all details - such as pricing - have been set.");
                }

                SetResponseVisible("SellItemPage", 1, true);        // Refresh
                SetResponseVisible("SellItemPage", 2, false);       // Pick Item
                SetResponseVisible("SellItemPage", 3, true);        // Change Price
                SetResponseVisible("SellItemPage", 4, true);        // Change Seller Note
                SetResponseVisible("SellItemPage", 5, true);        // Remove Seller Note
                SetResponseVisible("SellItemPage", 6, true);        // Change Listing Length
                SetResponseVisible("SellItemPage", 7, canListItem); // List the Item
            }

            SetPageHeader("SellItemPage", header);
        }