%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/tasks/models/state/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/tasks/models/state/CompletedState.php |
<?php
namespace humhub\modules\tasks\models\state;
use humhub\modules\tasks\activities\TaskCompletedActivity;
use humhub\modules\tasks\activities\TaskReviewedActivity;
use humhub\modules\tasks\models\Task;
use humhub\modules\tasks\notifications\TaskCompletedNotification;
use humhub\modules\tasks\notifications\ReviewSuccessNotification;
use Yii;
class CompletedState extends TaskState
{
public static $status = Task::STATUS_COMPLETED;
public function checkProceedRules($newState = null, $user = null)
{
return false;
}
protected function proceedConfig($user = null)
{
return [];
}
protected function revertConfig($user = null)
{
return [
Task::STATUS_PENDING_REVIEW => [
'label' => Yii::t('TasksModule.base', 'Continue Review'),
'icon' => 'fa-eye'
],
Task::STATUS_PENDING => [
'label' => Yii::t('TasksModule.base', 'Reset Task'),
'icon' => 'fa-undo'
],
];
}
protected function getDefaultRevertStatusId()
{
return $this->task->review ? Task::STATUS_PENDING_REVIEW : Task::STATUS_PENDING;
}
public function checkRevertRules($newStatus = null, $user = null)
{
return $this->task->isTaskResponsible($user)
|| $this->task->isOwner($user)
|| $this->task->canProcess($user);
}
public function canCompleteTask($user = null)
{
if($this->task->isTaskResponsible($user)
|| $this->task->isOwner($user)
|| $this->task->canManageTasks($user)) {
return true;
}
if(!$this->task->review) {
return $this->task->isTaskAssigned($user) || $this->task->canProcess($user);
}
return false;
}
public function afterProceed(TaskState $oldState)
{
if ($this->task->hasItems()) {
$this->task->completeItems();
}
$this->notifyCompleted();
}
/**
* Notify users about status change
*/
public function notifyCompleted()
{
$user = Yii::$app->user->getIdentity();
if ($this->task->review) {
if ($this->task->hasTaskAssigned()) {
ReviewSuccessNotification::instance()->from($user)->about($this->task)->sendBulk($this->task->filterResponsibleAssigned());
}
if ($this->task->hasTaskResponsible()) {
ReviewSuccessNotification::instance()->from($user)->about($this->task)->sendBulk($this->task->taskResponsibleUsers);
}
TaskReviewedActivity::instance()->from($user)->about($this->task)->create();
} else {
if ($this->task->hasTaskResponsible()) {
TaskCompletedNotification::instance()->from($user)->about($this->task)->sendBulk($this->task->taskResponsibleUsers);
}
TaskCompletedActivity::instance()->from($user)->about($this->task)->create();
}
}
public function afterRevert(TaskState $oldState)
{
//Nothing to do...
}
}