$tickets = Jira::get_jira_tickets_for_event($id); if ($tickets["status"] == Jira::ERROR) { $app->response->status(404); return; } else { $tickets = Jira::merge_jira_tickets($tickets["values"]); echo json_encode($tickets); } }); $app->post('/events/:id/tickets', function ($id) use($app) { header("Content-Type: application/json"); $curl = new CurlClient(); $jira = new JiraClient($curl); $tickets = explode(',', $app->request()->post('tickets')); $tickets = array_map('trim', $tickets); $tickets = array_keys($jira->getJiraTickets($tickets)); $res = Jira::save_jira_tickets_for_event($id, $tickets); if ($res["status"] == Jira::ERROR) { $app->response->status(400); } else { $app->response->status(201); $tickets = Jira::get_jira_tickets_for_event($id); if ($tickets["status"] == Jira::ERROR) { $app->response->status(404); return; } else { $tickets = Jira::merge_jira_tickets($tickets["values"]); echo json_encode($tickets); } } });
/** * function to merge JIRA ticket info from the database with info from the * JIRA API * * @param $tickets - array of JIRA ticket objects from the DB * @param $curl - curl client to use (default: null) * * @returns array of merged JIRA tickets */ static function merge_jira_tickets($tickets, $curl = null) { if (empty($tickets)) { return array(); } $jira_tickets = array(); if (is_null($curl)) { $curl = new CurlClient(); } $tickets_ids = array(); foreach ($tickets as $k => $v) { array_push($tickets_ids, $v['ticket']); } $jira_client = new JiraClient($curl); $jira_info = $jira_client->getJiraTickets(array_values($tickets_ids)); foreach ($tickets as $ticket) { $key = $ticket['ticket']; $id = $ticket['id']; if (isset($jira_info[$key])) { $ticket_info = $jira_info[$key]; $ticket_info['id'] = $id; $jira_tickets[$key] = $ticket_info; } } return $jira_tickets; }