/** * 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; }
/** * 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); }