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()); }