/**
  * updates transaction
  * @param Request            $request
  * @param                    $id
  * @param                    $transactionId
  * @param TransactionRequest $transactionRequest
  * @return mixed
  */
 public function update(Request $request, $id, $transactionId, TransactionRequest $transactionRequest)
 {
     $activity = $this->activityManager->getActivityData($id);
     if (Gate::denies('ownership', $activity)) {
         return redirect()->back()->withResponse($this->getNoPrivilegesMessage());
     }
     if (!$this->currentUserIsAuthorizedForTransaction($transactionId)) {
         return redirect()->back()->withResponse($this->getNoPrivilegesMessage());
     }
     $this->authorize('edit_activity', $activity);
     $transactionDetails = $transactionData = $request->except(['_token', '_method']);
     removeEmptyValues($transactionData);
     $activityDetails = $activity->toArray();
     removeEmptyValues($activityDetails);
     if ($this->recipientCountryAndRegionAreInvalid($activityDetails, $transactionDetails)) {
         $response = ['type' => 'warning', 'code' => ['message', ['message' => 'You cannot save Recipient Country or Recipient Region in transaction level because you have already saved recipient country or region in activity level.']]];
         return redirect()->back()->withInput()->withResponse($response);
     }
     $this->filterSector($transactionDetails);
     $this->transactionManager->save($transactionDetails, $activity, $transactionId);
     $this->activityManager->resetActivityWorkflow($id);
     $response = ['type' => 'success', 'code' => ['updated', ['name' => 'Transactions']]];
     return redirect()->to(sprintf('/activity/%s/transaction', $id))->withResponse($response);
 }