Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions Controller/EditTareaProyecto.php
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@ public function getPageData(): array
protected function createViews()
{
parent::createViews();

// the 'nick' field is defined in Table/tareas.xml and will be loaded automatically
// set tabs position and create notes view
$this->setTabsPosition('bottom');
$this->createViewsNotes();
}
Expand Down
44 changes: 44 additions & 0 deletions Controller/ListTareaProyecto.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,29 @@ public function getPageData(): array
protected function createViews()
{
$this->createViewsTasks();
$this->createViewsMine();
$this->createViewsPrivateTasks();
}

protected function createViewsMine(string $viewName = 'ListTareaProyecto-mine')
{
$this->addView($viewName, 'Join\\TareaProyecto', 'Mis tareas', 'fa-solid fa-list-check')
->addOrderBy(['fecha'], 'date', 2)
->addOrderBy(['fechainicio'], 'start-date')
->addOrderBy(['fechafin'], 'end-date')
->addOrderBy(['nombre'], 'title')
->addOrderBy(['descripcion'], 'description')
->addSearchFields(['tareas.nombre', 'tareas.descripcion']);

$status = $this->codeModel->all('tareas_fases', 'idfase', 'nombre');

// filtros
$this->listView($viewName)
->addFilterPeriod('fecha', 'date', 'tareas.fecha')
->addFilterAutocomplete('idproyecto', 'project', 'tareas.idproyecto', 'proyectos', 'idproyecto', 'nombre')
->addFilterSelect('idfase', 'phase', 'tareas.idfase', $status);
}

protected function createViewsPrivateTasks(string $viewName = 'ListTareaProyecto-private'): void
{
$this->addView($viewName, 'Join\TareaProyecto', 'private', 'fa-solid fa-unlock-alt')
Expand All @@ -66,6 +86,12 @@ protected function createViewsPrivateTasks(string $viewName = 'ListTareaProyecto
->addFilterPeriod('fecha', 'date', 'tareas.fecha')
->addFilterAutocomplete('idproyecto', 'project', 'tareas.idproyecto', 'proyectos', 'idproyecto', 'nombre')
->addFilterSelect('idfase', 'phase', 'tareas.idfase', $status);

// filtro por usuario asignado
$users = $this->codeModel->all('users', 'nick', 'nick');
if (count($users) > 1) {
$this->listView($viewName)->addFilterSelect('nick', 'user', 'tareas.nick', $users);
}
}

protected function createViewsTasks(string $viewName = 'ListTareaProyecto')
Expand All @@ -85,6 +111,12 @@ protected function createViewsTasks(string $viewName = 'ListTareaProyecto')
->addFilterPeriod('fecha', 'date', 'tareas.fecha')
->addFilterAutocomplete('idproyecto', 'project', 'tareas.idproyecto', 'proyectos', 'idproyecto', 'nombre')
->addFilterSelect('idfase', 'phase', 'tareas.idfase', $status);

// filtro por usuario asignado
$users = $this->codeModel->all('users', 'nick', 'nick');
if (count($users) > 1) {
$this->listView($viewName)->addFilterSelect('nick', 'user', 'tareas.nick', $users);
}
}

/**
Expand All @@ -106,6 +138,18 @@ protected function loadData($viewName, $view)
$view->loadData('', $where);
break;

case 'ListTareaProyecto-mine':
// projects accessible to the user (public in same company OR owned by user OR user assigned)
$sql = 'SELECT idproyecto FROM proyectos WHERE idempresa = ' . $this->dataBase->var2str($this->user->idempresa)
. ' UNION SELECT idproyecto FROM proyectos WHERE nick = ' . $this->dataBase->var2str($this->user->nick)
. ' UNION SELECT idproyecto FROM proyectos_users WHERE nick = ' . $this->dataBase->var2str($this->user->nick);
$where = [
new DataBaseWhere('tareas.nick', $this->user->nick),
new DataBaseWhere('tareas.idproyecto', $sql, 'IN')
];
$view->loadData('', $where);
break;

case 'ListTareaProyecto-private':
$sql = 'SELECT idproyecto FROM proyectos WHERE nick = ' . $this->dataBase->var2str($this->user->nick)
. ' UNION SELECT idproyecto FROM proyectos_users WHERE nick = ' . $this->dataBase->var2str($this->user->nick);
Expand Down
1 change: 1 addition & 0 deletions Model/Join/TareaProyecto.php
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ protected function getFields(): array
'fechafin' => 'tareas.fechafin',
'fechainicio' => 'tareas.fechainicio',
'nombre' => 'tareas.nombre',
'nick' => 'tareas.nick',
'idempresa' => 'proyectos.idempresa',
'privado' => 'proyectos.privado',
'editable' => 'proyectos.editable',
Expand Down
3 changes: 3 additions & 0 deletions Model/TareaProyecto.php
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ class TareaProyecto extends ModelClass
/** @var string */
public $nombre;

/** @var string */
public $nick;

public function clear(): void
{
parent::clear();
Expand Down
9 changes: 9 additions & 0 deletions Table/tareas.xml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@
<type>character varying(100)</type>
<null>NO</null>
</column>
<column>
<name>nick</name>
<type>character varying(50)</type>
<null>YES</null>
</column>
<constraint>
<name>tareas_pkey</name>
<type>PRIMARY KEY (idtarea)</type>
Expand All @@ -60,4 +65,8 @@
<name>ca_tareas_tareas_fases</name>
<type>FOREIGN KEY (idfase) REFERENCES tareas_fases (idfase) ON DELETE RESTRICT ON UPDATE CASCADE</type>
</constraint>
<constraint>
<name>ca_tareas_users</name>
<type>FOREIGN KEY (nick) REFERENCES users (nick) ON DELETE SET NULL ON UPDATE CASCADE</type>
</constraint>
</table>
5 changes: 5 additions & 0 deletions XMLView/EditTareaProyecto.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@
<values source="tareas_fases" fieldcode="idfase" fieldtitle="nombre"/>
</widget>
</column>
<column name="user" order="135">
<widget type="select" fieldname="nick">
<values source="users" fieldcode="nick" fieldtitle="nick"/>
</widget>
</column>
<column name="description" numcolumns="12" order="140">
<widget type="textarea" fieldname="descripcion" rows="8"/>
</column>
Expand Down
7 changes: 6 additions & 1 deletion XMLView/ListTareaProyecto.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,16 @@
<column name="end-date" display="left" order="170">
<widget type="date" fieldname="fechafin" />
</column>
<column name="phase" display="right" order="180">
<column name="phase" display="left" order="180">
<widget type="select" fieldname="idfase">
<values source="tareas_fases" fieldcode="idfase" fieldtitle="nombre" />
</widget>
</column>
<column name="user" display="left" order="185">
<widget type="select" fieldname="nick">
<values source="users" fieldcode="nick" fieldtitle="nick" />
</widget>
</column>
<column name="date" display="right" order="190">
<widget type="date" fieldname="fecha" />
</column>
Expand Down
Loading