public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $clientSettings = $this->getRepository(UbirimiClient::class)->getSettings($session->get('client/id')); $timeTrackingDefaultUnit = $session->get('yongo/settings/time_tracking_default_unit'); $projectId = $request->request->get('project_id'); $issueId = $request->request->get('issue_id'); $attachIdsToBeKept = $request->request->get('attach_ids'); $fieldTypes = $request->request->get('field_types'); $fieldValues = $request->request->get('field_values'); $fieldTypesCustom = $request->request->get('field_types_custom'); $fieldValuesCustom = $request->request->get('field_values_custom'); if (!is_array($attachIdsToBeKept)) { $attachIdsToBeKept = array(); } $issueSystemFieldsData = array(); $issueCustomFieldsData = array(); for ($i = 0; $i < count($fieldTypes); $i++) { if ($fieldValues[$i] != 'null' && $fieldValues[$i] != '') { $issueSystemFieldsData[$fieldTypes[$i]] = $fieldValues[$i]; } else { $issueSystemFieldsData[$fieldTypes[$i]] = null; } } for ($i = 0; $i < count($fieldTypesCustom); $i++) { if ($fieldValuesCustom[$i] != 'null' && $fieldValuesCustom[$i] != '') { $issueCustomFieldsData[$fieldTypesCustom[$i]] = $fieldValuesCustom[$i]; } else { $issueCustomFieldsData[$fieldTypesCustom[$i]] = null; } } if (!$projectId) { $projectId = $issueSystemFieldsData['project']; } $project = $this->getRepository(YongoProject::class)->getById($projectId); if (array_key_exists(Field::FIELD_ASSIGNEE_CODE, $issueSystemFieldsData)) { // assignee field is placed on screen if ($issueSystemFieldsData[Field::FIELD_ASSIGNEE_CODE] == -1) { $issueSystemFieldsData[Field::FIELD_ASSIGNEE_CODE] = null; } } else { // put the assignee as the project default assignee $issueSystemFieldsData[Field::FIELD_ASSIGNEE_CODE] = $project['lead_id']; } $issueSystemFieldsData['helpdesk_flag'] = 0; if ($session->get("selected_product_id") == SystemProduct::SYS_PRODUCT_HELP_DESK) { $issueSystemFieldsData['helpdesk_flag'] = 1; } $issueSystemFieldsData['user_reported_ip'] = Util::getClientIP(); $issue = UbirimiContainer::get()['issue']->save($project, $issueSystemFieldsData, $issueId, $timeTrackingDefaultUnit, $projectId, $issueCustomFieldsData, $attachIdsToBeKept, $clientSettings, $session->get('user/id'), $session->get('client/id')); $issueEvent = new IssueEvent($issue, $project, IssueEvent::STATUS_NEW); $this->getLogger()->addInfo('ADD Yongo issue ' . $project['code'] . '-' . $issue['nr'], $this->getLoggerContext()); UbirimiContainer::get()['dispatcher']->dispatch(YongoEvents::YONGO_ISSUE, $issueEvent); UbirimiContainer::get()['dispatcher']->dispatch(YongoEvents::YONGO_ISSUE_EMAIL, $issueEvent); // clean the search information $session->remove('array_ids'); $session->remove('last_search_parameters'); return new Response('New Issue Created <a href="/yongo/issue/' . $issue['id'] . '">' . $project['code'] . '-' . $issue['nr'] . '</a>'); }