ok to add entry and new equipment in db.

This commit is contained in:
JBthePenguin 2021-06-05 11:04:30 +02:00
parent cd22b2a759
commit bd2c6f25f5
5 changed files with 64 additions and 12 deletions

View File

@ -4,7 +4,7 @@ namespace Garradin\Plugin\Materiels;
use Garradin\DB;
class Entry
class Entry // entrées définitives
{
protected $columns_order = array(
'id',
@ -23,8 +23,8 @@ class Entry
);
}
public function listEquipmentIds()
{
// return $this->kinds;
}
public function add($data = [])
{
DB::getInstance()->insert('plugin_materiels_entry', $data);
}
}

View File

@ -9,8 +9,15 @@ class Equipment
protected $columns_order = array(
'id',
'category_id',
'localisation_id',
'location_id',
'number_of_equipments',
'designation'
);
public function add($data = [])
{
$db = DB::getInstance();
$db->insert('plugin_materiels_equipment', $data);
return $db->lastInsertRowId();
}
}

View File

@ -13,7 +13,7 @@ CREATE TABLE IF NOT EXISTS plugin_materiels_location (
CREATE TABLE IF NOT EXISTS plugin_materiels_equipment (
id integer NOT NULL PRIMARY KEY autoincrement,
category_id integer NOT NULL,
localisation_id integer NOT NULL,
location_id integer NOT NULL,
number_of_equipments integer NOT NULL,
designation varchar(255) NOT NULL,
CONSTRAINT u_equipment_designation UNIQUE ( designation ),

View File

@ -15,8 +15,8 @@
{/foreach}
</select>
</dd>
{input type="date" name="date_entree" default=$date label="Date d'entrée" required=true }
{input type="number" name="number" label="Nombre d'entrée" required=true step="1" min="1" default="1"}
{input type="date" name="date_entree" default=$default_date label="Date d'entrée" required=true }
{input type="number" name="number" label="Nombre d'entrée" required=true step="1" min="1" default=$default_number}
</dl>
<fieldset>
<legend><h3>Matériel</h3></legend>

View File

@ -5,6 +5,8 @@ namespace Garradin;
use Garradin\Plugin\Materiels\Entry;
use Garradin\Plugin\Materiels\Category;
use Garradin\Plugin\Materiels\Location;
use Garradin\Plugin\Materiels\Equipment;
use Garradin\Utils;
require_once __DIR__ . '/../../_inc.php';
@ -12,6 +14,12 @@ $entry = new Entry;
$kinds = $entry->listKinds();
$selected_kind = $kinds[0];
$date = new \DateTime;
$date->setTimestamp(time());
$default_date = $date;
$default_number = "1";
$cat = new Category;
$cats = $cat->listAll();
$selected_cat = $cats[0]->id;
@ -22,11 +30,48 @@ $selected_loc = $locs[0]->id;
$csrf_key = 'add_entry';
$date = new \DateTime;
$date->setTimestamp(time());
if (f('save'))
{
$selected_kind = f('kind');
$default_date = f('date_entree');
$default_number = f('number');
$selected_cat = f('category_id');
$selected_loc = f('location_id');
if ($form->check($csrf_key) && !$form->hasErrors())
{
try
{
$eqmt = new Equipment;
$eqmt_id = $eqmt->add([
'category_id' => (int) f('category_id'),
'location_id' => (int) f('location_id'),
'number_of_equipments' => (int) f('number'),
'designation' => ucfirst(strtolower(f('designation'))),
]);
$entry->add([
'kind' => f('kind'),
'number_of_equipments' => (int) f('number'),
'equipment_id' => $eqmt_id,
'date_of_entry' => f('date_entree'),
]);
Utils::redirect(PLUGIN_URL . 'entrees/definitives/index.php');
}
catch (\RuntimeException $e)
{
if (strstr($e->getMessage(), 'UNIQUE constraint failed'))
{
$form->addError('Un matériel avec cette désignation est déjà répertorié.');
} else
{
$form->addError($e->getMessage());
}
}
}
}
$cancel_link = PLUGIN_URL . 'entrees/definitives/index.php';
$tpl->assign(compact('kinds', 'cats', 'locs', 'date', 'selected_kind', 'selected_cat', 'selected_loc', 'cancel_link', 'csrf_key'));
$tpl->assign(compact('kinds', 'date', 'cats', 'locs', 'selected_kind', 'default_date', 'default_number', 'selected_cat', 'selected_loc', 'cancel_link', 'csrf_key'));
$tpl->display(PLUGIN_ROOT . '/templates/entrees/definitives/non_repertorie.tpl');