public void CopyFrom(CatalogItem source)
 {
     _vendorId = source._vendorId;
     Description = source.Description;
     Supplier = source.Supplier;
     UnitCost = source.UnitCost;
     VendorAssignedProductId = source.VendorAssignedProductId;
 }
 public InventoryItem()
 {
     CatalogItem = new CatalogItem();
     Location = new Location();
     QtyOnHand = 0;
     ReOrderPoint = 0;
     ReOrderQuantity = 0;
 }
        public bool Contains(Location location, CatalogItem catalogItem)
        {
            foreach(InventoryItem inventoryItem in InventoryItems)
            {
                if(inventoryItem.Location.Equals(location) && inventoryItem.CatalogItem.Equals(catalogItem))
                {
                    return true;
                }
            }

            return false;
        }
 public void AddItem(CatalogItem item)
 {
     if (item is BoxedItem)
     {
         BoxedItems.Add((BoxedItem)item);
     }
     else if (item is VolumeItem)
     {
         VolumeItems.Add((VolumeItem)item);
     }
     else
     {
         CatalogItems.Add(item);
     }
 }
        public void ThrowInvalidChangeExceptionIfChangeIsNotValid(CatalogItem catalogItem)
        {
            if (catalogItem != null)
            {
                if (!(catalogItem is VolumeItem) && rdoCatalogVolume.Checked)
                {
                    throw new ApplicationException(
                        "Cannot change this item to volume type.  Please delete the item and re-enter it.");
                }

                if (!(catalogItem is BoxedItem) && rdoCatalogBox.Checked)
                {
                    throw new ApplicationException(
                        "Cannot change this item to boxed type.  Please delete the item and re-enter it.");
                }

                if ((catalogItem is BoxedItem || catalogItem is VolumeItem) && rdoCatalogSingle.Checked)
                {
                    throw new ApplicationException(
                                            "Cannot change this item to single type.  Please delete the item and re-enter it.");
                }
            }
        }
        List<InventoryItem> GetInventoryItemsForCatalog(CatalogItem item)
        {
            List<InventoryItem> inventoryItems = new List<InventoryItem>();

            foreach(InventoryItem inventoryItem in Inventory.InventoryItems)
            {
                if (inventoryItem.CatalogItem.GetType() == item.GetType() &&
                    inventoryItem.CatalogItem.Equals(item))
                {
                    inventoryItems.Add(inventoryItem);
                }
            }

            return inventoryItems;
        }
        public void RemoveCatalogItem(CatalogItem catalogItem)
        {
            List<InventoryItem> inventoryItemsToDelete = GetInventoryItemsForCatalog(catalogItem);

            DeleteInventory(inventoryItemsToDelete);
            DeleteCatalog(new List<CatalogItem>{catalogItem});
        }
        public void LoadFromXml(XElement xElement)
        {
            CatalogItems = new List<CatalogItem>();

            foreach (XElement catalogElements in xElement.Elements("CatalogItems"))
            {
                foreach (XElement catalogItemElement in catalogElements.Elements("CatalogItem") )
                {
                    CatalogItem newItem = new CatalogItem();

                    newItem.LoadFromXml(catalogItemElement);

                    CatalogItems.Add(newItem);
                }
            }

            foreach (XElement catalogElements in xElement.Elements("BoxedItems"))
            {
                foreach (XElement catalogElement in catalogElements.Elements("BoxedItem"))
                {
                    BoxedItem newItem = new BoxedItem();

                    newItem.LoadFromXml(catalogElement);

                    BoxedItems.Add(newItem);
                }
            }

            foreach (XElement catalogElements in xElement.Elements("VolumeItems"))
            {
                foreach (XElement catalogElement in catalogElements.Elements("VolumeItem"))
                {
                    VolumeItem newItem = new VolumeItem();

                    newItem.LoadFromXml(catalogElement);

                    VolumeItems.Add(newItem);
                }
            }
        }
 public void RemoveItem(CatalogItem item)
 {
     if(item is BoxedItem)
     {
         BoxedItems.Remove((BoxedItem)item);
     }
     else if(item is VolumeItem)
     {
         VolumeItems.Remove((VolumeItem)item);
     }
     else
     {
         CatalogItems.Remove(item);
     }
 }
        void SetSpecificItemCatalogAttributes(CatalogItem catalogItem)
        {
            decimal unitCost;
            decimal.TryParse(txtCatalogUnitCost.Text, out unitCost);

            if(catalogItem is BoxedItem)
            {
                BoxedItem boxedItem = catalogItem as BoxedItem;

                boxedItem.BoxCost = boxedItemDetailsControl1.BoxCost;
                boxedItem.UnitsInBox = boxedItemDetailsControl1.UnitsInBox;
            }
            else if(catalogItem is VolumeItem)
            {
                VolumeItem volumeItem = catalogItem as VolumeItem;

                volumeItem.MininumVolume = volumeItemDetailsControl1.MinimunVolume;
                volumeItem.UnitOfMeasure = volumeItemDetailsControl1.UnitOfMeasure;
                volumeItem.UnitCost = unitCost;
            }
            else
            {
                catalogItem.UnitCost = unitCost;
            }
        }
 void AddItemToCatalog(CatalogItem catalogItem)
 {
     lbxCatalogItems.Items.Add(catalogItem);
     _productGraph.Catalog.AddItem(catalogItem);
 }
        void SaveCatalogDetails()
        {
            CatalogItem catalogItem = FindCatalogItem(txtCatalogId.Text);

            if(catalogItem == null)
            {
                catalogItem = CreateNewCatalogItem();
                AddItemToCatalog(catalogItem);
            }
            else
            {
                ThrowInvalidChangeExceptionIfChangeIsNotValid(catalogItem);
            }

            catalogItem.Description = txtCatalogItemDescription.Text;
            catalogItem.Supplier = cbxCatalogVendor.SelectedItem as Vendor;
            catalogItem.VendorAssignedProductId = txtCatalogVendorProductId.Text;
            catalogItem.Comments = txtCatalogComments.Text;

            SetSpecificItemCatalogAttributes(catalogItem);

            _currentCatalogItem = catalogItem;
        }
 private void HandleCatalogSave()
 {
     try
     {
         if (CatalogDataIsValid())
         {
             SaveCatalogDetails();
             LoadCatalogTab();
             _currentCatalogItem = null;
         }
     }
     catch (Exception exception)
     {
         HandleException(exception);
     }
 }
        CatalogItem CreateNewCatalogItem()
        {
            CatalogItem catalogItem = new CatalogItem();

            if (rdoCatalogBox.Checked)
            {
                catalogItem = new BoxedItem();
            }
            else if (rdoCatalogVolume.Checked)
            {
                catalogItem = new VolumeItem();
            }
            else
            {
                catalogItem = new CatalogItem();
            }

            return catalogItem;
        }