コード例 #1
0
 /**
  * Download of activity xml files
  * @param $activityId
  * @return \Illuminate\Http\Response
  */
 public function downloadActivityXml($activityId)
 {
     $activityData = $this->activityManager->getActivityData($activityId);
     $activityElement = $this->activityManager->getActivityElement();
     $xmlService = $activityElement->getActivityXmlService();
     $xml = $xmlService->generateTemporaryActivityXml($this->activityManager->getActivityData($activityId), $this->activityManager->getTransactionData($activityId), $this->activityManager->getResultData($activityId), $this->settingsManager->getSettings($activityData['organization_id']), $activityElement, $this->organizationManager->getOrganizationElement(), $this->organizationManager->getOrganization($activityData->organization_id));
     return response()->make($xml, 200, ['Content-type' => 'text/xml', 'Content-Disposition' => sprintf('attachment; filename=activityXmlFile.xml')]);
 }
コード例 #2
0
 /**
  * @param DatabaseManager $databaseManager
  * @param SettingsManager $settingsManager
  * @param UpgradeManager  $upgradeManager
  */
 function __construct(DatabaseManager $databaseManager, SettingsManager $settingsManager, UpgradeManager $upgradeManager)
 {
     $this->middleware('auth');
     $this->orgId = session('org_id');
     $db_organization = $databaseManager->table('organizations')->select('name')->where('id', '=', $this->orgId)->first();
     $this->orgName = $db_organization->name;
     $settings = $settingsManager->getSettings($this->orgId);
     $this->currentVersion = $settings ? $settings->version : null;
     $db_versions = $databaseManager->table('versions')->get();
     $versions = [];
     foreach ($db_versions as $ver) {
         $versions[] = $ver->version;
     }
     $this->versions = $versions;
     $versionKey = array_search($this->currentVersion, $versions);
     $this->version = end($versions) === $this->currentVersion ? null : $versions[$versionKey + 1];
     $this->upgradeManager = $upgradeManager;
 }
コード例 #3
0
 /**
  * Stores the activity by uploading csv
  * @param Request                  $request
  * @param UploadActivityRequest    $uploadActivityRequest
  * @param CsvImportValidator       $csvImportValidator
  * @param IatiIdentifierRepository $iatiIdentifierRepository
  * @return $this
  */
 public function store(Request $request, UploadActivityRequest $uploadActivityRequest, CsvImportValidator $csvImportValidator, IatiIdentifierRepository $iatiIdentifierRepository)
 {
     $organization = $this->organizationManager->getOrganization($this->organizationId);
     $this->authorize('add_activity', $organization);
     $settings = $this->settingsManager->getSettings($this->organizationId);
     $defaultFieldValues = $settings->default_field_values;
     $defaultFieldGroups = $settings->default_field_groups;
     if (!isset($organization->reporting_org[0])) {
         $response = ['type' => 'warning', 'code' => ['settings', ['name' => 'activity']]];
         return redirect('/settings')->withResponse($response);
     }
     $identifiers = [];
     $activityIdentifiers = $iatiIdentifierRepository->getIdentifiersForOrganization();
     foreach ($activityIdentifiers as $identifier) {
         $identifiers[] = $identifier->identifier['activity_identifier'];
     }
     $file = $request->file('activity');
     $uploadedActivityArray = $this->uploadActivityManager->getVersion()->getExcel()->load($file)->toArray();
     $geopolitical = $defaultFieldGroups[0]['Geopolitical Information'];
     foreach ($uploadedActivityArray as $activity) {
         $recipientRegionExist = array_key_exists('recipient_region', $geopolitical);
         if (!$recipientRegionExist && !is_null($activity['recipient_region'])) {
             return redirect()->back()->withResponse(['type' => 'danger', 'code' => ['recipient_region_unselected_in_settings', ['name' => 'Activity']]]);
         }
     }
     if ($this->uploadActivityManager->isEmptyCsv($file)) {
         return redirect()->back()->withResponse(['type' => 'danger', 'code' => ['empty_template', ['name' => 'Activity']]]);
     }
     $validator = $csvImportValidator->validator->isValidActivityCsv($file, $identifiers);
     if (!$validator) {
         $response = ['type' => 'danger', 'code' => ['csv_template_error', ['name' => '']]];
         return redirect()->back()->withResponse($response);
     } elseif ($validator->fails()) {
         $failedRows = $validator->failures();
         $uploadedActivities = $this->uploadActivityManager->getVersion()->getExcel()->load($file)->toArray();
         $validActivities = array_keys(array_diff_key($uploadedActivities, $failedRows));
         $validActivityIndices = [];
         foreach ($validActivities as $validActivity) {
             $validActivityIndices[] = $validActivity + 1;
         }
         $filename = 'temporary-' . $this->organizationId . 'activity';
         $this->temporarilyStoreCsvFor($validActivities, $filename);
         $validCsvFilePath = storage_path() . '/exports/' . $filename . '.csv';
         if (!$this->saveValidatedActivities($validCsvFilePath, $defaultFieldValues)) {
             return redirect()->back()->withResponse(['type' => 'warning', 'code' => ['save_failed', ['name' => 'Activity']]]);
         }
         return $this->invalidActivities($validator, $validActivityIndices, $failedRows);
     }
     $check = $this->uploadActivityManager->save($file, $organization, $defaultFieldValues);
     if (is_a($check, 'Illuminate\\View\\View')) {
         return $check;
     }
     $response = $check ? ['type' => 'success', 'code' => ['updated', ['name' => 'Activities']]] : ['type' => 'danger', 'code' => ['update_failed', ['name' => 'Activities']]];
     return redirect()->to(sprintf('/activity'))->withResponse($response);
 }
