Skip to content

Commit 2745bdd

Browse files
committed
add behaviors to enable ticket notifications when task is completed
1 parent bb64f5a commit 2745bdd

File tree

1 file changed

+34
-32
lines changed

1 file changed

+34
-32
lines changed

src/controllers/TaskController.php

Lines changed: 34 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
use simialbi\yii2\kanban\TaskEvent;
2121
use simialbi\yii2\models\UserInterface;
2222
use simialbi\yii2\ticket\models\Ticket;
23+
use simialbi\yii2\ticket\models\Topic;
2324
use Yii;
2425
use yii\base\InvalidConfigException;
2526
use yii\db\ActiveQuery;
@@ -433,22 +434,7 @@ public function actionUpdate($id, $updateSeries = false, $return = 'card', $read
433434
}
434435

435436
if ($hasStatusChanged) {
436-
if ($model->ticket_id && ($ticket = $model->ticket)) {
437-
switch ($model->status) {
438-
case Task::STATUS_IN_PROGRESS:
439-
$ticket->status = Ticket::STATUS_IN_PROGRESS;
440-
break;
441-
case Task::STATUS_NOT_BEGUN:
442-
default:
443-
$ticket->status = Ticket::STATUS_OPEN;
444-
break;
445-
case Task::STATUS_DONE:
446-
$ticket->status = Ticket::STATUS_RESOLVED;
447-
break;
448-
}
449-
450-
$ticket->save();
451-
}
437+
$this->setTicketStatus($model);
452438
$this->module->trigger(Module::EVENT_TASK_STATUS_CHANGED, new TaskEvent([
453439
'task' => $model,
454440
'data' => $model->status
@@ -775,22 +761,7 @@ public function actionSetStatus($id, $status, $readonly = false)
775761

776762
$model->refresh();
777763

778-
if ($model->ticket_id && ($ticket = $model->ticket)) {
779-
switch ($model->status) {
780-
case Task::STATUS_IN_PROGRESS:
781-
$ticket->status = Ticket::STATUS_IN_PROGRESS;
782-
break;
783-
case Task::STATUS_NOT_BEGUN:
784-
default:
785-
$ticket->status = Ticket::STATUS_OPEN;
786-
break;
787-
case Task::STATUS_DONE:
788-
$ticket->status = Ticket::STATUS_RESOLVED;
789-
break;
790-
}
791-
792-
$ticket->save();
793-
}
764+
$this->setTicketStatus($model);
794765

795766
$this->module->trigger(Module::EVENT_TASK_STATUS_CHANGED, new TaskEvent([
796767
'task' => $model,
@@ -1015,4 +986,35 @@ protected function findUserModel($id)
1015986
throw new NotFoundHttpException(Yii::t('yii', 'Page not found.'));
1016987
}
1017988
}
989+
990+
/**
991+
* @param Task $model
992+
* @return void
993+
* @throws \Exception
994+
*/
995+
protected function setTicketStatus(Task $model)
996+
{
997+
if ($model->ticket_id && ($ticket = $model->ticket)) {
998+
999+
/** @var \simialbi\yii2\ticket\Module $module */
1000+
if ($module = Yii::$app->getModule('ticket')) {
1001+
$module->attachNotificationBehaviors(Topic::EVENT_ON_TICKET_RESOLUTION, $ticket);
1002+
}
1003+
1004+
switch ($model->status) {
1005+
case Task::STATUS_IN_PROGRESS:
1006+
$ticket->status = Ticket::STATUS_IN_PROGRESS;
1007+
break;
1008+
case Task::STATUS_NOT_BEGUN:
1009+
default:
1010+
$ticket->status = Ticket::STATUS_OPEN;
1011+
break;
1012+
case Task::STATUS_DONE:
1013+
$ticket->status = Ticket::STATUS_RESOLVED;
1014+
break;
1015+
}
1016+
1017+
$ticket->save();
1018+
}
1019+
}
10181020
}

0 commit comments

Comments
 (0)