/**
  * 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);
 }
 /**
  * show the activity details
  * @param $id
  * @return \Illuminate\View\View
  */
 public function show($id)
 {
     $activityData = $this->activityManager->getActivityData($id);
     if ($activityData->activity_workflow == 3) {
         $filename = $this->getPublishedActivityFilename($this->organization_id, $activityData);
         $activityPublishedStatus = $this->getPublishedActivityStatus($filename, $this->organization_id);
         $message = $this->getMessageForPublishedActivity($activityPublishedStatus, $filename);
     }
     if (Gate::denies('ownership', $activityData)) {
         return redirect()->route('activity.index')->withResponse($this->getNoPrivilegesMessage());
     }
     $activityDataList = $activityData->activity_data_list;
     $activityResult = $this->resultManager->getResults($id)->toArray();
     $activityTransaction = $this->transactionManager->getTransactions($id)->toArray();
     $activityDocumentLinks = $this->documentLinkManager->getDocumentLinks($id)->toArray();
     $activityDataList['results'] = $activityResult;
     $activityDataList['transaction'] = $activityTransaction;
     $activityDataList['document_links'] = $activityDocumentLinks;
     $activityDataList['reporting_org'] = $activityData->organization->reporting_org;
     if ($activityDataList['activity_workflow'] == 0) {
         $nextRoute = route('activity.complete', $id);
     } elseif ($activityDataList['activity_workflow'] == 1) {
         $nextRoute = route('activity.verify', $id);
     } else {
         $nextRoute = route('activity.publish', $id);
     }
     return view('Activity.show', compact('activityDataList', 'id', 'filename', 'activityPublishedStatus', 'message', 'nextRoute'));
 }
 /**
  * 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);
 }