public bool ResourceDepartureCheck(ResourceMovimentation data) { try { Resource res = _context.Resources.FirstOrDefault(x => x.Id == data.ResourceId); ResourceStock stock = _context.ResourceStocks.FirstOrDefault(x => x.ResourceId == data.ResourceId); int newQuantityValue = stock.Quantity - data.Quantity; if (newQuantityValue < res.MinQuantity) { return(false); } else if (newQuantityValue == res.MinQuantity) { res.Status = false; _context.Resources.Update(res); _context.SaveChanges(); return(true); } else { return(true); } } catch (System.Exception) { throw; } }
public override bool CheckResource(ResourceStock stock) { int numInStock = 0; // Find the resource indices with this type and loop over them foreach (int index in stock.typeToIndexDictionary[type]) { // if quality is not selected if (quality == QualityEnum.any) { // Check for any quality foreach (QualityEnum qVal in Enum.GetValues(typeof(QualityEnum))) { if (qVal == QualityEnum.any) // Skip "any" { continue; } else { numInStock += stock.quantity[index][(int)qVal]; } } } else // Get the number of that specific quality { numInStock = stock.quantity[index][(int)quality]; } } return(numInStock >= quantity); }
public void AddResources(ResourceStock stock) { foreach (ResourceQuantityQuality rqq in rqqList) { rqq.AddResource(stock); } }
public override bool CheckResource(ResourceStock stock) { int numInStock = 0; // if quality is not selected if (quality == QualityEnum.any) { // Check for any quality foreach (QualityEnum qVal in Enum.GetValues(typeof(QualityEnum))) { if (qVal == QualityEnum.any) // Skip "any" { continue; } else { numInStock += stock.quantity[stock.nameToIndexDictionary[name]][(int)qVal]; } } } else // Get the number of that specific quality { numInStock = stock.quantity[stock.nameToIndexDictionary[name]][(int)quality]; } return(numInStock >= quantity); }
public IActionResult DeleteResourceStock(int resourceStockID) { ResourceStock rs = inventoryRepository.GetResourceStock(resourceStockID); inventoryRepository.DeleteResourceStock(rs); return(RedirectToAction(nameof(Index))); }
public override void AddResource(ResourceStock stock) { if (quality == QualityEnum.any) { Debug.LogError("Error: no quality specified when adding resources to the stock"); } stock.quantity[stock.nameToIndexDictionary[name]][(int)quality] += quantity; }
public override float CheckResourceQuality(ResourceStock stock) { int leftToRemove = quantity; float totalMult = 0; float averageQualityMultiplierOfRemoved = 0.0F; // If quality is not selected if (quality == QualityEnum.any) { int numEnumValues = Enum.GetValues(typeof(QualityEnum)).Length; // Start at highest quality, which is numEnumValues-1, as the highest is "any" int qVal = numEnumValues - 2; while (leftToRemove > 0) // Keep removing until there are none left to remove { // How many are there in this quality bin? int quant = stock.quantity[stock.nameToIndexDictionary[name]][qVal]; if (quant >= leftToRemove) // If there are more than needed { // Add to the average quality totalMult += leftToRemove * stock.qualityMultiplier[(QualityEnum)qVal]; // Set the number to remove to zero leftToRemove = 0; } else // There are not enough { // Count what is left int numRemoved = stock.quantity[stock.nameToIndexDictionary[name]][qVal]; // Add to the average quality totalMult += numRemoved * stock.qualityMultiplier[(QualityEnum)qVal]; // Decrement the number left to remove leftToRemove -= numRemoved; } qVal++; if (qVal >= (int)QualityEnum.any) { // Not enough return(0.0F); } } averageQualityMultiplierOfRemoved = totalMult / quantity; } else { // How many are there in this quality bin? int quant = stock.quantity[stock.nameToIndexDictionary[name]][(int)quality]; if (quant >= leftToRemove) // If there are more than needed { averageQualityMultiplierOfRemoved = stock.qualityMultiplier[quality]; } else { Debug.LogError("Cannot remove enough of a resource from stock - this shouldn't happen, did I forget a check"); } } return(averageQualityMultiplierOfRemoved); }
public bool CheckResources(ResourceStock stock) { bool response = true; for (int i = 0; i < rqqList.Count; i++) { response = response & rqqList[i].CheckResource(stock); } return(response); }
public float RemoveResources(ResourceStock stock) { float totalMultiplier = 0; float resourceCount = 0; for (int i = 0; i < rqqList.Count; i++) { float thisMultiplier = rqqList[i].RemoveResource(stock); totalMultiplier += thisMultiplier * rqqList[i].quantity; resourceCount += rqqList[i].quantity; } return(totalMultiplier / resourceCount); }
public IActionResult UpdateResourceStock(ResourceStock resourceStock) { if (resourceStock.ResourceStockID == 0) { inventoryRepository.AddResourceStock(resourceStock); } else { inventoryRepository.UpdateResourceStock(resourceStock); } return(RedirectToAction(nameof(Index))); }
// Constructor // In the tile detail screen, user selects a new job. That instantiates a JobObj. // Then they user chooses the materials and hits go, that sets the job. Once it has workers // and is set, it can start and takes resources public JobObj(JobDef def) { this.isSet = false; // Has been set by the UI this.isActive = false; // Has people working it this.hasStarted = false; // Is being worked this.toDelete = false; // Trigger the JobManager to delete this job this.numWorkers = 0; this.jobDef = def; // PMU work this.currentPMURate = 0.0F; //Will be calculated this.workPMUsRemaining = this.jobDef.defaultPMUs; // Quality this.inputMaterialQualityMultiplier = 1; //Will be set by the materials this.accumulatedQualityPoints = 0; this.stock = ManagerBase.domain.stock; }
public override float CheckResourceQuality(ResourceStock stock) { Debug.LogError("Cannot check the quality of a ResourceTypeQuantityQuality with a float output yet"); return(0.0F); }
public override float RemoveResource(ResourceStock stock) { Debug.LogError("Cannot remove a ResourceTypeQuantityQuality"); return(0.0F); }
public IActionResult AddResourceStock(ResourceStock resourceStock) { inventoryRepository.AddResourceStock(resourceStock); return(RedirectToAction(nameof(Index))); }
abstract public float CheckResourceQuality(ResourceStock stock);
abstract public float RemoveResource(ResourceStock stock);
abstract public void AddResource(ResourceStock stock);
abstract public bool CheckResource(ResourceStock stock);
public StorageRoom(GenericRoom r) : base() { Stock = new ResourceStock(r, ConfigManager.S.Config.NormalStorageMaxSize); }
public override void AddResource(ResourceStock stock) { Debug.LogError("Cannot add a ResourceTypeQuantityQuality to a stock"); }