static public void ReCalcForecastItems()
        {
            forecastItems.Clear();

            foreach (ProductMasterItem productMasterItem in _productMasterList)
            {
                ForecastItem newForecastItem = new ForecastItem();
                newForecastItem.ProductCode        = productMasterItem.ProductionCode;
                newForecastItem.ProductDescription = productMasterItem.Description;

                double inventory =
                    InventoryItems.Where(x => x.ProductCode == productMasterItem.ProductionCode).Sum(x => x.Units);

                for (Int32 i = 0; i < newForecastItem.UnitsPerMonth.Length; i++)
                {
                    SalesItem[] foundItems = SalesItems.Where(x => x.MasterID == productMasterItem.MasterID &&
                                                              x.Date.Month == DateTime.Now.AddMonths(-(i + 1)).Month&& x.Date.AddYears(1).AddMonths(1) >= DateTime.Now).ToArray();

                    newForecastItem.UnitsPerMonth[i] = foundItems.Sum(x => (x.Units / productMasterItem.PiecesPerUnit));
                }

                newForecastItem.Units = inventory;

                forecastItems.Add(newForecastItem);
            }
        }
        public override void GetData()
        {
            base.GetData();
            KitDefinitions       = DesktopApplication.Librarian.GetItems(typeof(KitDefinition), new List <RetrievalCriteria>());
            Radiopharmaceuticals = DesktopApplication.Librarian.GetItems(typeof(Chemical), new List <RetrievalCriteria>());

            RetrievalCriteria        rcMin  = new RetrievalCriteria("DateAdded", CriteraType.GreaterThan, BulkDoseDateMinimum);
            List <RetrievalCriteria> rcList = new List <RetrievalCriteria>();

            rcList.Add(rcMin);
            InventoryItems = DesktopApplication.Librarian.GetItems(typeof(BaseBulkDose), rcList);



            foreach (IDataStoreItem d in InventoryItems)
            {
                (d as BaseBulkDose).UnitDoseDrawn += InventoryItemAdded;
                if (d is Elution && (d as Elution).CalibrationDate.Date == DateTime.Today)
                {
                    //&& (d as Elution).CalibrationDate.Date == DateTime.Today
                    NumberOfElutionsToday++;
                    ActivityOfElutionsToday = ActivityOfElutionsToday + ((d as Elution).CurrentActivity);
                    if ((d as IInventory).Expired)
                    {
                        DisposableItems++;
                        DisposableActivity += (d as BaseRadioactiveInventoryItem).CurrentActivity;
                    }
                }
                else if (d is ReconstitutedColdKit)
                {
                    NumberOfColdKitsToday++;
                    ActivityOfColdKitsToday += (d as ReconstitutedColdKit).CurrentActivity;
                    if ((d as IInventory).Expired)
                    {
                        DisposableItems++;
                        DisposableActivity += (d as BaseRadioactiveInventoryItem).CurrentActivity;
                    }
                }
            }

            rcMin = new RetrievalCriteria("DateAdded", CriteraType.GreaterThan, UnitDoseDateMinimum);
            rcList.Clear();
            rcList.Add(rcMin);
            foreach (IDataStoreItem d in DesktopApplication.Librarian.GetItems(typeof(BaseUnitDose), rcList))
            {
                InventoryItems.Add(d);
                NumberOfUnitDosesToday++;
                ActivityOfUnitDosesToday += (d as BaseUnitDose).CurrentActivity;
                if ((d as IInventory).Expired)
                {
                    DisposableItems++;
                    DisposableActivity += (d as BaseRadioactiveInventoryItem).CurrentActivity;
                }
            }
            rcMin = new RetrievalCriteria("DateAdded", CriteraType.GreaterThan, GeneratorDateMinimum);
            rcList.Clear();
            rcList.Add(rcMin);
            foreach (IDataStoreItem d in DesktopApplication.Librarian.GetItems(typeof(Generator), rcList))
            {
                InventoryItems.Add(d);
                (d as Generator).GeneratorEluted += InventoryItemAdded;
            }

            rcMin = new RetrievalCriteria("DateAdded", CriteraType.GreaterThan, ColdKitDateMinimum);
            rcList.Clear();
            rcList.Add(rcMin);
            foreach (IDataStoreItem d in DesktopApplication.Librarian.GetItems(typeof(Kit), rcList))
            {
                InventoryItems.Add(d);
                (d as Kit).ColdKitReconstituted += InventoryItemAdded;
            }

            foreach (IDataStoreItem d in InventoryItems)
            {
                (d as IInventory).ItemDisposed   += RadiopharmacyModule_ItemDeleted;
                (d as IInventory).ItemUnDisposed += RadiopharmacyModule_ItemUnDisposed;
            }


            var isotopes = Platform.Retriever.RetrieveItems(typeof(Isotope), new List <RetrievalCriteria>());

            System.Diagnostics.Debug.WriteLine("Isotopes.count = " + isotopes.Count);
            foreach (var i in isotopes)
            {
                IsotopeLevel lvl = new IsotopeLevel();
                lvl.Isotope         = (Isotope)i;
                lvl.CurrentActivity = InventoryItems.Where(x => x is BaseRadioactiveInventoryItem).Where(y => (y as BaseRadioactiveInventoryItem).Disposed == DisposalStatus.NotDisposed && (y as BaseRadioactiveInventoryItem).Isotope == i).Sum(z => (z as BaseRadioactiveInventoryItem).CurrentActivity);
                if (lvl.CurrentActivity > 0)
                {
                    IsotopeLevels.Add(lvl);
                }
            }
            try
            {
                var a = Platform.Retriever.RetrieveItems(typeof(BaseUnitDose)).Where(x => (x as BaseUnitDose).Disposed == DisposalStatus.NotDisposed && (x as BaseUnitDose).Expired == true);
                var b = Platform.Retriever.RetrieveItems(typeof(BaseBulkDose)).Where(x => (x as BaseBulkDose).Disposed == DisposalStatus.NotDisposed && (x as BaseBulkDose).Expired == true);
                var c = Platform.Retriever.RetrieveItems(typeof(Generator)).Where(x => (x as BaseBulkDose).Disposed == DisposalStatus.NotDisposed && (x as BaseBulkDose).Expired == true);

                NumberOfExpiredItems  = a.Count();
                NumberOfExpiredItems += b.Count();
                NumberOfExpiredItems += c.Count();

                ActivityOfExpiredItems  = a.Select(x => (x as BaseRadioactiveInventoryItem).CurrentActivity).Sum();
                ActivityOfExpiredItems += b.Select(x => (x as BaseRadioactiveInventoryItem).CurrentActivity).Sum();
                ActivityOfExpiredItems += c.Select(x => (x as BaseRadioactiveInventoryItem).CurrentActivity).Sum();
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine("Exception:  " + ex.Message);
            }
        }