|
20 | 20 | use simialbi\yii2\kanban\TaskEvent; |
21 | 21 | use simialbi\yii2\models\UserInterface; |
22 | 22 | use simialbi\yii2\ticket\models\Ticket; |
| 23 | +use simialbi\yii2\ticket\models\Topic; |
23 | 24 | use Yii; |
24 | 25 | use yii\base\InvalidConfigException; |
25 | 26 | use yii\db\ActiveQuery; |
@@ -433,22 +434,7 @@ public function actionUpdate($id, $updateSeries = false, $return = 'card', $read |
433 | 434 | } |
434 | 435 |
|
435 | 436 | 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); |
452 | 438 | $this->module->trigger(Module::EVENT_TASK_STATUS_CHANGED, new TaskEvent([ |
453 | 439 | 'task' => $model, |
454 | 440 | 'data' => $model->status |
@@ -775,22 +761,7 @@ public function actionSetStatus($id, $status, $readonly = false) |
775 | 761 |
|
776 | 762 | $model->refresh(); |
777 | 763 |
|
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); |
794 | 765 |
|
795 | 766 | $this->module->trigger(Module::EVENT_TASK_STATUS_CHANGED, new TaskEvent([ |
796 | 767 | 'task' => $model, |
@@ -1015,4 +986,35 @@ protected function findUserModel($id) |
1015 | 986 | throw new NotFoundHttpException(Yii::t('yii', 'Page not found.')); |
1016 | 987 | } |
1017 | 988 | } |
| 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 | + } |
1018 | 1020 | } |
0 commit comments