コード例 #4
0
 /**
  * it validates organization schema according to version standard
  * @param      $id
  * @param null $version
  * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  */
 public function validateOrganization($id, $version = null)
 {
     $organization = $this->organizationManager->getOrganization($id);
     $settings = $this->settingsManager->getSettings($id);
     $organizationData = $this->organizationManager->getOrganizationData($id);
     $orgElem = $this->organizationManager->getOrganizationElement();
     if ($version == null) {
         $version = config('app.default_version_name');
     }
     return $this->validateCompletedOrganization($organization, $settings, $organizationData, $orgElem, $version);
 }
コード例 #5
0
 /**
  * Change the segmentation for an Organization.
  * @param Request $request
  * @return mixed
  */
 public function changeSegmentation(Request $request)
 {
     $segmentationChange = $this->settingsService->changeSegmentation($request->all());
     if (null === $segmentationChange || false === $segmentationChange) {
         $response = ['type' => 'warning', 'messages' => $this->getMessageFor($segmentationChange)];
         return redirect()->to(config('app.admin_dashboard'))->withResponse($response);
     }
     if (!$this->settingsManager->updateSettings(json_decode($request->get('settings'), true), $this->organization, $this->settings)) {
         $response = ['type' => 'danger', 'messages' => ['Failed to update Settings']];
         return redirect()->to(config('app.admin_dashboard'))->withResponse($response);
     }
     $response = ['type' => 'success', 'messages' => ['Settings updated successfully.']];
     return redirect()->to(config('app.admin_dashboard'))->withResponse($response);
 }
コード例 #6
0
 /** Returns status of the published data of organization.
  * @param $organization_id
  * @return string
  */
 public function getPublishedOrganizationStatus($organization_id)
 {
     $organization_data = $this->organizationManager->getPublishedOrganizationData($organization_id);
     $settings = $this->settingsManager->getSettings($organization_id);
     $autoPublishing = getVal($settings->toArray(), ['registry_info', 0, 'publish_files'], 'no');
     $status = 'unlinked';
     if ($organization_data) {
         if ($autoPublishing == "no") {
             $status = $organization_data->published_to_register == 1 ? "Linked" : "Unlinked";
         } else {
             $status = $organization_data->published_to_register == 1 ? "Linked" : "unlinked";
         }
     }
     return $status;
 }
コード例 #7
0
 /**
  * masquerade as an specific organization by superadmin
  * @param                 $orgId
  * @param                 $userId
  * @return \Illuminate\Http\RedirectResponse
  */
 public function masqueradeOrganization($orgId, $userId)
 {
     $database = app(DatabaseManager::class);
     $settings = $this->settingsManager->getSettings($orgId);
     Session::put('org_id', $orgId);
     $current_version = isset($settings) ? $settings->version : config('app.default_version');
     Session::put('current_version', $current_version);
     $versions_db = $database->table('versions')->get();
     $versions = [];
     foreach ($versions_db as $ver) {
         $versions[] = $ver->version;
     }
     $versionKey = array_search($current_version, $versions);
     $next_version = end($versions) == $current_version ? null : $versions[$versionKey + 1];
     Session::put('next_version', $next_version);
     Session::put('version', 'V' . str_replace('.', '', $current_version));
     Auth::loginUsingId($userId);
     return redirect()->to(config('app.admin_dashboard'));
 }