public function saveAction() { if (!$this->isXmlHttpRequest()) { throw new \Exception('Неверный тип запроса!'); } $user = $this->session->getCurrentUser(); $data = $this->request->getPost(); if (!isset($data['id']) || !isset($data['projects_id']) || !isset($data['name']) || !isset($data['description']) || !isset($data['deadline']) || !isset($data['task_priority_id'])) { throw new \Exception('Неверный тип запроса!'); } $data['id'] = (int) $data['id']; $data['projects_id'] = (int) $data['projects_id']; $data['name'] = trim(strip_tags($data['name'])); $data['description'] = trim(strip_tags($data['description'])); $data['deadline'] = trim($data['deadline']); $data['task_priority_id'] = (int) $data['task_priority_id']; if ($data['name'] == '' || $data['description'] == '' || $data['deadline'] == '') { throw new \Exception('Не заполнены обязательные поля!'); } $tasksModel = new Tasks(); $oldTask = array(); if ($data['id'] > 0) { $oldTask = $tasksModel->getTasksDataById((int) $data['id']); if ($user->roles_id == 2) { if ($oldTask['task_status_id'] != 1) { throw new Exception('Доступ запрещен!'); } if (isset($data['task_status_id'])) { unset($data['task_status_id']); } if (isset($data['initiator'])) { unset($data['initiator']); } if (isset($data['date_added'])) { unset($data['date_added']); } } } if (isset($data['add_file'])) { unset($data['add_file']); } $tasks_id = $tasksModel->save($data); $task = $tasksModel->getTasksDataById($tasks_id); if (!is_null($this->session->getUploadedFiles())) { $filesModel = new Files(); foreach ($this->session->getUploadedFiles() as $filesId) { $filesModel->update(array('projects_id' => $task['projects_id'], 'tasks_id' => $task['id']), array('id' => (int) $filesId)); } $this->session->unsetUploadedFiles(); } if ($data['id'] > 0) { $this->view->task = $task; } else { if ($data['projects_id'] > 0) { $projectsModel = new Projects(); $this->view->project = $projectsModel->getProjectsDataForEdit($data['projects_id']); } else { $this->view->task = $task; } } if ($data['id'] == 0) { $usersModel = new Users(); $usersModel->setWhere(array('id' => 1)); $result = $usersModel->select(); $superAdmin = $result[0]; $to = $superAdmin['user']; $subject = 'Поступила новая задача!'; $message = 'Новая задача : ' . $task['name'] . "\n"; $message .= 'По проекту: ' . ($task['p_name'] ? $task['p_name'] : 'Без проекта') . "\n"; $message .= 'Приоритет: ' . $task['tp_name'] . "\n"; $message .= 'Закончить до: ' . $task['deadline'] . "\n"; $message .= 'Описание: ' . "\n"; $message .= $task['description']; Mail::instance()->send($to, $subject, $message); } if ($data['id'] > 0 && isset($data['task_status_id']) && $data['task_status_id'] != $oldTask['task_status_id']) { $to = array(); $usersModel = new Users(); $usersModel->setWhere(array('id' => 1)); $result1 = $usersModel->select(); $to[] = $result1[0]['user']; $usersModel->setWhere(array('id' => (int) $task['executors_id'])); $result2 = $usersModel->select(); if ($result2 && $result2[0]['user'] != $result1[0]['user']) { $to[] = $result2[0]['user']; } $usersModel->setWhere(array('id' => (int) $task['initiator'])); $result3 = $usersModel->select(); $to[] = $result3[0]['user']; $subject = 'Изменение статуса задачи'; $message = 'По задаче "' . $task['name']; $message .= '" сменился статус на ' . $task['ts_name'] . "\n"; $message .= 'По проекту: ' . ($task['p_name'] ? $task['p_name'] : 'Без проекта'); Mail::instance()->send($to, $subject, $message); } $this->view->user = $user; }