materiels/src/lib/Output.php

107 lines
2.8 KiB
PHP

<?php
namespace Garradin\Plugin\Materiels;
use Garradin\DB;
use Garradin\Plugin\Materiels\Equipment;
use Garradin\Plugin\Materiels\Entry;
class Output
{
public function listKinds()
{
return array(
'Vente',
'Don',
'Besoin',
'Autre (perte, vol, ...)',
'Location / Prêt',
);
}
public function add($data = [])
{
DB::getInstance()->insert('plugin_materiels_output', $data);
}
public function get($id)
{
return DB::getInstance()->first('SELECT * FROM plugin_materiels_output WHERE id = ?;', $id);
}
public function delete($id)
{
DB::getInstance()->delete('plugin_materiels_output', 'id = ' . $id);
}
public function listAll()
{
return DB::getInstance()->get('SELECT * FROM plugin_materiels_output ORDER BY output_date DESC;');
}
public function PossibilityOwnedEqmtOutput($id, $eqmt_number, $date)
{
$after_output_dates = DB::getInstance()->get(
"SELECT output_date FROM plugin_materiels_output WHERE kind IN (
'Vente', 'Don', 'Besoin', 'Autre (perte, vol, ...)',
'Location / Prêt') AND equipment_id = '{$id}' AND output_date > '{$date}';");
$output_dates = array($date);
foreach ($after_output_dates as $row)
{
array_push($output_dates, $row->output_date);
}
$eqmt = new Equipment;
foreach ($output_dates as $output_date) {
$available_eqmt = $eqmt->CalculateAvailableByDate($id, $output_date);
if ($available_eqmt - $eqmt_number < 0)
{
return false;
}
}
return true;
}
public function PossibilityNoOwnedEqmtOutput($id, $eqmt_number, $date)
{
$after_output_dates = DB::getInstance()->get(
"SELECT output_date FROM plugin_materiels_output WHERE kind = 'Retour de location / prêt' AND equipment_id = '{$id}' AND output_date > '{$date}';");
$output_dates = array($date);
foreach ($after_output_dates as $row)
{
array_push($output_dates, $row->output_date);
}
$eqmt = new Equipment;
foreach ($output_dates as $output_date) {
$borrowed_eqmt = $eqmt->CalculateNoOwnedByDate($id, $output_date);
if ($borrowed_eqmt - $eqmt_number < 0)
{
return false;
}
}
return true;
}
public function PossibilityDeleteOutput($output)
{
$entry = new Entry;
if ($output->kind == 'Location / Prêt')
{
return $entry->PossibilityRentEqmtEntry(
$output->equipment_id, $output->equipment_number, $output->output_date);
}
return true;
}
public function AllDatesByEquipment($eqmt_id)
{
$output_dates = DB::getInstance()->get(
'SELECT DISTINCT output_date FROM plugin_materiels_output WHERE equipment_id = ? ORDER BY output_date DESC;', $eqmt_id);
$output_dates_array = array();
foreach ($output_dates as $row)
{
array_push($output_dates_array, $row->output_date);
}
return $output_dates_array;
}
}