public ICollection <DistributionCenterLossesView> DisributionCenterLosses()
        {
            //Get all distributionCener
            List <DistributionCenter> distriutionCenters = distributionCenterDao.GetAllDistributionCenter();

            //Add each distribution centers in distributionCenter Loss view item
            foreach (DistributionCenter cent in distriutionCenters)
            {
                DistributionCenterLossesView distLossView = new DistributionCenterLossesView();
                distLossView.Center = cent;

                //Calculate Total Loss
                ICollection <Package> lostPackages = reportDao.PackageByCenter(cent.DistributionCenterID, StockType.Lost);
                foreach (Package pack in lostPackages)
                {
                    distLossView.LossPackageValue += pack.Medication.Quantity.Value * pack.Medication.Value.Value;
                }
                //Calculate Total Discarded
                ICollection <Package> discardedPackages = reportDao.PackageByCenter(cent.DistributionCenterID, StockType.Discarded);
                foreach (Package pack in discardedPackages)
                {
                    distLossView.DiscardedPackageValue += pack.Medication.Quantity.Value * pack.Medication.Value.Value;
                }
                //Calculate Total Distributed
                ICollection <Package> distributedPackages = reportDao.PackageByCenter(cent.DistributionCenterID, StockType.Distributed);
                foreach (Package pack in distributedPackages)
                {
                    distLossView.DistributedPackageValue += pack.Medication.Quantity.Value * pack.Medication.Value.Value;
                }

                //Calcuate Loss Ratio (#Lost + #Discarded) / (#Distributed + #Lost + #Discarded)
                double num = (distLossView.LossPackageValue + distLossView.DiscardedPackageValue);
                double den = distLossView.DistributedPackageValue + distLossView.LossPackageValue + distLossView.DiscardedPackageValue;
                if (den != 0)
                {
                    distLossView.LossRatio = num / den * 100;
                }

                //total value of lost/discarded
                if (distLossView.DiscardedPackageValue != 0)
                {
                    distLossView.LossPerDiscarded = distLossView.LossPackageValue / distLossView.DiscardedPackageValue;
                }
                centerLossView.Add(distLossView);
            }
            return(centerLossView);
        }
        public void PackageByCenterTest()
        {
            int centerID    = 1;
            var packageList = reportDao.PackageByCenter(centerID, StockType.InTransit);
            var test        = from p in reportDao.Packages
                              where p.DistributionCenterID == centerID && p.StockStatus == StockType.InTransit
                              select p;

            Assert.AreEqual(packageList.Count(), test.Count());
        }