public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $menuSelectedCategory = 'home'; $session->set('selected_product_id', SystemProduct::SYS_PRODUCT_HELP_DESK); $projectsForBrowsing = $this->getRepository(UbirimiClient::class)->getProjects($session->get('client/id'), null, null, true); if ($projectsForBrowsing) { $projectIdsAndNames = Util::getAsArray($projectsForBrowsing, array('id', 'name')); $projectsForBrowsing->data_seek(0); $projectIds = Util::getAsArray($projectsForBrowsing, array('id')); } return $this->render(__DIR__ . '/../../Resources/views/customer_portal/Dashboard.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { if (Util::checkUserIsLoggedIn()) { $issuesPerPage = $session->get('user/issues_per_page'); $clientSettings = $session->get('client/settings'); } else { $issuesPerPage = 25; $httpHOST = Util::getHttpHost(); $clientId = $this->getRepository(UbirimiClient::class)->getByBaseURL($httpHOST, 'array', 'id'); $loggedInUserId = null; $clientSettings = $this->getRepository(UbirimiClient::class)->getSettings($clientId); } $clientId = $session->get('client/id'); $loggedInUserId = $session->get('user/id'); $sectionPageTitle = $clientSettings['title_name'] . ' / ' . SystemProduct::SYS_PRODUCT_YONGO_NAME . ' / Search'; $session->set('selected_product_id', SystemProduct::SYS_PRODUCT_YONGO); $selectedProductId = $session->get('selected_product_id'); $cliMode = false; $projectsForBrowsing = $this->getRepository(UbirimiClient::class)->getProjectsByPermission($clientId, $loggedInUserId, Permission::PERM_BROWSE_PROJECTS); $searchParameters = array(); $parseURLData = null; $projectIds = null; if ($projectsForBrowsing) { $projectIdsAndNames = Util::getAsArray($projectsForBrowsing, array('id', 'name')); $projectsForBrowsing->data_seek(0); $projectIds = Util::getAsArray($projectsForBrowsing, array('id')); $searchCriteria = $this->getRepository(Issue::class)->getSearchParameters($projectsForBrowsing, $clientId); $issuesResult = null; $SLAs = UbirimiContainer::get()['repository']->get(Sla::class)->getByProjectIds($projectIds); } if ($request->request->has('search')) { $searchParameters = $this->getRepository(Issue::class)->prepareDataForSearchFromPostGet($projectIds, $_POST, $_GET); $redirectLink = str_replace("%7C", "|", http_build_query($searchParameters)); return new RedirectResponse('/yongo/issue/search?' . $redirectLink); } else { $getFilter = $request->get('filter'); $currentSearchPage = $request->get('page'); $currentSearchPage = isset($currentSearchPage) ? $currentSearchPage : 1; $getSearchParameters = $this->getRepository(Issue::class)->prepareDataForSearchFromURL($_GET, $issuesPerPage); // check to see if the project Ids are all belonging to the client $getProjectIds = isset($_GET['project']) ? explode('|', $_GET['project']) : null; if ($getProjectIds && !(count($getProjectIds) == 1 && $getProjectIds[0] == -1)) { if (!$this->getRepository(YongoProject::class)->checkProjectsBelongToClient($clientId, $getProjectIds)) { return new RedirectResponse('/general-settings/bad-link-access-denied'); } } $parseURLData = parse_url($_SERVER['REQUEST_URI']); if (isset($parseURLData['query']) && $projectsForBrowsing) { if (Util::searchQueryNotEmpty($getSearchParameters)) { $issuesResult = $this->getRepository(Issue::class)->getByParameters($getSearchParameters, $loggedInUserId, null, $loggedInUserId); $issues = $issuesResult[0]; $issuesCount = $issuesResult[1]; $countPages = ceil($issuesCount / $issuesPerPage); $getSearchParameters['count_pages'] = $countPages; $getSearchParameters['link_to_page'] = '/yongo/issue/search'; } } } $columns = array('code', 'summary', 'priority', 'status', 'created', 'updated', 'reporter', 'assignee', 'settings_menu'); if (Util::checkUserIsLoggedIn()) { $columns = explode('#', $session->get('user/issues_display_columns')); $columns[] = 'settings_menu'; $columns[] = ''; } $hasGlobalBulkPermission = $this->getRepository(UbirimiUser::class)->hasGlobalPermission($clientId, $loggedInUserId, GlobalPermission::GLOBAL_PERMISSION_YONGO_BULK_CHANGE); $customFilters = $this->getRepository(IssueFilter::class)->getAllByUser($loggedInUserId); if ($getFilter) { $menuSelectedCategory = 'filters'; } else { $menuSelectedCategory = 'issue'; } $extraParameters = array(); if ($getFilter) { $extraParameters[] = 'filter=' . $getFilter; } $extraParametersURL = ''; if (count($extraParameters)) { $extraParametersURL = implode('&', $extraParameters); } $urlIssuePrefix = '/yongo/issue/'; $parseData = parse_url($_SERVER['REQUEST_URI']); $query = isset($parseData['query']) ? $parseData['query'] : ''; if (isset($query) && $query != '') { $session->set('last_search_parameters', $parseData['query']); } else { $session->remove('last_search_parameters'); } return $this->render(__DIR__ . '/../../Resources/views/issue/search/Search.php', get_defined_vars()); }
public function getSearchParameters($projectsForBrowsing, $clientId, $helpDeskFlag = 0) { $projectsForBrowsing->data_seek(0); $projectIds = Util::getAsArray($projectsForBrowsing, array('id')); $allClientIssueTypes = UbirimiContainer::get()['repository']->get(IssueType::class)->getByProjects($projectIds); $criteria = array(); $issueTypeArray = array(); while ($allClientIssueTypes && ($issueType = $allClientIssueTypes->fetch_array(MYSQLI_ASSOC))) { $found = false; for ($i = 0; $i < count($issueTypeArray); $i++) { if ($issueTypeArray[$i]['name'] == $issueType['name']) { $issueTypeArray[$i]['id'] .= '#' . $issueType['id']; $found = true; break; } } if (!$found) { $issueTypeArray[] = $issueType; } } $criteria['all_client_issue_type'] = $issueTypeArray; $allClientIssueStatuses = UbirimiContainer::get()['repository']->get(IssueSettings::class)->getAllIssueSettings('status', $clientId); $issueStatusArray = array(); while ($issueStatus = $allClientIssueStatuses->fetch_array(MYSQLI_ASSOC)) { $found = false; for ($i = 0; $i < count($issueStatusArray); $i++) { if ($issueStatusArray[$i]['name'] == $issueStatus['name']) { $issueStatusArray[$i]['id'] .= '#' . $issueStatus['id']; $found = true; break; } } if (!$found) { $issueStatusArray[] = $issueStatus; } } $criteria['all_client_issue_status'] = $issueStatusArray; $allClientIssuePriorities = UbirimiContainer::get()['repository']->get(IssueSettings::class)->getAllIssueSettings('priority', $clientId); $issuePriorityArray = array(); while ($issuePriority = $allClientIssuePriorities->fetch_array(MYSQLI_ASSOC)) { $found = false; for ($i = 0; $i < count($issuePriorityArray); $i++) { if ($issuePriorityArray[$i]['name'] == $issuePriority['name']) { $issuePriorityArray[$i]['id'] .= '#' . $issuePriority['id']; $found = true; break; } } if (!$found) { $issuePriorityArray[] = $issuePriority; } } $criteria['all_client_issue_priority'] = $issuePriorityArray; $allClientIssueResolutions = UbirimiContainer::get()['repository']->get(IssueSettings::class)->getAllIssueSettings('resolution', $clientId); $issueResolutionArray = array(); while ($issueResolution = $allClientIssueResolutions->fetch_array(MYSQLI_ASSOC)) { $found = false; for ($i = 0; $i < count($issueResolutionArray); $i++) { if ($issueResolutionArray[$i]['name'] == $issueResolution['name']) { $issueResolutionArray[$i]['id'] .= '#' . $issueResolution['id']; $found = true; break; } } if (!$found) { $issueResolutionArray[] = $issueResolution; } } $criteria['all_client_issue_resolution'] = $issueResolutionArray; $clientUsersArray = array(); if ($helpDeskFlag) { $allClientUsers = UbirimiContainer::get()['repository']->get(UbirimiUser::class)->getByClientId($clientId); while ($allClientUsers && ($clientUser = $allClientUsers->fetch_array(MYSQLI_ASSOC))) { $found = false; for ($i = 0; $i < count($clientUsersArray); $i++) { if ($clientUsersArray[$i]['first_name'] == $clientUser['first_name'] && $clientUsersArray[$i]['last_name'] == $clientUser['last_name']) { $clientUsersArray[$i]['id'] .= '#' . $clientUser['id']; $found = true; break; } } if (!$found) { $clientUsersArray[] = $clientUser; } } $criteria['all_client_user_assignee'] = $clientUsersArray; $allClientUsers = UbirimiContainer::get()['repository']->get(UbirimiUser::class)->getByClientId($clientId, 1); $clientUsersArray = array(); while ($allClientUsers && ($clientUser = $allClientUsers->fetch_array(MYSQLI_ASSOC))) { $found = false; for ($i = 0; $i < count($clientUsersArray); $i++) { if ($clientUsersArray[$i]['first_name'] == $clientUser['first_name'] && $clientUsersArray[$i]['last_name'] == $clientUser['last_name']) { $clientUsersArray[$i]['id'] .= '#' . $clientUser['id']; $found = true; break; } } if (!$found) { $clientUsersArray[] = $clientUser; } } $criteria['all_client_user_reporter'] = $clientUsersArray; } else { $allClientUsers = UbirimiContainer::get()['repository']->get(UbirimiUser::class)->getByClientId($clientId); while ($allClientUsers && ($clientUser = $allClientUsers->fetch_array(MYSQLI_ASSOC))) { $found = false; for ($i = 0; $i < count($clientUsersArray); $i++) { if ($clientUsersArray[$i]['first_name'] == $clientUser['first_name'] && $clientUsersArray[$i]['last_name'] == $clientUser['last_name']) { $clientUsersArray[$i]['id'] .= '#' . $clientUser['id']; $found = true; break; } } if (!$found) { $clientUsersArray[] = $clientUser; } } $criteria['all_client_user_assignee'] = $clientUsersArray; $criteria['all_client_user_reporter'] = $clientUsersArray; } // get the project components $allProjectsComponents = UbirimiContainer::get()['repository']->get(YongoProject::class)->getComponents($projectIds); $projectComponentsArray = array(); while ($allProjectsComponents && ($component = $allProjectsComponents->fetch_array(MYSQLI_ASSOC))) { $found = false; for ($i = 0; $i < count($projectComponentsArray); $i++) { if ($projectComponentsArray[$i]['name'] == $component['name']) { $projectComponentsArray[$i]['id'] .= '#' . $component['id']; $found = true; break; } } if (!$found) { $projectComponentsArray[] = $component; } } $criteria['all_client_issue_component'] = $projectComponentsArray; // get the project fix versions $allProjectsVersions = UbirimiContainer::get()['repository']->get(YongoProject::class)->getVersions($projectIds); $projectVersionsArray = array(); while ($allProjectsVersions && ($version = $allProjectsVersions->fetch_array(MYSQLI_ASSOC))) { $found = false; for ($i = 0; $i < count($projectVersionsArray); $i++) { if ($projectVersionsArray[$i]['name'] == $version['name']) { $projectVersionsArray[$i]['id'] .= '#' . $version['id']; $found = true; break; } } if (!$found) { $projectVersionsArray[] = $version; } } $criteria['all_client_issue_version'] = $projectVersionsArray; return $criteria; }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $menuSelectedCategory = 'home'; $clientId = $session->get('client/id'); $projectsForBrowsing = $this->getRepository(UbirimiClient::class)->getProjects($clientId, null, null, true); $clientSettings = $this->getRepository(UbirimiClient::class)->getSettings($clientId); $session->set('selected_product_id', SystemProduct::SYS_PRODUCT_HELP_DESK); $selectedProductId = $session->get('selected_product_id'); $cliMode = false; if ($projectsForBrowsing) { $projectIdsAndNames = Util::getAsArray($projectsForBrowsing, array('id', 'name')); $projectsForBrowsing->data_seek(0); $projectIds = Util::getAsArray($projectsForBrowsing, array('id')); $searchCriteria = $this->getRepository(Issue::class)->getSearchParameters($projectsForBrowsing, $session->get('client/id'), 1); $issuesResult = null; } if ($request->request->has('search')) { $searchParameters = $this->getRepository(Issue::class)->prepareDataForSearchFromPostGet($projectIds, $request->request->all(), $request->query->all()); $redirectLink = str_replace("%7C", "|", http_build_query($searchParameters)); return new RedirectResponse('/helpdesk/customer-portal/tickets?' . $redirectLink); } else { $getSearchParameters = $this->getRepository(Issue::class)->prepareDataForSearchFromURL($request->query->all(), 30); $getSearchParameters['helpdesk_flag'] = 1; // check to see if the project Ids are all belonging to the client $getProjectIds = $request->request->has('project') ? explode('|', $request->query->get('project')) : null; if ($getProjectIds) { for ($pos = 0; $pos < count($getProjectIds); $pos++) { $projectFilter = $this->getRepository(YongoProject::class)->getById($getProjectIds[$pos]); if ($projectFilter['client_id'] != $session->get('client/id')) { return new RedirectResponse('/general-settings/bad-link-access-denied'); } } } $parseURLData = parse_url($_SERVER['REQUEST_URI']); $projectsForBrowsing = array(229); if (isset($parseURLData['query']) && $projectsForBrowsing) { if (Util::searchQueryNotEmpty($getSearchParameters)) { $issuesResult = $this->getRepository(Issue::class)->getByParameters($getSearchParameters, $session->get('user/id')); $issues = $issuesResult[0]; $issuesCount = $issuesResult[1]; $issuesPerPage = $session->get('user/issues_per_page'); $currentSearchPage = isset($_GET['page']) ? $_GET['page'] : 1; $countPages = ceil($issuesCount / 30); $getSearchParameters['count_pages'] = $countPages; $getSearchParameters['link_to_page'] = '/helpdesk/customer-portal/tickets'; } } } $SLAs = $this->getRepository(Sla::class)->getByProjectIds(array(229)); $columns = array('code', 'summary', 'priority', 'status', 'created', 'updated', 'reporter', 'assignee', 'settings_menu'); if (Util::checkUserIsLoggedIn()) { $columns = explode('#', $session->get('user/issues_display_columns')); $columns[] = 'settings_menu'; $columns[] = ''; } $parseData = parse_url($_SERVER['REQUEST_URI']); $query = isset($parseData['query']) ? $parseData['query'] : ''; if (isset($query)) { $session->set('last_search_parameters', $parseData['query']); } else { $session->remove('last_search_parameters'); } return $this->render(__DIR__ . '/../../Resources/views/customer_portal/ListIssue.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { $clientId = $session->get('client/id'); $loggedInUserId = $session->get('user/id'); Util::checkUserIsLoggedInAndRedirect(); $projectIdArray = $request->request->get('project_id_arr'); if (count($projectIdArray) == 1 && $projectIdArray[0] == -1) { $projectsForBrowsing = $this->getRepository(UbirimiClient::class)->getProjectsByPermission($clientId, $loggedInUserId, Permission::PERM_BROWSE_PROJECTS); $projectIdArray = Util::getAsArray($projectsForBrowsing, array('id')); } $allIssueTypes = $this->getRepository(YongoProject::class)->getAllIssueTypesForProjects($projectIdArray); $issueTypeArray = array(); while ($issueType = $allIssueTypes->fetch_array(MYSQLI_ASSOC)) { $found = false; for ($i = 0; $i < count($issueTypeArray); $i++) { if ($issueTypeArray[$i]['name'] == $issueType['name']) { if (!in_array($issueType['id'], explode("#", $issueTypeArray[$i]['id']))) { $issueTypeArray[$i]['id'] .= '#' . $issueType['id']; } $found = true; break; } } if (!$found) { $issueTypeArray[] = $issueType; } } $allIssueStatuses = $this->getRepository(UbirimiClient::class)->getAllIssueSettings('status', $clientId); $issueStatusArray = array(); while ($issueStatus = $allIssueStatuses->fetch_array(MYSQLI_ASSOC)) { $found = false; for ($i = 0; $i < count($issueStatusArray); $i++) { if ($issueStatusArray[$i]['name'] == $issueStatus['name']) { if (!in_array($issueStatus['id'], explode("#", $issueStatusArray[$i]['id']))) { $issueStatusArray[$i]['id'] .= '#' . $issueStatus['id']; } $found = true; break; } } if (!$found) { $issueStatusArray[] = $issueStatus; } } $allIssuePriorities = $this->getRepository(UbirimiClient::class)->getAllIssueSettings('priority', $clientId); $issuePriorityArray = array(); while ($issuePriority = $allIssuePriorities->fetch_array(MYSQLI_ASSOC)) { $found = false; for ($i = 0; $i < count($issuePriorityArray); $i++) { if ($issuePriorityArray[$i]['name'] == $issuePriority['name']) { if (!in_array($issuePriority['id'], explode("#", $issuePriorityArray[$i]['id']))) { $issuePriorityArray[$i]['id'] .= '#' . $issuePriority['id']; } $found = true; break; } } if (!$found) { $issuePriorityArray[] = $issuePriority; } } $allIssueResolutions = $this->getRepository(UbirimiClient::class)->getAllIssueSettings('resolution', $clientId); $issueResolutionArray = array(); while ($issueResolution = $allIssueResolutions->fetch_array(MYSQLI_ASSOC)) { $found = false; for ($i = 0; $i < count($issueResolutionArray); $i++) { if ($issueResolutionArray[$i]['name'] == $issueResolution['name']) { if (!in_array($issueResolution['id'], explode("#", $issueResolutionArray[$i]['id']))) { $issueResolutionArray[$i]['id'] .= '#' . $issueResolution['id']; } $found = true; break; } } if (!$found) { $issueResolutionArray[] = $issueResolution; } } $assignableUsers = $this->getRepository(YongoProject::class)->getUsersWithPermission($projectIdArray, Permission::PERM_ASSIGNABLE_USER); $allowUnassignedIssuesFlag = $this->getRepository(UbirimiClient::class)->getYongoSetting($clientId, 'allow_unassigned_issues_flag'); $issueUsersAssignableArray = array(); if ($allowUnassignedIssuesFlag) { $issueUsersAssignableArray[0]['user_id'] = -1; $issueUsersAssignableArray[0]['first_name'] = 'No one'; $issueUsersAssignableArray[0]['last_name'] = ''; } while ($assignableUsers && ($issueUser = $assignableUsers->fetch_array(MYSQLI_ASSOC))) { $found = false; for ($i = 0; $i < count($issueUsersAssignableArray); $i++) { if ($issueUsersAssignableArray[$i]['first_name'] == $issueUser['first_name'] && $issueUsersAssignableArray[$i]['last_name'] == $issueUser['last_name']) { $issueUsersAssignableArray[$i]['user_id'] .= '#' . $issueUser['user_id']; $found = true; break; } } if (!$found) { $issueUsersAssignableArray[] = $issueUser; } } // components are releases $projectComponents = $this->getRepository(YongoProject::class)->getComponents($projectIdArray); $projectComponentsArray = array(); while ($projectComponents && ($projectComponent = $projectComponents->fetch_array(MYSQLI_ASSOC))) { $found = false; for ($i = 0; $i < count($projectComponentsArray); $i++) { if ($projectComponentsArray[$i]['name'] == $projectComponent['name']) { if (!in_array($projectComponent['id'], explode("#", $projectComponentsArray[$i]['id']))) { $projectComponentsArray[$i]['id'] .= '#' . $projectComponent['id']; } $found = true; break; } } if (!$found) { $projectComponentsArray[] = $projectComponent; } } $allProjectVersions = $this->getRepository(YongoProject::class)->getVersions($projectIdArray); $projectVersionsArray = array(); while ($allProjectVersions && ($projectVersion = $allProjectVersions->fetch_array(MYSQLI_ASSOC))) { $found = false; for ($i = 0; $i < count($projectVersionsArray); $i++) { if ($projectVersionsArray[$i]['name'] == $projectVersion['name']) { if (!in_array($projectVersion['id'], explode("#", $projectVersionsArray[$i]['id']))) { $projectVersionsArray[$i]['id'] .= '#' . $projectVersion['id']; } $found = true; break; } } if (!$found) { $projectVersionsArray[] = $projectVersion; } } $result = array('type_arr' => $issueTypeArray, 'status_arr' => $issueStatusArray, 'priority_arr' => $issuePriorityArray, 'resolution_arr' => $issueResolutionArray, 'user_arr_assignable' => $issueUsersAssignableArray, 'project_component_arr' => $projectComponentsArray, 'project_version_arr' => $projectVersionsArray); return new Response(json_encode($result)); }