Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static function processCopyTemplate(Objects $object, Template $newTemplate)
- {
- \Yii::$app->db->createCommand("SET FOREIGN_KEY_CHECKS=0;")->execute();
- $tasksForDepends = [];
- $tasksForDependIds = [];
- /** @var StageTemplate $stageTemplate */
- $scenars = $object->scenar;
- /** @var Scenario $scenar */
- foreach ($scenars as $scenar) {
- $stageTemplate = StageTemplate::find()
- ->where([
- 'template_id' => $newTemplate->id,
- 'stage_id' => $scenar->stageTemplate->stage_id
- ])
- ->one();
- if (!$stageTemplate) {
- continue;
- }
- $scenarModel = new Scenario();
- $scenarModel->attributes = $scenar->attributes;
- $scenarModel->stage_template_id = $stageTemplate->id;
- $scenarModel->save(false);
- $tasks = $scenar->tasks;
- $scenar->delete();
- foreach ($tasks as $keyTask => $task) {
- if (isset($task->dependents)) {
- foreach ($task->dependents as $dependent) {
- $dependent->dependentTask;
- $dependent->task;
- }
- if (!in_array($task->id, $tasksForDependIds)) {
- $tasksForDepends[] = $task;
- $tasksForDependIds[] = $task->id;
- }
- }
- $stageTemplateAction = $stageTemplate->stageTemplateActions[$keyTask] ?? false;
- if ($stageTemplateAction === false) {
- continue;
- }
- /** @var Task $task */
- $taskModel = new Task();
- $taskModel->attributes = $task->attributes;
- $taskModel->scenario_id = $scenarModel->id;
- $taskModel->stage_template_action_id = $stageTemplateAction->id;
- $taskModel->save(false);
- $notifies = $task->notify;
- /** @var Notifications $notify */
- foreach ($notifies as $notify) {
- $notifyModel = new Notifications();
- $notifyModel->attributes = $notify->attributes;
- $notifyModel->task_id = $taskModel->id;
- $notifyModel->save(false);
- }
- }
- }
- foreach ($tasksForDepends as $task) {
- $task->clearDependencies();
- $task->clearNotifies();
- $task->delete();
- foreach ($task->dependents as $dependent) {
- if (empty($dependent->dependentTask) || empty($dependent->task)) {
- continue;
- }
- $dependKey = $dependent->dependentTask->user_id . '-' . $dependent->dependentTask->object_id . '-' . $dependent->dependentTask->title . '-' . $dependent->dependentTask->status . '-' . $dependent->dependentTask->type;
- $key = $dependent->task->user_id . '-' . $dependent->task->object_id . '-' . $dependent->task->title . '-' . $dependent->task->status . '-' . $dependent->task->type;
- if ($dependKey === $key) {
- continue;
- }
- $tmpTask = Task::findTaskByKey($tasksForDepends, $key);
- $tmpDepend = Task::findTaskByKey($tasksForDepends, $dependKey);
- if (empty($tmpTask) || empty($tmpDepend)) {
- continue;
- }
- $dependTask = Task::find()->where([
- 'user_id' => $tmpDepend->user_id,
- 'object_id' => $tmpDepend->object_id,
- 'title' => $tmpDepend->title,
- 'status' => $tmpDepend->status,
- 'type' => $tmpDepend->type
- ])
- ->orderBy(['id' => SORT_DESC])
- ->one();
- $newTask = Task::find()->where([
- 'user_id' => $tmpTask->user_id,
- 'object_id' => $tmpTask->object_id,
- 'title' => $tmpTask->title,
- 'status' => $tmpTask->status,
- 'type' => $tmpTask->type
- ])
- ->orderBy(['id' => SORT_DESC])
- ->one();
- if ($dependTask && $newTask)
- {
- $dependModel = new TasksDependencies();
- $dependModel->task_id = $newTask->id;
- $dependModel->dependent_task_id = $dependTask->id;
- $dependModel->save(false);
- }
- }
- }
- $object->objectTemplate->template_id = $newTemplate->id;
- $object->objectTemplate->save();
- \Yii::$app->db->createCommand("SET FOREIGN_KEY_CHECKS=1;")->execute();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement