From 6af6ae1ce021f60b8ebd9626addadcdd653dc871 Mon Sep 17 00:00:00 2001 From: zenggang Date: Wed, 25 Aug 2021 14:49:11 +0800 Subject: [PATCH] + my question api task#41820 --- api/v1/entries/issue.php | 51 +++++++++++++++++++++++++++++++++++++++ api/v1/entries/issues.php | 50 ++++++++++++++++++++++++++++++++++++++ config/routes.php | 4 +++ 3 files changed, 105 insertions(+) create mode 100644 api/v1/entries/issue.php create mode 100644 api/v1/entries/issues.php diff --git a/api/v1/entries/issue.php b/api/v1/entries/issue.php new file mode 100644 index 0000000000..8716099236 --- /dev/null +++ b/api/v1/entries/issue.php @@ -0,0 +1,51 @@ +loadController('issue', 'view'); + $control->view($issueID); + + $data = $this->getData(); + if(!$data or (isset($data->message) and $data->message == '404 Not found')) return $this->send404(); + if(isset($data->status) and $data->status == 'success') $this->send(200, $this->format($data->data->issue, 'createdDate:time,editedDate:time,assignedDate:time')); + if(isset($data->status) and $data->status == 'fail') return $this->sendError(400, $data->message); + + $this->sendError(400, 'error'); + } + + public function put($issueID) + { + $oldIssue = $this->loadModel('issue')->getByID($issueID); + + /* Set $_POST variables. */ + $fields = 'type,title,severity,pri,assignedTo,deadline,desc'; + $this->batchSetPost($fields, $oldIssue); + + $control = $this->loadController('issue', 'edit'); + $control->edit($issueID); + + $data = $this->getData(); + if(!$data or (isset($data->message) and $data->message == '404 Not found')) return $this->send404(); + if(isset($data->result) and $data->result == 'fail') return $this->sendError(400, $data->message); + + $issue = $this->issue->getByID($issueID); + $this->send(200, $this->format($issue, 'createdDate:time,editedDate:time,assignedDate:time')); + } + + public function delete($issueID) + { + $control = $this->loadController('issue', 'delete'); + $control->delete($issueID, 'true'); + + $this->getData(); + $this->sendSuccess(200, 'success'); + } +} diff --git a/api/v1/entries/issues.php b/api/v1/entries/issues.php new file mode 100644 index 0000000000..3cfb8d9df4 --- /dev/null +++ b/api/v1/entries/issues.php @@ -0,0 +1,50 @@ +loadController('my', 'issue'); + $control->issue($this->param('type', 'assignedTo'), $this->param('order', 'id_desc'), $this->param('total', 0), $this->param('limit', 20), $this->param('page', 1)); + $data = $this->getData(); + + if(!isset($data->status)) return $this->sendError(400, 'error'); + if(isset($data->status) and $data->status == 'fail') return $this->sendError(400, $data->message); + + $pager = $data->data->pager; + $result = array(); + foreach($data->data->issues as $issue) + { + $result[] = $this->format($issue, 'createdDate:time,editedDate:time,assignedDate:time'); + } + return $this->send(200, array('page' => $pager->pageID, 'total' => $pager->recTotal, 'limit' => $pager->recPerPage, 'issues' => $result)); + } + + public function post($projectID = 0) + { + if((int) $projectID <= 0) $this->sendError(400, 'The id of project is wrong.'); + + $fields = 'type,title,severity,pri,assignedTo,deadline,desc'; + $this->batchSetPost($fields); + + $control = $this->loadController('issue', 'create'); + $this->requireFields('type,title,severity'); + + $control->create($projectID); + + $data = $this->getData(); + if(isset($data->result) and $data->result == 'fail') return $this->sendError(400, $data->message); + if(isset($data->result) and!isset($data->id)) return $this->sendError(400, $data->message); + + $issue = $this->loadModel('issue')->getByID($data->id); + + $this->send(201, $this->format($issue, 'createdDate:time,editedDate:time,assignedDate:time')); + } +} diff --git a/config/routes.php b/config/routes.php index ce9d1326b1..32f5743b6e 100644 --- a/config/routes.php +++ b/config/routes.php @@ -55,4 +55,8 @@ $routes['/projects/:project/risks'] = 'risks'; $routes['/risks'] = 'risks'; $routes['/risks/:id'] = 'risk'; +$routes['/projects/:project/questions'] = 'issues'; +$routes['/questions'] = 'issues'; +$routes['/questions/:id'] = 'issue'; + $config->routes = $routes;