public void Update(ProductType[] prodTypes, City city) { foreach (var prod in city.CurrentCityStorage.CurrentInventory) { // foreach (var prod2 in city.RequiredProducts) // prod2.StorageQuantity = storageProduct.Quantity; UpdateProductStorageQuantity(city.RequiredProducts, prod); UpdateProductStorageQuantity(city.AvailableStorage, prod); UpdateProductStorageQuantity(city.TotalProductsRequired, prod); } UpdateKeywords(city.RequiredProducts, prodTypes, city.BuildingUpgrades, null); foreach (var bu in city.BuildingUpgrades) { UpdateKeywords(bu.Products, prodTypes, null, bu); var buildingUpgradeTooltip = new StringBuilder(); buildingUpgradeTooltip.Append("<div>"); //add total hours remaining buildingUpgradeTooltip.AppendFormat("{0}:{1} hrs of {2}:{3} hrs time remaining<br/>", (bu.RemainingUpgradeTime / 60), (bu.RemainingUpgradeTime % 60), (bu.TotalUpgradeTime / 60), (bu.TotalUpgradeTime % 60)); foreach (var requiredProduct in bu.Products) { var prodType = prodTypes.First(x => x.Id == requiredProduct.ProductTypeId); var strgProd = city.CurrentCityStorage.CurrentInventory.FirstOrDefault(x => x.ProductTypeId == requiredProduct.ProductTypeId); var reequiredProductTootip = new StringBuilder(); if (strgProd != null) { requiredProduct.StorageQuantity = strgProd.Quantity ?? 0; requiredProduct.RequiredProducts = Enumerable.ToArray(prodType.RequiredProducts.ToArray().Select(Mapper.Map<Product>)); var notInStorage = strgProd.Quantity < requiredProduct.Quantity; var style = notInStorage ? "display: block; color: red" : "display: block"; buildingUpgradeTooltip.AppendFormat("<span style='{0}'>{1} {2} required of {3} in storage</span>", style, requiredProduct.Quantity, requiredProduct.Name, strgProd.Quantity); reequiredProductTootip.AppendFormat("<span style='{0}'>{1} {2} required of {3} in storage</span>", style, requiredProduct.Quantity, requiredProduct.Name, strgProd.Quantity); if (notInStorage) { foreach (var requiredSubProduct in requiredProduct.RequiredProducts) { var subStrgProd = city.CurrentCityStorage.CurrentInventory.FirstOrDefault(x => x.ProductTypeId == requiredSubProduct.ProductTypeId); if (subStrgProd != null) { requiredSubProduct.StorageQuantity = subStrgProd.Quantity ?? 0; var totalQuantityRequired = requiredSubProduct.Quantity * requiredProduct.Quantity; var subStyle = subStrgProd.Quantity < totalQuantityRequired ? "display: block; color: red" : "display: block"; reequiredProductTootip.AppendFormat("<span style='{0}'>{1} {2} required of {3} in storage</span>", subStyle, totalQuantityRequired, subStrgProd.Name, subStrgProd.Quantity); } else { buildingUpgradeTooltip.AppendFormat("<span style='display: block'>{0} {1} required", requiredSubProduct.Quantity, prodTypes.First(x => x.Id == requiredSubProduct.ProductTypeId).Name); } } } } else buildingUpgradeTooltip.AppendFormat("<span style='display: block'>{0} {1} required", requiredProduct.Quantity, requiredProduct.Name); requiredProduct.RequiredProductsToolTip = reequiredProductTootip.ToString(); } buildingUpgradeTooltip.Append("</div>"); bu.Tooltip = buildingUpgradeTooltip.ToString(); } }
public City Get(SupplyChainRequest request) { var logStart = LogHelper.StartLog("Begin Supply Chain Get", Logger); //Get the current city from the database. var currentCity = ConvertRequestToHandlerCity(request); var prodTypes = _dbContext.ProductTypes .AsQueryable() .Include(x=>x.RequiredProducts) .Include(y=>y.ManufacturerType.ProductTypes) .ToArray(); var calcRequest = new BuildingUpgradeHandlerRequest { ReturnInventory = true, ReturnFaciltiyAssignment = request.ReturnFacilityAssignment, City = Mapper.Map<Handler.Entities.City>(currentCity), ProductTypes = prodTypes }; var strgResults = CalculateNewCityStorageAmounts(request, calcRequest, prodTypes); var ret = _buldingUpgradeHandler.CalculateBuildQueue(calcRequest); var city = new City { CurrentCityStorage = Mapper.Map<CityStorage>(strgResults.CityStorage), RequiredProducts = ret.RequiredProductQueue.Select(Mapper.Map<Product>).ToArray(), RequiredProductsInCityStorage = ret.RequiredProductsInCityStorageQueue.Select(Mapper.Map<Product>).ToArray(), TotalProducts = ret.TotalProductQueue.Select(Mapper.Map<Product>).ToArray(), AvailableStorage = ret.AvailableStorage.Select(Mapper.Map<Product>).ToArray(), BuildingUpgrades = ret.OrderedUpgrades.Select(Mapper.Map<BuildingUpgrade>).ToArray().OrderBy(x=>x.Name).ToArray() }; UpdateBuildingUpgradeUiInfo(prodTypes, city); return LogHelper.EndLog(logStart, city); }
public void Update(ProductType[] prodTypes, City city) { throw new System.NotImplementedException(); }
private void UpdateBuildingUpgradeUiInfo(ProductType[] prodTypes, City city) { _buildingUiInfoUpdater.Update(prodTypes, city); }