Files
BugReport/backend/src/Models/Projects.php
T
veronika b747b586b3 added CRUD for Projects,
added set project for report
2026-08-22 23:48:15 +02:00

109 lines
2.8 KiB
PHP

<?php
/*
TPsoft.org 2000-2026
file for controlers/*.php
Milestones:
2026-08-22 20:39 Created
*/
namespace TPsoft\BugreportBackend\Models;
class Projects extends \TPsoft\DBmodel\DBmodel {
public $tables = array(
'projects' => array(
'name' => 'projects',
'primary_key_name' => 'project_id',
'allow_attributes' => array(
'project_name' => 'VARCHAR(255)',
'project_code' => 'VARCHAR(64)',
'project_color' => 'VARCHAR(7)',
'project_active' => 'INTEGER',
'project_system' => 'INTEGER',
'created_dt' => 'DATETIME',
'updated_dt' => 'DATETIME'
)
),
);
public function exist($primary_key = null) {
return $this->existRecord('projects', $primary_key);
}
public function project($primary_key = null, $data = array()) {
if (is_null($primary_key)
&& !isset($data['created_dt']))
{
$data['created_dt'] = date('Y-m-d H:i:s');
}
if (!is_null($primary_key)
&& is_array($data)
&& count($data) > 0
&& !isset($data['updated_dt']))
{
$data['updated_dt'] = date('Y-m-d H:i:s');
}
return $this->record('projects', $primary_key, $data);
}
public function projectBy($colname, $colvalue) {
return $this->recordBy('projects', $colname, $colvalue);
}
public function projectSave($data = array()) {
return $this->project($this->exist($data) ? $data : null, $data);
}
public function projectEmpty() {
return $this->recordEmpty('projects');
}
public function projectAttributes() {
return $this->typesAttributes('projects');
}
public function projectCount() {
return $this->count('projects');
}
public function getList($search = array(), $reverse = false, $concat_or = false) {
return $this->search('projects')
->where($search, $concat_or)
->order(array('project_id' => $reverse ? 'DESC' : 'ASC'))
->toArray();
}
public function getListOrganize($cola_name, $search = array(), $reverse = false, $concat_or = false) {
$all = $this->getList($search, $reverse, $concat_or);
$ret = array();
if (is_array($all)) foreach ($all as $key => $row) {
$ret[$row[$cola_name]] = $row;
}
return $ret;
}
public function getListByID($search = array(), $reverse = false, $concat_or = false) {
return $this->getListOrganize('project_id', $search, $reverse, $concat_or);
}
public function projectCombo($col_key, $col_value, $add_empty = false) {
return $this->search('projects')
->toCombo($col_key, $col_value, $add_empty);
}
public function getListWithReportCount($include_archived = false) {
$where = $include_archived ? '' : ' WHERE `project_active` = 1';
return $this->getAll(
'SELECT `projects`.*,'
. ' (SELECT COUNT(*) FROM `reports` WHERE `reports`.`project_id` = `projects`.`project_id`) AS `report_count`'
. ' FROM `projects`'
. $where
. ' ORDER BY `project_active` DESC, `project_system` DESC, `project_name` ASC'
);
}
}
?>