public void scenario_10() { var propertyUpgradeUoW = new Mock<IPropertyUpgradeUoW>(); propertyUpgradeUoW.Setup(x => x.ProductTypeRepository.Get()) .Returns(GetDomainProductTypes()); var calculator = new CityStorageCalculator(propertyUpgradeUoW.Object); var cityStorage = GetCityStorage(); cityStorage.CurrentInventory.First(x => x.ProductTypeId == 1).Quantity = 8; cityStorage.CurrentInventory.First(x => x.ProductTypeId == 2).Quantity = 8; cityStorage.CurrentInventory.First(x => x.ProductTypeId == 3).Quantity = 8; cityStorage.CurrentInventory.First(x => x.ProductTypeId == 4).Quantity = 8; var request = new CalculateStorageRequest { CityStorage = cityStorage, NewProductQuantities = new[] { new SimGame.Handler.Entities.Product { ProductTypeId = 3, Quantity = 2 }, } }; var ret = calculator.CalculateNewStorageAmounts(request); ret.CityStorage.CurrentInventory.First(x => x.ProductTypeId == 4).Quantity.ShouldEqual(6); ret.CityStorage.CurrentInventory.First(x => x.ProductTypeId == 3).Quantity.ShouldEqual(10); ret.CityStorage.CurrentInventory.First(x => x.ProductTypeId == 2).Quantity.ShouldEqual(8); ret.CityStorage.CurrentInventory.First(x => x.ProductTypeId == 1).Quantity.ShouldEqual(8); }
public CalculateStorageResponse CalculateNewStorageAmounts(CalculateStorageRequest calculateStorageRequest) { if (ValidateRequest(calculateStorageRequest)) return new CalculateStorageResponse { CityStorage = calculateStorageRequest.CityStorage }; _productTypes = GetProductTypes(calculateStorageRequest); foreach (var updateProduct in calculateStorageRequest.NewProductQuantities) { AddTopLevelProductToCityStorage(updateProduct, calculateStorageRequest.CityStorage); } return new CalculateStorageResponse { CityStorage = calculateStorageRequest.CityStorage }; }
private ProductType[] GetProductTypes(CalculateStorageRequest calculateStorageRequest) { if (calculateStorageRequest.ProductTypes != null) return calculateStorageRequest.ProductTypes; return _propertyUpgradeUoW.ProductTypeRepository.Get().ToArray(); }
private static bool ValidateRequest(CalculateStorageRequest calculateStorageRequest) { return calculateStorageRequest == null || calculateStorageRequest.CityStorage == null || calculateStorageRequest.CityStorage.CurrentInventory == null || calculateStorageRequest.NewProductQuantities == null; }
public CalculateStorageResponse CalculateNewStorageAmounts(CalculateStorageRequest calculateStorageRequest) { throw new System.NotImplementedException(); }
private CalculateStorageResponse CalculateNewCityStorageAmounts(SupplyChainRequest request, BuildingUpgradeHandlerRequest calcRequest, ProductType[] productTypes) { var strgResults = new CalculateStorageResponse { CityStorage = calcRequest.City.CurrentCityStorage }; //If we have products queued for production then calculate the new city storage. if (request.RequiredProductUpdates == null) return strgResults; var calculateStorageRequest = new CalculateStorageRequest { ProductTypes = productTypes, NewProductQuantities = request.RequiredProductUpdates.Select(Mapper.Map<Handler.Entities.Product>).ToArray(), CityStorage = calcRequest.City.CurrentCityStorage }; return _cityStorageCalculator.CalculateNewStorageAmounts(calculateStorageRequest); }