public function checkout($params)
 {
     $issue = $params['issue'];
     $description = $this->request->getParameter('description');
     $connection = new Connection();
     // get the vehicle form the issue number
     $SQL = "SELECT idVehicle FROM VehicleReportedIssues WHERE idReportedIssues = :issue";
     $statement = new Statement($connection);
     $statement->setInt('issue', $issue);
     $vehicle = $statement->select($SQL)->first()['idVehicle'];
     // insert the vehicle to maintenance
     $SQL = 'INSERT INTO Maintenance (_idVehicle, BriefDescription, MaintenanceEntryDate)
         VALUES (:vehicle, :description, CURRENT_TIMESTAMP)';
     $statement = new Statement($connection);
     $statement->setInt('vehicle', $vehicle);
     $statement->setInt('description', $description);
     $log = $statement->insert($SQL);
     // update the reported issues table
     $SQL = 'UPDATE ReportedIssues SET _MaintenanceLogNumber = :log WHERE idReportedIssues = :issue';
     $statement = new Statement($connection);
     $statement->setInt('log', $log);
     $statement->setInt('issue', $issue);
     $statement->update($SQL);
     header('Location:/mechanic');
 }
 public function generatePartsInventory()
 {
     // get part types
     $SQL = "SELECT * FROM PartType";
     $statement = new Statement($this->connection);
     $data = $statement->select($SQL)->all();
     $mechanic = 11;
     $loc = "0000000000";
     foreach ($data as $d) {
         $part = $d['idPartType'];
         for ($i = 0; $i < 15; $i++) {
             $insert = 'INSERT INTO PartsInventory (_idPartType, _MechanicIn, DateIn, Location)
                VALUES (:type, :mechanic, CURRENT_TIMESTAMP, :loc)';
             $statement = new Statement($this->connection);
             $statement->setInt("type", $part);
             $statement->setInt("mechanic", $mechanic);
             $statement->setStr("loc", $loc);
             $statement->insert($insert);
         }
     }
     $SQL = "SELECT * FROM PartsInventory";
     $statement = new Statement($this->connection);
     $data = $statement->select($SQL)->all();
     var_dump($data);
 }
 public function insert($resID, $totalCost, $totalMileage, $fuel)
 {
     $SQL = 'INSERT INTO Billings (_idReservations, TotalCost, TotalMileage, FuelCost)
         VALUES (:id, :cost, :mileage, :fuel)';
     $statement = new Statement($this->connection);
     $statement->setInt("id", $resID)->setStr("cost", $totalCost);
     $statement->setInt("mileage", $totalMileage)->setStr("fuel", $fuel);
     return $statement->insert($SQL);
 }
 /**
  * Add new Maintenance Item
  *
  */
 public function add($params)
 {
     $errors = [];
     $log = $params['log'];
     $mechanic = Session::get('id');
     $input = $this->request->getParameters();
     $description = array_shift($input);
     $parts = [];
     foreach ($input as $key => $value) {
         if ((int) $value > 0) {
             $part = ['id' => (int) preg_replace('/^part-/', '', $key), 'count' => (int) $value];
             $parts[] = $part;
         }
     }
     // insert
     $SQL = 'INSERT INTO MaintenanceItem (_MaintenanceLogNumber, ItemDescription) VALUES  (:log, :description)';
     $statement = new Statement(new Connection());
     $statement->setInt('log', $log);
     $statement->setStr('description', $description);
     $item = $statement->insert($SQL);
     // $SQL = 'Call UsePart(:mechanic, :item, :part)';
     $SQL = 'INSERT INTO PartsUsed (_idPartsInventory, _MechanicOut, _idMaintenanceItem, DateOut)
         SELECT idPartsInventory, :mechanic, :item, CURRENT_TIMESTAMP FROM PartsInventory i
         WHERE i.idPartsInventory NOT IN (SELECT _idPartsInventory FROM PartsUsed)
         AND i._idPartType IN (SELECT idPartType FROM PartType WHERE idPartType = :part)
         ORDER BY DateIn DESC
         LIMIT 1';
     $statement = new Statement(new Connection());
     $statement->prepare($SQL);
     $statement->setInt('mechanic', $mechanic);
     $statement->setInt('item', $item);
     foreach ($parts as $part) {
         $statement->setInt('part', $part['id']);
         $statement->bindParams();
         for ($i = 0; $i < $part['count']; $i++) {
             $id = $statement->execute()->lastID();
             // to do
             // error needs to be displayed when insert fails.
         }
     }
     if ($errors) {
         $params = ['log' => $log, 'errors' => $errors];
         $this->display($params);
     }
     header("Location: /maintenance/log/{$log}");
 }