/** * updates activity sector * @param $id * @param Request $request * @param SectorRequestManager $sectorRequestManager * @return \Illuminate\Http\RedirectResponse */ public function update($id, Request $request, SectorRequestManager $sectorRequestManager) { $activityData = $this->activityManager->getActivityData($id); if (Gate::denies('ownership', $activityData)) { return redirect()->back()->withResponse($this->getNoPrivilegesMessage()); } $this->authorizeByRequestType($activityData, 'sector'); $sectors = $request->all(); foreach ($sectors['sector'] as &$sector) { if ($sector['sector_vocabulary'] == 1 || $sector['sector_vocabulary'] == '') { $sector['sector_vocabulary'] = 1; $sector['sector_category_code'] = ''; $sector['sector_text'] = ''; } elseif ($sector['sector_vocabulary'] == 2) { $sector['sector_code'] = ''; $sector['sector_text'] = ''; } else { $sector['sector_code'] = ''; $sector['sector_category_code'] = ''; } } if ($this->sectorManager->update($sectors, $activityData)) { $this->activityManager->resetActivityWorkflow($id); $response = ['type' => 'success', 'code' => ['updated', ['name' => 'Sector']]]; return redirect()->to(sprintf('/activity/%s', $id))->withResponse($response); } $response = ['type' => 'danger', 'code' => ['update_failed', ['name' => 'Sector']]]; return redirect()->back()->withInput()->withResponse($response); }
/** * updates activity recipient region * @param $id * @param Request $request * @param RecipientRegionRequestManager $recipientRegionRequestManager * @return \Illuminate\Http\RedirectResponse */ public function update($id, Request $request, RecipientRegionRequestManager $recipientRegionRequestManager) { $activityData = $this->activityManager->getActivityData($id); if (Gate::denies('ownership', $activityData)) { return redirect()->back()->withResponse($this->getNoPrivilegesMessage()); } $this->authorizeByRequestType($activityData, 'recipient_region'); $activityTransactions = $this->transactionManager->getTransactions($id); $count = 0; if ($activityTransactions) { foreach ($activityTransactions as $transactions) { $transactionDetail = $transactions->transaction; removeEmptyValues($transactionDetail); if (!empty($transactionDetail['recipient_country']) || !empty($transactionDetail['recipient_region'])) { $count++; } } } if ($count > 0) { $response = ['type' => 'warning', 'code' => ['message', ['message' => 'You cannot save Recipient Region in activity level because you have already saved recipient country or region in transaction level.']]]; return redirect()->back()->withInput()->withResponse($response); } $recipientRegions = $request->all(); foreach ($recipientRegions['recipient_region'] as &$recipientRegion) { $recipientRegion['region_vocabulary'] != '' ?: ($recipientRegion['region_vocabulary'] = '1'); } if ($this->recipientRegionManager->update($recipientRegions, $activityData)) { $this->activityManager->resetActivityWorkflow($id); $response = ['type' => 'success', 'code' => ['updated', ['name' => 'Recipient Region']]]; return redirect()->to(sprintf('/activity/%s', $id))->withResponse($response); } $response = ['type' => 'danger', 'code' => ['update_failed', ['name' => 'Recipient Region']]]; return redirect()->back()->withInput()->withResponse($response); }
/** * it validates activity schema according to version standard * @param $id * @param null $version * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function validateActivity($id, $version = null) { $activityData = $this->activityManager->getActivityData($id); $settings = $this->settingsManager->getSettings($activityData['organization_id']); $transactionData = $this->activityManager->getTransactionData($id); $resultData = $this->activityManager->getResultData($id); $organization = $this->organizationManager->getOrganization($activityData->organization_id); $orgElem = $this->organizationManager->getOrganizationElement(); $activityElement = $this->activityManager->getActivityElement(); if ($version == null) { $version = config('app.default_version_name'); } return $this->validateCompletedActivity($activityData, $transactionData, $resultData, $settings, $activityElement, $orgElem, $organization, $version); }
public function update($id, Request $request, ConditionRequestManager $conditionRequestManager) { $activityData = $this->activityManager->getActivityData($id); if (Gate::denies('ownership', $activityData)) { return redirect()->back()->withResponse($this->getNoPrivilegesMessage()); } $this->authorizeByRequestType($activityData, 'conditions'); $condition = $request->except(['_token', '_method']); if ($this->conditionManager->update($condition, $activityData)) { $this->activityManager->resetActivityWorkflow($id); $response = ['type' => 'success', 'code' => ['updated', ['name' => 'Conditions']]]; return redirect()->to(sprintf('/activity/%s', $id))->withResponse($response); } $response = ['type' => 'danger', 'code' => ['update_failed', ['name' => 'Related Activity']]]; return redirect()->back()->withInput()->withResponse($response); }
/** * updates activity title * @param $id * @param Request $request * @param TitleRequestManager $titleRequestManager * @return \Illuminate\Http\RedirectResponse */ public function update($id, Request $request, TitleRequestManager $titleRequestManager) { if (!$this->currentUserIsAuthorizedForActivity($id)) { return redirect()->back()->withResponse($this->getNoPrivilegesMessage()); } $activityData = $this->titleManager->getActivityData($id); $this->authorizeByRequestType($activityData, 'title'); $activityTitle = $request->all(); if ($this->titleManager->update($activityTitle, $activityData)) { $this->activityManager->resetActivityWorkflow($id); $response = ['type' => 'success', 'code' => ['updated', ['name' => 'Activity Title']]]; return redirect()->to(sprintf('/activity/%s', $id))->withResponse($response); } $response = ['type' => 'danger', 'code' => ['update_failed', ['name' => 'Activity Title']]]; return redirect()->back()->withInput()->withResponse($response); }
/** * @param $id * @param Request $request * @param BudgetRequestManager $budgetRequestManager * @return mixed */ public function update($id, Request $request, BudgetRequestManager $budgetRequestManager) { $activityData = $this->activityManager->getActivityData($id); if (Gate::denies('ownership', $activityData)) { return redirect()->back()->withResponse($this->getNoPrivilegesMessage()); } $this->authorizeByRequestType($activityData, 'budget'); $budget = $request->all(); if ($this->budgetManager->update($budget, $activityData)) { $this->activityManager->resetActivityWorkflow($id); $response = ['type' => 'success', 'code' => ['updated', ['name' => 'Budget']]]; return redirect()->to(sprintf('/activity/%s', $id))->withResponse($response); } $response = ['type' => 'danger', 'code' => ['update_failed', ['name' => 'Budget']]]; return redirect()->back()->withInput()->withResponse($response); }
/** * generate new xml files with published activities * @param $newPublishingType * @param $activities */ protected function generateNewFiles($newPublishingType, $activities) { $activityElement = $this->activityManager->getActivityElement(); $xmlService = $activityElement->getActivityXmlService(); $orgIdentifier = $this->organization->reporting_org[0]['reporting_organization_identifier']; $publisherId = $this->settings->registry_info[0]['publisher_id']; if ($newPublishingType == "unsegmented") { $filename = $publisherId . '-activities.xml'; $activitiesXml = []; foreach ($activities as $activity) { if ($activity->activity_workflow == 3) { $publishedActivity = sprintf('%s-%s.xml', $publisherId, $activity->id); $this->generateXmlIfDoesNotExist($publishedActivity, $activity); $activitiesXml[] = $publishedActivity; } } $xmlService->getMergeXml($activitiesXml, $filename); $xmlService->savePublishedFiles($filename, Session::get('org_id'), $activitiesXml); } elseif ($newPublishingType == "segmented") { $activitiesXml = []; foreach ($activities as $activity) { if ($activity->activity_workflow == 3) { $filename = sprintf('%s-%s.xml', $publisherId, $xmlService->segmentedXmlFile($activity)); $publishedActivity = sprintf('%s-%s.xml', $publisherId, $activity->id); $this->generateXmlIfDoesNotExist($publishedActivity, $activity); $activitiesXml[$filename][] = $publishedActivity; } } foreach ($activitiesXml as $filename => $xmlFiles) { $xmlService->getMergeXml($xmlFiles, $filename); $xmlService->savePublishedFiles($filename, Session::get('org_id'), $xmlFiles); } } }
/** * @param $activityId * @param IatiIdentifierRequestManager $iatiIdentifierRequestManager * @param Request $request * @return \Illuminate\Http\RedirectResponse */ public function update($activityId, IatiIdentifierRequestManager $iatiIdentifierRequestManager, Request $request) { $activityData = $this->activityManager->getActivityData($activityId); if (Gate::denies('ownership', $activityData)) { return redirect()->back()->withResponse($this->getNoPrivilegesMessage()); } $iatiIdentifierData = $this->iatiIdentifierManager->getActivityData($activityId); $this->authorizeByRequestType($iatiIdentifierData, 'identifier'); $input = $request->all(); if ($this->iatiIdentifierManager->update($input, $iatiIdentifierData)) { $this->activityManager->resetActivityWorkflow($activityId); $response = ['type' => 'success', 'code' => ['updated', ['name' => 'Activity Iati Identifier']]]; return redirect()->to(sprintf('/activity/%s', $activityId))->withResponse($response); } $response = ['type' => 'danger', 'code' => ['update_failed', ['name' => 'Activity Iati Identifier']]]; return redirect()->route('activity.iati-identifier.index', $activityId)->withInput()->withResponse($response); }
/** * update country budget item * @param $id * @param Request $request * @param CountryBudgetItemRequestManager $countryBudgetItemRequestManager * @return mixed */ public function update($id, Request $request, CountryBudgetItemRequestManager $countryBudgetItemRequestManager) { $activityData = $this->activityManager->getActivityData($id); if (Gate::denies('ownership', $activityData)) { return redirect()->back()->withResponse($this->getNoPrivilegesMessage()); } $this->authorizeByRequestType($activityData, 'country_budget_items'); $countryBudgetItems = $request->all(); foreach ($countryBudgetItems['country_budget_item'] as &$countryBudgetItem) { $code = $countryBudgetItem['vocabulary'] == 1 ? 'code_text' : 'code'; $countryBudgetItem['budget_item'][0][$code] = ''; } if ($this->countryBudgetItemManager->update($countryBudgetItems, $activityData)) { $this->activityManager->resetActivityWorkflow($id); $response = ['type' => 'success', 'code' => ['updated', ['name' => 'Country Budget Item']]]; return redirect()->to(sprintf('/activity/%s', $id))->withResponse($response); } $response = ['type' => 'danger', 'code' => ['update_failed', ['name' => 'Country Budget Item']]]; return redirect()->back()->withInput()->withResponse($response); }
/** * updates activity participating organization * @param $id * @param Request $request * @param ParticipatingOrganizationRequestManager $participatingOrganizationRequestManager * @return \Illuminate\Http\RedirectResponse */ public function update($id, Request $request, ParticipatingOrganizationRequestManager $participatingOrganizationRequestManager) { $activityData = $this->activityManager->getActivityData($id); if (Gate::denies('ownership', $activityData)) { return redirect()->back()->withResponse($this->getNoPrivilegesMessage()); } $this->authorizeByRequestType($activityData, 'participating_organization'); $participatingOrganization = $request->all(); if (!$this->validateData($request->get('participating_organization'))) { $response = ['type' => 'warning', 'code' => ['participating_org', ['name' => 'participating organization']]]; return redirect()->back()->withInput()->withResponse($response); } if ($this->participatingOrganizationManager->update($participatingOrganization, $activityData)) { $this->activityManager->resetActivityWorkflow($id); $response = ['type' => 'success', 'code' => ['updated', ['name' => 'Activity Participating Organization']]]; return redirect()->to(sprintf('/activity/%s', $id))->withResponse($response); } $response = ['type' => 'danger', 'code' => ['update_failed', ['name' => 'Activity Participating Organization']]]; return redirect()->back()->withInput()->withResponse($response); }
/** * deletes data block from transaction * @param $id * @param $transactionId * @param $jsonPath */ public function deleteBlock($id, $transactionId, $jsonPath) { $result = $this->transactionManager->deleteBlock($transactionId, $jsonPath); if ($result) { $this->activityManager->resetActivityWorkflow($id); $response = ['type' => 'success', 'code' => ['transaction_block_removed', ['element' => 'activity']]]; } else { $response = ['type' => 'danger', 'code' => ['transaction_block_not_removed', ['element' => 'activity']]]; } return redirect()->back()->withResponse($response); }
/** * generate activity xml * @param Activity $activity */ public function generateXml(Activity $activity) { $activity_id = $activity->id; $org_id = $activity->organization_id; $settings = $this->getSettings($org_id); $transactionData = $this->activityManager->getTransactionData($activity_id); $resultData = $this->activityManager->getResultData($activity_id); $organization = $this->organizationManager->getOrganization($org_id); $orgElem = $this->organizationManager->getOrganizationElement(); $activityElement = $this->activityManager->getActivityElement(); $xmlService = $activityElement->getActivityXmlService(); $xmlService->generateActivityXml($activity, $transactionData, $resultData, $settings, $activityElement, $orgElem, $organization); }
/** * Remove all the sector details from every transactions of the activity. * @param $activityId */ public function removeTransactionSector($activityId) { $activity = $this->activityManager->getActivityData($activityId); if (Gate::denies('ownership', $activity)) { return redirect()->back()->withResponse($this->getNoPrivilegesMessage()); } $sector = $this->activityManager->removeTransactionSector($activityId); if ($sector) { $response = ['type' => 'success', 'messages' => ['Sector details has been removed from Transaction level.']]; } else { $response = ['type' => 'danger', 'messages' => ['Failed to remove Sector details from Transaction level.']]; } return redirect()->back()->withResponse($response); }
/** * store the uploaded transaction * @param Request $request * @param $id * @param UploadTransactionRequest $uploadTransactionRequest * @param CsvImportValidator $csvImportValidator * @return $this */ public function store(Request $request, $id, UploadTransactionRequest $uploadTransactionRequest, CsvImportValidator $csvImportValidator) { $activity = $this->activityManager->getActivityData($id); if (Gate::denies('ownership', $activity)) { return redirect()->back()->withResponse($this->getNoPrivilegesMessage()); } $this->authorize('add_activity', $activity); $file = $request->file('transaction'); if ($this->uploadTransactionManager->isEmptyCsv($file)) { return redirect()->back()->withResponse(['type' => 'danger', 'code' => ['empty_template', ['name' => 'Transaction']]]); } $validator = $this->validatorForCurrentCsvType($file, $csvImportValidator); if (null === $validator) { return redirect()->back()->withResponse(['type' => 'danger', 'code' => ['header_mismatch', ['name' => 'Transaction']]]); } if (null !== $validator && $validator->fails()) { $response = ['type' => 'danger', 'messages' => $validator->errors()->all()]; return redirect()->back()->withInput()->withResponse($response); } $this->uploadTransactionManager->save($file, $activity); $this->activityManager->resetActivityWorkflow($id); $response = ['type' => 'success', 'code' => ['updated', ['name' => 'Transactions']]]; return redirect()->to(sprintf('/activity/%s/transaction', $id))->withResponse($response); }
/** * Remove result from storage. * @param int $id * @param $resultId * @return \Illuminate\Http\Response */ public function destroy($id, $resultId) { $activityData = $this->activityManager->getActivityData($id); if (Gate::denies('ownership', $activityData)) { return redirect()->back()->withResponse($this->getNoPrivilegesMessage()); } $this->authorize('delete_activity', $activityData); $activityResult = $this->resultManager->getResult($resultId, $id); if ($this->resultManager->deleteResult($activityResult)) { $this->activityManager->resetActivityWorkflow($id); $response = ['type' => 'success', 'code' => ['deleted', ['name' => 'Result']]]; } else { $response = ['type' => 'danger', 'code' => ['delete_failed', ['name' => 'result']]]; } return redirect()->back()->withResponse($response); }
/** * Publish an Activity. * * If the auto-publish option is set, the Activity data is published into the IATI Registry. * @param $activity * @param $details * @return bool */ public function publish($activity, array $details) { try { $organization = $activity->organization; $settings = $organization->settings; $version = $settings->version; $this->xmlServiceProvider->initializeGenerator($version)->generate($activity, $this->organizationManager->getOrganizationElement(), $this->activityManager->getActivityElement()); if (getVal($settings['registry_info'], [0, 'publish_files']) == 'yes') { $this->publisher->publishFile($organization->settings['registry_info'], $this->organizationDataProvider->fileBeingPublished($activity->id), $organization, $organization->settings->publishing_type); $this->activityManager->activityInRegistry($activity); $this->twitter->post($organization->settings, $organization); } $this->update($details, $activity); return true; } catch (\ErrorException $exception) { $this->logger->error($exception); return null; } catch (Exception $exception) { $this->logger->error($exception); return array_first(explode("\n", $exception->getMessage()), function () { return true; }); } }
/** Returns all the activities of the organization * @param $orgId * @return \App\Models\Activity\Activity */ public function getActivitiesOfOrganization($orgId) { $activities = $this->activityManager->getActivities($orgId); return $activities; }