private CollectionBulkOrderDeed CreateCollectionBulkOrderDeed(ImportableBulkOrderDeed bulkOrderDeed)
        {
            CollectionBulkOrderDeed retVal = null;

            var    bulkOrderDeedType = bulkOrderDeed is ImportableSmallBulkOrderDeed ? BulkOrderDeedType.Small : BulkOrderDeedType.Large;
            string professionName    = null;

            if (bulkOrderDeed.Profession == "Tailor")
            {
                professionName = "Tailoring";
            }
            else if (bulkOrderDeed.Profession == "Blacksmith")
            {
                professionName = "Blacksmithing";
            }

            var materialName = bulkOrderDeed.Material;

            if (materialName == "Golden")
            {
                materialName = "Gold";
            }

            if (professionName != null)
            {
                var profession = BulkOrderDeedManager.Instance.Professions.FirstOrDefault(p => String.Compare(p.Name, professionName, true) == 0);
                var bulkOrderDeedDefinition = BulkOrderDeedManager.Instance.GetBulkOrderDeedDefinition(profession.Name, bulkOrderDeed.Name, bulkOrderDeedType);
                var material = profession.BulkOrderDeedMaterials.Materials.FirstOrDefault(m => String.Compare(m.Name, materialName, true) == 0);

                if (bulkOrderDeed is ImportableSmallBulkOrderDeed smallBulkOrderDeed)
                {
                    retVal = new SmallCollectionBulkOrderDeed(smallBulkOrderDeed.Id, profession.Name, bulkOrderDeedDefinition.DisplayName, smallBulkOrderDeed.Quantity, smallBulkOrderDeed.Exceptional, material.Name, Guid.Empty, smallBulkOrderDeed.BulkOrderDeedBook, smallBulkOrderDeed.CompletedCount);
                }
                else if (bulkOrderDeed is ImportableLargeBulkOrderDeed largeBulkOrderDeed)
                {
                    var combined = new List <CollectionBulkOrderDeedItem>();

                    foreach (var smallBulkOrderDeedDefinition in ((LargeBulkOrderDeedDefinition)bulkOrderDeedDefinition).SmallBulkOrderDeedDefinitions)
                    {
                        var combinedSmallBulkOrderDeed = BulkOrderDeedManager.Instance.GetBulkOrderDeedDefinition(profession.Name, smallBulkOrderDeedDefinition.Name, BulkOrderDeedType.Small);
                        var isCombined = (largeBulkOrderDeed.Combined.Contains(combinedSmallBulkOrderDeed?.DisplayName));

                        combined.Add(new CollectionBulkOrderDeedItem(smallBulkOrderDeedDefinition.Name, largeBulkOrderDeed.Quantity, isCombined));
                    }

                    retVal = new LargeCollectionBulkOrderDeed(largeBulkOrderDeed.Id, profession.Name, bulkOrderDeedDefinition.DisplayName, largeBulkOrderDeed.Quantity, largeBulkOrderDeed.Exceptional, material.Name, Guid.Empty, largeBulkOrderDeed.BulkOrderDeedBook, combined);
                }
            }

            return(retVal);
        }
        private void OnAddRandomItemsCommand(object parameter)
        {
            var collection = new List <CollectionBulkOrderDeed>(BulkOrderDeedManager.Instance.Collection);

            if (collection.Count > 0)
            {
                BulkOrderDeedManager.Instance.RemoveBulkOrderDeeds(collection);
            }

            var vendors = new List <Vendor>(BulkOrderDeedManager.Instance.Vendors);

            foreach (var vendor in vendors)
            {
                BulkOrderDeedManager.Instance.RemoveVendor(vendor);
            }

            var bulkOrderDeedBooks = new List <BulkOrderDeedBook>(BulkOrderDeedManager.Instance.BulkOrderDeedBooks);

            foreach (var bulkOrderDeedBook in bulkOrderDeedBooks)
            {
                BulkOrderDeedManager.Instance.RemoveBulkOrderDeedBook(bulkOrderDeedBook);
            }

            if (!int.TryParse(_Count, out int count))
            {
                count = _DefaultCount;
            }

            // Add a standalone BOD Book.
            var unsortedBook = new BulkOrderDeedBook("Unsorted");

            BulkOrderDeedManager.Instance.AddBulkOrderDeedBook(unsortedBook);

            // Add a Vendor with a BOD Book.
            var chloeVendor = new Vendor("Chloe");
            var forSaleBook = new BulkOrderDeedBook("For Sale");

            chloeVendor.AddBulkOrderDeedBook(forSaleBook);
            BulkOrderDeedManager.Instance.AddVendor(chloeVendor);

            var bulkOrderDeeds = new List <CollectionBulkOrderDeed>();
            var random         = new Random();

            for (var index = 0; index < count; index++)
            {
                var professionIndex = random.Next(BulkOrderDeedManager.Instance.Professions.Count());
                var profession      = BulkOrderDeedManager.Instance.Professions.ToArray()[professionIndex];
                var bulkOrderDeedDefinitionIndex = random.Next(profession.BulkOrderDeedDefinitions.Definitions.Count());
                var bulkOrderDeedDefinition      = profession.BulkOrderDeedDefinitions.Definitions.ToArray()[bulkOrderDeedDefinitionIndex];
                var exceptional           = bulkOrderDeedDefinition.CanBeExceptional ? random.Next(2) == 1 : false;
                var bulkOrderDeedMaterial = profession.BulkOrderDeedMaterials?.Materials?.FirstOrDefault();
                var quantity          = BulkOrderDeedManager.PossibleQuantities[random.Next(BulkOrderDeedManager.PossibleQuantities.Length)];
                var vendor            = Vendor.None;
                var bulkOrderDeedBook = BulkOrderDeedBook.None;

                var onVendor = random.Next(2) == 1;

                if (onVendor)
                {
                    vendor = chloeVendor;

                    var inBook = random.Next(2) == 1;

                    if (inBook)
                    {
                        bulkOrderDeedBook = chloeVendor.BulkOrderDeedBooks.First();
                    }
                }
                else
                {
                    var standaloneBook = random.Next(2) == 1;

                    if (standaloneBook)
                    {
                        bulkOrderDeedBook = unsortedBook;
                    }
                }

                if (bulkOrderDeedDefinition.CanHaveMaterial)
                {
                    var bulkOrderDeedMaterialIndex = random.Next(profession.BulkOrderDeedMaterials.Materials.Count());

                    bulkOrderDeedMaterial = profession.BulkOrderDeedMaterials.Materials.ToArray()[bulkOrderDeedMaterialIndex];
                }

                if (bulkOrderDeedDefinition is SmallBulkOrderDeedDefinition smallBulkOrderDeedDefinition)
                {
                    var collectionBulkOrderDeed = new SmallCollectionBulkOrderDeed(profession, smallBulkOrderDeedDefinition, quantity, exceptional, bulkOrderDeedMaterial, vendor, bulkOrderDeedBook, random.Next(quantity));

                    bulkOrderDeeds.Add(collectionBulkOrderDeed);
                }

                if (bulkOrderDeedDefinition is LargeBulkOrderDeedDefinition largeBulkOrderDeedDefinition)
                {
                    var completedStates = new Dictionary <SmallBulkOrderDeedDefinition, bool>();

                    foreach (var largeBulkOrderDeedDefinitionItem in largeBulkOrderDeedDefinition.SmallBulkOrderDeedDefinitions)
                    {
                        completedStates[largeBulkOrderDeedDefinitionItem] = random.Next(2) == 1;
                    }

                    var collectionBulkOrderDeed = new LargeCollectionBulkOrderDeed(profession, largeBulkOrderDeedDefinition, quantity, exceptional, bulkOrderDeedMaterial, vendor, bulkOrderDeedBook, completedStates);

                    bulkOrderDeeds.Add(collectionBulkOrderDeed);
                }
            }

            BulkOrderDeedManager.Instance.AddBulkOrderDeeds(bulkOrderDeeds);
            ((Window)parameter).Close();
        }
예제 #3
0
 public SmallBulkOrderDeedViewModel(SmallCollectionBulkOrderDeed smallCollectionBulkOrderDeed)
     : base(smallCollectionBulkOrderDeed)
 {
     _SmallCollectionBulkOrderDeed = smallCollectionBulkOrderDeed;
 }