%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/tasks/models/lists/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/tasks/models/lists/UnsortedTaskList.php |
<?php
namespace humhub\modules\tasks\models\lists;
use humhub\modules\content\components\ActiveQueryContent;
use humhub\modules\tasks\models\Sortable;
use humhub\modules\tasks\models\Task;
use Yii;
use yii\base\Model;
class UnsortedTaskList extends Model implements TaskListInterface, Sortable
{
public $contentContainer;
/**
* @return ActiveQueryContent
*/
public function getTasks()
{
return Task::findUnsorted($this->contentContainer);
}
/**
* @return ActiveQueryContent
*/
public function getNonCompletedTasks()
{
return $this->getTasks()->where(['!=', 'task.status', Task::STATUS_COMPLETED])->orderBy(['sort_order' => SORT_ASC, 'task.updated_at' => SORT_DESC]);
}
/**
* @param $offset int
* @param $limit int
* @return static[]
*/
public function getShowMoreCompletedTasks($offset, $limit)
{
return $this->getCompletedTasks()->orderBy(['task.updated_at' => SORT_DESC])->offset($offset)->limit($limit)->all();
}
/**
* @return ActiveQueryContent
*/
public function getCompletedTasks()
{
return $this->getTasksByStatus(Task::STATUS_COMPLETED)->orderBy(['task.updated_at' => SORT_DESC]);
}
public function moveItemIndex($taskId, $newIndex)
{
/** @var $task Task */
$transaction = Task::getDb()->beginTransaction();
try {
$task = Task::findOne(['id' => $taskId]);
$oldListId = $task->task_list_id;
$task->updateAttributes(['task_list_id' => null]);
$tasks = $this->getTasks()->all();
// make sure no invalid index is given
if ($newIndex < 0) {
$newIndex = 0;
} else if ($newIndex >= count($tasks) + 1) {
$newIndex = count($tasks) - 1;
}
if($oldListId === null) {
array_splice($tasks, $task->sort_order, 1);
}
array_splice($tasks, $newIndex, 0, [$task]);
foreach ($tasks as $index => $item) {
$item->updateAttributes(['sort_order' => $index]);
}
$transaction->commit();
} catch (\Exception $e) {
$transaction->rollBack();
throw $e;
} catch (\Throwable $e) {
$transaction->rollBack();
throw $e;
}
}
/**
* @param $status
* @return ActiveQueryContent
*/
public function getTasksByStatus($status)
{
return $this->getTasks()->where(['task.status' => $status]);
}
public function isHideIfCompleted()
{
return true;
}
public function getId()
{
return null;
}
public function getTitle()
{
return Yii::t('TasksModule.base', 'Other Tasks');
}
public function getColor()
{
return '#708fa0';
}
public function getContainer()
{
return $this->contentContainer;
}
}