Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 28
CheckForm
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 4
90
0.00% covered (danger)
0.00%
0 / 28
 init
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 6
 rules
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 6
 validateCanCheck
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 5
 save
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 11
<?php
namespace humhub\modules\tasks\models\checklist;
use humhub\modules\tasks\models\Task;
use yii\base\Model;
use yii\web\HttpException;
class CheckForm extends Model
{
    public $checked;
    public $taskId;
    public $itemId;
    /**
     * @var TaskItem
     */
    public $item;
    /**
     * @var Task
     */
    private $task;
    public $statusChanged;
    public function init()
    {
        $this->item = TaskItem::findOne(['id' => $this->itemId, 'task_id' => $this->taskId]);
        if($this->item) {
            $this->task = $this->item->task;
        }
    }
    public function rules()
    {
        return [
            [['checked'], 'boolean'],
            [['item'], 'validateCanCheck'],
        ];
    }
    public function validateCanCheck($attribute, $params)
    {
        if(!$this->item || !$this->item->task->canCheckItems()) {
            throw new HttpException(403);
        }
    }
    public function save()
    {
        if(!$this->validate()) {
            return false;
        }
        $this->item->updateAttributes(['completed' => $this->checked]);
        if($this->task->isPending()) {
            $this->task->state->proceed(Task::STATUS_IN_PROGRESS);
            $this->statusChanged = true;
        }
        return true;
    }
}