/**
  * 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);
 }
 /**
  * returns xml data from all elements
  * @param Organization     $organization
  * @param OrganizationData $organizationData
  * @return array
  */
 public function getXmlData(Organization $organization, OrganizationData $organizationData)
 {
     $xmlOrganization = [];
     $xmlOrganization['organisation-identifier'] = $organization->reporting_org[0]['reporting_organization_identifier'];
     $xmlOrganization['name'] = $this->nameElem->getXmlData($organizationData);
     $xmlOrganization['reporting-org'] = $this->reportingOrgElem->getXmlData($organization);
     $xmlOrganization['total-budget'] = $this->totalBudgetElem->getXmlData($organizationData);
     $xmlOrganization['recipient-org-budget'] = $this->recipientOrgBudgetElem->getXmlData($organizationData);
     $xmlOrganization['recipient-region-budget'] = $this->orgElem->getRecipientRegionBudgetXml($organizationData);
     $xmlOrganization['recipient-country-budget'] = $this->recipientCountrybudgetElem->getXmlData($organizationData);
     $xmlOrganization['total-expenditure'] = $this->orgElem->getTotalExpenditureXml($organizationData);
     $xmlOrganization['document-link'] = $this->documentLinkElem->getXmlData($organizationData);
     removeEmptyValues($xmlOrganization);
     return $xmlOrganization;
 }
 /**
  * @param Activity   $activity
  * @param Collection $transaction
  * @param Collection $result
  * @param            $organization
  * @return array
  */
 public function getXmlData(Activity $activity, Collection $transaction, Collection $result, $organization)
 {
     $xmlActivity = [];
     $xmlActivity['iati-identifier'] = $activity->identifier['iati_identifier_text'];
     $xmlActivity['reporting-org'] = $this->reportingOrgElem->getXmlData($organization);
     $xmlActivity['title'] = $this->titleElem->getXmlData($activity);
     $xmlActivity['description'] = $this->descriptionElem->getXmlData($activity);
     $xmlActivity['participating-org'] = $this->participatingOrgElem->getXmlData($activity);
     $xmlActivity['activity-status'] = $this->activityStatusElem->getXmlData($activity);
     $xmlActivity['activity-date'] = $this->activityDateElem->getXmlData($activity);
     $xmlActivity['contact-info'] = $this->contactElem->getXmlData($activity);
     $xmlActivity['activity-scope'] = $this->activityScopeElem->getXmlData($activity);
     $xmlActivity['recipient-country'] = $this->recipientCountryElem->getXmlData($activity);
     $xmlActivity['recipient-region'] = $this->recipientRegionElem->getXmlData($activity);
     $xmlActivity['location'] = $this->locationElem->getXmlData($activity);
     $xmlActivity['sector'] = $this->sectorElem->getXmlData($activity);
     $xmlActivity['country-budget-items'] = $this->countryBudgetItemElem->getXmlData($activity);
     $xmlActivity['humanitarian-scope'] = $this->activityElement->getHumanitarianScopeXml($activity);
     $xmlActivity['policy-marker'] = $this->policyMarkerElem->getXmlData($activity);
     $xmlActivity['collaboration-type'] = $this->collaborationTypeElem->getXmlData($activity);
     $xmlActivity['default-flow-type'] = $this->defaultFlowTypeElem->getXmlData($activity);
     $xmlActivity['default-finance-type'] = $this->defaultFinanceTypeElem->getXmlData($activity);
     $xmlActivity['default-aid-type'] = $this->defaultAidTypeElem->getXmlData($activity);
     $xmlActivity['default-tied-status'] = $this->defaultTiedStatusElem->getXmlData($activity);
     $xmlActivity['budget'] = $this->budgetElem->getXmlData($activity);
     $xmlActivity['planned-disbursement'] = $this->plannedDisbursementElem->getXmlData($activity);
     $xmlActivity['capital-spend'] = $this->capitalSpendElem->getXmlData($activity);
     $xmlActivity['transaction'] = $this->transactionElem->getXmlData($transaction);
     $xmlActivity['document-link'] = $this->documentLinkElem->getXmlData($activity);
     $xmlActivity['related-activity'] = $this->relatedActivityElem->getXmlData($activity);
     $xmlActivity['legacy-data'] = $this->legacyDataElem->getXmlData($activity);
     $xmlActivity['conditions'] = $this->conditionElem->getXmlData($activity);
     $xmlActivity['result'] = $this->resultElem->getXmlData($result);
     removeEmptyValues($xmlActivity);
     return $xmlActivity;
 }
 public function validateActivity($activityData, $transactionData)
 {
     $messages = [];
     if (empty($activityData->title)) {
         $messages[] = 'Title is required.';
     }
     if (empty($activityData->description)) {
         $messages[] = 'Description is required.';
     }
     if (empty($activityData->participating_organization)) {
         $messages[] = 'Participating Organization is required.';
     }
     if (empty($activityData->activity_status)) {
         $messages[] = 'Activity Status is required.';
     }
     if (empty($activityData->activity_date)) {
         $messages[] = 'Activity Date is required.';
     }
     $transaction = [];
     if (empty($activityData->sector)) {
         if (!$transactionData->first()) {
             $messages[] = "Sector must be present either at Activity or in all Transactions level.";
         } else {
             foreach ($transactionData as $transactions) {
                 $transactionDetail = $transactions->transaction;
                 removeEmptyValues($transactionDetail);
                 if (empty($transactionDetail['sector'])) {
                     if ($transaction == []) {
                         $transaction[] = ['transaction' => 'it contains data'];
                         $messages[] = "Sector must be present either at Activity or in all Transactions level.";
                     } else {
                         $messages[] = "All Transactions must contain Sector element.";
                     }
                 } else {
                     $transaction[] = ['transaction' => 'it contains data'];
                 }
             }
         }
     }
     $transaction = [];
     if (!empty($activityData->sector)) {
         foreach ($transactionData as $transactions) {
             $transactionDetail = $transactions->transaction;
             removeEmptyValues($transactionDetail);
             if (!empty($transactionDetail['sector']) && $transaction == []) {
                 $transaction[] = ['transaction' => 'it contains data'];
                 $messages[] = sprintf("You can only mention Sector either at Activity or in Transaction level(should be included in all transactions) but not both. <br/>Please click the link to remove Sector From: <a href='%s' class='delete_data'>Transaction Level</a> OR <a href='%s' class='delete_data'>Activity Level</a> ", route('remove.transactionSector', $activityData->id), route('remove.activitySector', $activityData->id));
             }
         }
     }
     $transactionCountryRegion = false;
     if (empty($activityData->recipient_country) && empty($activityData->recipient_region)) {
         if (!empty($transactionData)) {
             foreach ($transactionData as $transactions) {
                 $transactionDetail = $transactions->transaction;
                 removeEmptyValues($transactionDetail);
                 if (!empty($transactionDetail['recipient_country']) || !empty($transactionDetail['recipient_region'])) {
                     $transactionCountryRegion = true;
                 } else {
                     $messages[] = 'Either Recipient Country or Recipient Region is required';
                 }
             }
         } else {
             $messages[] = 'Either Recipient Country or Recipient Region is required';
         }
     }
     $recipientCountryValue = false;
     $activityRecipientCountryValue = false;
     $recipientRegionValue = false;
     $activityRecipientRegionValue = false;
     $totalPercentage = 0;
     if (!empty($activityData->recipient_country)) {
         foreach ($activityData->recipient_country as $recipientCountry) {
             if ($recipientCountry['percentage'] !== '') {
                 $totalPercentage += $recipientCountry['percentage'];
                 $recipientCountryValue = true;
             }
             $activityRecipientCountryValue = true;
         }
     }
     if (!empty($activityData->recipient_region)) {
         foreach ($activityData->recipient_region as $recipientRegion) {
             if ($recipientRegion['percentage'] !== '') {
                 $totalPercentage += $recipientRegion['percentage'];
                 $recipientRegionValue = true;
             }
             $activityRecipientRegionValue = true;
         }
     }
     if ($totalPercentage !== 100 && $totalPercentage !== 0) {
         if ($recipientCountryValue == true && $recipientRegionValue == true) {
             $messages[] = 'The sum of percentage in Recipient Country and Recipient Region must be 100.';
         } elseif ($recipientCountryValue == true) {
             $messages[] = 'The sum of percentage in Recipient Countries must be 100.';
         } elseif ($recipientRegionValue == true) {
             $messages[] = 'The sum of percentage in Recipient Regions must be 100.';
         }
     }
     if ($transactionCountryRegion == true && ($activityRecipientCountryValue == true || $activityRecipientRegionValue == true)) {
         $messages[] = "You can only mention Recipient Country or Region either in Activity Level or in Transaction level. You can't have Country/Region in both Activity level and Transaction level.";
     }
     $messageList = '';
     foreach ($messages as $message) {
         $messageList .= sprintf('<li>- %s</li>', $message);
     }
     $messageHtml = '';
     if ($messageList) {
         $messageHtml .= 'Please make sure you enter the following fields before changing to completed state.';
         $messageHtml .= sprintf('<ul>%s</ul>', $messageList);
     }
     return $messageHtml;
 }
Beispiel #5
0
/**
 * checks empty template or empty array
 * @param $data
 * @return bool
 * @internal param $input
 */
function emptyOrHasEmptyTemplate($data)
{
    $temp = $data;
    removeEmptyValues($temp);
    return !boolval($temp);
}
 /**
  * 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);
 }