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;
            }
        }
Exemplo n.º 2
0
    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);
     }
 }
Exemplo n.º 4
0
    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);
    }
Exemplo n.º 5
0
        public IActionResult DeleteResourceStock(int resourceStockID)
        {
            ResourceStock rs = inventoryRepository.GetResourceStock(resourceStockID);

            inventoryRepository.DeleteResourceStock(rs);

            return(RedirectToAction(nameof(Index)));
        }
Exemplo n.º 6
0
 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;
 }
Exemplo n.º 7
0
    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);
    }
Exemplo n.º 10
0
        public IActionResult UpdateResourceStock(ResourceStock resourceStock)
        {
            if (resourceStock.ResourceStockID == 0)
            {
                inventoryRepository.AddResourceStock(resourceStock);
            }
            else
            {
                inventoryRepository.UpdateResourceStock(resourceStock);
            }

            return(RedirectToAction(nameof(Index)));
        }
Exemplo n.º 11
0
    // 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;
    }
Exemplo n.º 12
0
 public override float CheckResourceQuality(ResourceStock stock)
 {
     Debug.LogError("Cannot check the quality of a ResourceTypeQuantityQuality with a float output yet");
     return(0.0F);
 }
Exemplo n.º 13
0
 public override float RemoveResource(ResourceStock stock)
 {
     Debug.LogError("Cannot remove a ResourceTypeQuantityQuality");
     return(0.0F);
 }
Exemplo n.º 14
0
 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);
Exemplo n.º 19
0
 public StorageRoom(GenericRoom r) : base()
 {
     Stock = new ResourceStock(r, ConfigManager.S.Config.NormalStorageMaxSize);
 }
Exemplo n.º 20
0
 public override void AddResource(ResourceStock stock)
 {
     Debug.LogError("Cannot add a ResourceTypeQuantityQuality to a stock");
 }