public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $loggedInUserId = $session->get('user/id'); $issueId = $request->request->get('issue_id'); $attachIdsToBeKept = $request->request->get('attach_ids'); $comment = Util::cleanRegularInputField($request->request->get('comment')); if (!is_array($attachIdsToBeKept)) { $attachIdsToBeKept = array(); } Util::manageModalAttachments($issueId, $session->get('user/id'), $attachIdsToBeKept); if (!empty($comment)) { $currentDate = Util::getServerCurrentDateTime(); $this->getRepository(IssueComment::class)->add($issueId, $session->get('user/id'), $comment, $currentDate); } // send email notification $issueQueryParameters = array('issue_id' => $issueId); $issue = $this->getRepository(Issue::class)->getByParameters($issueQueryParameters, $loggedInUserId); $project = $this->getRepository(YongoProject::class)->getById($issue['issue_project_id']); $issueEventData = array('user_id' => $loggedInUserId, 'attachmentIds' => UbirimiContainer::get()['session']->get('added_attachments_in_screen'), 'comment' => $comment); $issueEvent = new IssueEvent($issue, $project, IssueEvent::STATUS_UPDATE, $issueEventData); UbirimiContainer::get()['dispatcher']->dispatch(YongoEvents::YONGO_ISSUE_ADD_ATTACHMENT, $issueEvent); UbirimiContainer::get()['session']->remove('added_attachments_in_screen'); return new Response(''); }
public function save($project, $issueSystemFieldsData, $issueId, $timeTrackingDefaultUnit, $projectId, $issueCustomFieldsData, $attachIdsToBeKept, $clientSettings, $loggedInUserId, $clientId) { $currentDate = Util::getServerCurrentDateTime(); $issueReturnValues = UbirimiContainer::get()['repository']->get(Issue::class)->add($project, $currentDate, $issueSystemFieldsData, $loggedInUserId, $issueId, $timeTrackingDefaultUnit); $newIssueId = $issueReturnValues[0]; $newIssueNumber = $issueReturnValues[1]; // update last issue number for this project UbirimiContainer::get()['repository']->get(YongoProject::class)->updateLastIssueNumber($projectId, $newIssueNumber); // if a parent is set check if the parent issue id is part of a sprint. if yes also add the child if ($issueId) { $sprints = UbirimiContainer::get()['repository']->get(Sprint::class)->getByIssueId($clientId, $issueId); while ($sprints && ($sprint = $sprints->fetch_array(MYSQLI_ASSOC))) { UbirimiContainer::get()['repository']->get(Sprint::class)->addIssues($sprint['id'], array($newIssueId), $loggedInUserId); } } // check if on the modal there is a comment field if (array_key_exists(Field::FIELD_COMMENT_CODE, $issueSystemFieldsData)) { $comment = Util::cleanRegularInputField($issueSystemFieldsData[Field::FIELD_COMMENT_CODE]); if (!empty($comment)) { UbirimiContainer::get()['repository']->get(IssueComment::class)->add($newIssueId, $loggedInUserId, $comment, $currentDate); } } // save custom fields if (count($issueCustomFieldsData)) { UbirimiContainer::get()['repository']->get(CustomField::class)->saveCustomFieldsData($newIssueId, $issueCustomFieldsData, $currentDate); } if (isset($issueSystemFieldsData['component'])) { UbirimiContainer::get()['repository']->get(Issue::class)->addComponentVersion($newIssueId, $issueSystemFieldsData['component'], 'issue_component'); } if (isset($issueSystemFieldsData['affects_version'])) { UbirimiContainer::get()['repository']->get(Issue::class)->addComponentVersion($newIssueId, $issueSystemFieldsData['affects_version'], 'issue_version', Issue::ISSUE_AFFECTED_VERSION_FLAG); } if (isset($issueSystemFieldsData['fix_version'])) { UbirimiContainer::get()['repository']->get(Issue::class)->addComponentVersion($newIssueId, $issueSystemFieldsData['fix_version'], 'issue_version', Issue::ISSUE_FIX_VERSION_FLAG); } Util::manageModalAttachments($newIssueId, $loggedInUserId, $attachIdsToBeKept); UbirimiContainer::get()['session']->remove('added_attachments_in_screen'); $issue = UbirimiContainer::get()['repository']->get(Issue::class)->getById($newIssueId); // add the current logged in user to the list of watchers UbirimiContainer::get()['repository']->get(Watcher::class)->add($newIssueId, $loggedInUserId, $currentDate); // add sla information for this issue UbirimiContainer::get()['repository']->get(Issue::class)->addPlainSLAData($newIssueId, $projectId); return $issue; }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $issueId = $request->get('issue_id'); $fieldTypes = $request->get('field_types'); $fieldValues = $request->get('field_values'); $loggedInUserId = $session->get('user/id'); $fieldTypesCustom = $request->get('field_types_custom'); $fieldValuesCustom = $request->get('field_values_custom'); // todo: de ce este aceasta variabila nefolosita $attachIds = $request->get('attach_ids'); $attachIdsToBeKept = $request->get('attach_ids'); if (!is_array($attachIdsToBeKept)) { $attachIdsToBeKept = array(); } $oldIssueData = $this->getRepository(Issue::class)->getByParameters(array('issue_id' => $issueId), $loggedInUserId); $newIssueData = array(); $newIssueData['issue_project_id'] = $oldIssueData['issue_project_id']; $newIssueCustomFieldsData = array(); for ($i = 0; $i < count($fieldTypes); $i++) { if ($fieldValues[$i] != 'null' && $fieldValues[$i] != '') { if ($fieldTypes[$i] == Field::FIELD_DUE_DATE_CODE) { $fieldValues[$i] = \DateTime::createFromFormat('Y-m-d', $fieldValues[$i])->format('Y-m-d'); } $newIssueData[$fieldTypes[$i]] = $fieldValues[$i]; } else { $newIssueData[$fieldTypes[$i]] = null; } } if ($fieldTypesCustom) { for ($i = 0; $i < count($fieldTypesCustom); $i++) { if ($fieldValuesCustom[$i] != 'null' && $fieldValuesCustom[$i] != '') { $newIssueCustomFieldsData[$fieldTypesCustom[$i]] = $fieldValuesCustom[$i]; } else { $newIssueCustomFieldsData[$fieldTypesCustom[$i]] = null; } } } if (array_key_exists(Field::FIELD_ASSIGNEE_CODE, $newIssueData)) { // assignee field is placed on screen if ($newIssueData[Field::FIELD_ASSIGNEE_CODE] == -1) { $newIssueData[Field::FIELD_ASSIGNEE_CODE] = null; } } if (!isset($newIssueData[Field::FIELD_STATUS_CODE])) { $newIssueData[Field::FIELD_STATUS_CODE] = $oldIssueData[Field::FIELD_STATUS_CODE]; } $currentDate = Util::getServerCurrentDateTime(); $this->getRepository(Issue::class)->updateById($issueId, $newIssueData, $currentDate); $oldIssueCustomFieldsData = array(); foreach ($newIssueCustomFieldsData as $key => $value) { $keyData = explode("_", $key); $oldIssueCustomFieldsData[$keyData[0]] = $this->getRepository(CustomField::class)->getCustomFieldsDataByFieldId($issueId, $key); unset($newIssueCustomFieldsData[$key]); $newIssueCustomFieldsData[$keyData[0]] = $value; } $fieldChanges = $this->getRepository(Issue::class)->computeDifference($oldIssueData, $newIssueData, $oldIssueCustomFieldsData, $newIssueCustomFieldsData); $this->getRepository(Issue::class)->updateHistory($issueId, $loggedInUserId, $fieldChanges, $currentDate); // check if on the modal there is a comment field if (array_key_exists(Field::FIELD_COMMENT_CODE, $newIssueData) && !empty($newIssueData[Field::FIELD_COMMENT_CODE])) { $this->getRepository(IssueComment::class)->add($issueId, $loggedInUserId, $newIssueData[Field::FIELD_COMMENT_CODE], $currentDate); } // update the custom fields value if ($fieldTypesCustom) { $this->getRepository(CustomField::class)->updateCustomFieldsData($issueId, $newIssueCustomFieldsData, $currentDate); } Util::manageModalAttachments($issueId, $loggedInUserId, $attachIdsToBeKept); UbirimiContainer::get()['session']->remove('added_attachments_in_screen'); $issueEvent = new IssueEvent(null, null, IssueEvent::STATUS_UPDATE, array('oldIssueData' => $oldIssueData, 'fieldChanges' => $fieldChanges)); $this->getLogger()->addInfo('UPDATE Yongo issue ' . $oldIssueData['project_code'] . '-' . $oldIssueData['nr'], $this->getLoggerContext()); UbirimiContainer::get()['dispatcher']->dispatch(YongoEvents::YONGO_ISSUE_EMAIL, $issueEvent); return new Response(''); }