From b6ad85aec7154bc29be38d59082e29ae2e9d5497 Mon Sep 17 00:00:00 2001 From: Jose Consador Date: Tue, 2 Aug 2016 16:09:42 +0800 Subject: [PATCH] sideload users and groups for customer tickets list --- .../Zendesk/Zendesk/Model/Api/Tickets.php | 107 ++++++++++-------- .../template/zendesk/customer/tickets.phtml | 7 +- .../zendesk/customer/tickets/list.phtml | 1 - 3 files changed, 65 insertions(+), 50 deletions(-) diff --git a/src/app/code/community/Zendesk/Zendesk/Model/Api/Tickets.php b/src/app/code/community/Zendesk/Zendesk/Model/Api/Tickets.php index 71edc53c..b08e0042 100644 --- a/src/app/code/community/Zendesk/Zendesk/Model/Api/Tickets.php +++ b/src/app/code/community/Zendesk/Zendesk/Model/Api/Tickets.php @@ -32,49 +32,7 @@ public function get($id, $sideload = false) $ticket = $response['ticket']; if($sideload) { - // Sideload user information - if(isset($response['users'])) { - // Generate the list of user IDs from the users provided - $users = array(); - foreach($response['users'] as $user) { - $users[$user['id']] = $user; - } - - // Use the list of generated users to attach additional details to the ticket - if(isset($ticket['requester_id'])) { - if(isset($users[$ticket['requester_id']])) { - $ticket['requester'] = $users[$ticket['requester_id']]; - } - } - - if(isset($ticket['submitter_id'])) { - if(isset($users[$ticket['submitter_id']])) { - $ticket['submitter'] = $users[$ticket['submitter_id']]; - } - } - - if(isset($ticket['assignee_id'])) { - if(isset($users[$ticket['assignee_id']])) { - $ticket['assignee'] = $users[$ticket['assignee_id']]; - } - } - } - - // Sideload group information - if(isset($response['groups'])) { - // Generate the list of group IDs from the users provided - $groups = array(); - foreach($response['groups'] as $group) { - $groups[$group['id']] = $group; - } - - // Use the list of generated groups to attach additional details to the ticket - if(isset($ticket['group_id'])) { - if(isset($groups[$ticket['group_id']])) { - $ticket['group'] = $groups[$ticket['group_id']]; - } - } - } + $this->formatSideloaded($response, $ticket); } return $ticket; @@ -146,8 +104,19 @@ public function forRequester($customerEmail) { $user = Mage::getModel('zendesk/api_users')->find($customerEmail); if(isset($user['id'])) { - $response = $this->_call('users/' . $user['id'] . '/requests.json', null, 'GET', null, false); - return $response['requests']; + $response = $this->_call( + 'users/' . $user['id'] . '/tickets/requested.json', + array('include' => 'users,groups', 'sort_by' => 'updated_at', 'sort_order' => 'desc'), + 'GET', + null, + false + ); + + foreach ($response['tickets'] as &$request) { + $request = $this->formatSideloaded($response, $request); + } + + return $response['tickets']; } else { return array(); } @@ -192,4 +161,52 @@ public function create($data) return (isset($response['ticket']) ? $response['ticket'] : null); } + private function formatSideloaded($response, $ticket) + { + // Sideload user information + if(isset($response['users'])) { + // Generate the list of user IDs from the users provided + $users = array(); + foreach($response['users'] as $user) { + $users[$user['id']] = $user; + } + + // Use the list of generated users to attach additional details to the ticket + if(isset($ticket['requester_id'])) { + if(isset($users[$ticket['requester_id']])) { + $ticket['requester'] = $users[$ticket['requester_id']]; + } + } + + if(isset($ticket['submitter_id'])) { + if(isset($users[$ticket['submitter_id']])) { + $ticket['submitter'] = $users[$ticket['submitter_id']]; + } + } + + if(isset($ticket['assignee_id'])) { + if(isset($users[$ticket['assignee_id']])) { + $ticket['assignee'] = $users[$ticket['assignee_id']]; + } + } + } + + // Sideload group information + if(isset($response['groups'])) { + // Generate the list of group IDs from the users provided + $groups = array(); + foreach($response['groups'] as $group) { + $groups[$group['id']] = $group; + } + + // Use the list of generated groups to attach additional details to the ticket + if(isset($ticket['group_id'])) { + if(isset($groups[$ticket['group_id']])) { + $ticket['group'] = $groups[$ticket['group_id']]; + } + } + } + + return $ticket; + } } diff --git a/src/app/design/adminhtml/default/default/template/zendesk/customer/tickets.phtml b/src/app/design/adminhtml/default/default/template/zendesk/customer/tickets.phtml index 6a9e7485..f8c14ec5 100644 --- a/src/app/design/adminhtml/default/default/template/zendesk/customer/tickets.phtml +++ b/src/app/design/adminhtml/default/default/template/zendesk/customer/tickets.phtml @@ -53,16 +53,15 @@ if($customer = Mage::registry('current_customer')) { - - get($ticket['id'], true); ?> + getTicketUrl($ticket); ?> formatDate($ticket['created_at'], Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true); ?> formatDate($ticket['updated_at'], Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true); ?> - - + + diff --git a/src/app/design/frontend/base/default/template/zendesk/customer/tickets/list.phtml b/src/app/design/frontend/base/default/template/zendesk/customer/tickets/list.phtml index 6b89baf0..360b9ab8 100644 --- a/src/app/design/frontend/base/default/template/zendesk/customer/tickets/list.phtml +++ b/src/app/design/frontend/base/default/template/zendesk/customer/tickets/list.phtml @@ -36,7 +36,6 @@ - get($ticket['id'], true); ?> getTicketUrl($ticket); ?> formatDate($ticket['created_at'], Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true); ?>