public function getMaterials($bpTypeID, $typeID, $pe = 0, $me = 0, $peSkill = 5)
 {
     //Get the blueprint details
     $blueprint = InvBlueprintTypes::Model()->findByPk($bpTypeID);
     //Get the invType material base requirements
     $requirements = InvTypeMaterials::Model()->findAll('typeID=:typeID', array(':typeID' => $typeID));
     //Loop through each mineral or part
     foreach ($requirements as $requirement) {
         //Get the invType details for each material
         $invType = Invtypes::Model()->findByPk($requirement->materialTypeID);
         $adjustedRequirements[] = array('typeName' => $invType->typeName, 'typeID' => $requirement->materialTypeID, 'quantity' => round($requirement->quantity * (1 + $blueprint->wasteFactor / (1 + $me) + (0.25 - 0.05 * $peSkill))));
     }
     return $adjustedRequirements;
 }
 public function getTotalMineralRequirements($getMaterialsArray)
 {
     foreach ($getMaterialsArray as $part) {
         //Get the invType material base requirements
         $requirements = InvTypeMaterials::Model()->findAll('typeID=:typeID', array(':typeID' => $part['typeID']));
         foreach ($requirements as $requirement) {
             //Get the invType details for each material
             $invType = Invtypes::Model()->findByPk($requirement->materialTypeID);
             $mineralName = $invType->typeName;
             $minerals[$mineralName]['typeID'] = $requirement->materialTypeID;
             $minerals[$mineralName]['quantity'] += $requirement->quantity * $part['quantity'];
         }
     }
     return $minerals;
 }