Skip to content

Commit

Permalink
Merge pull request #1549 from younginnovations/rollback-main
Browse files Browse the repository at this point in the history
Review: rollback-main-sept-9
  • Loading branch information
Sanilblank authored Sep 9, 2024
2 parents 4c66a65 + b8a3a2e commit 35f1e5c
Show file tree
Hide file tree
Showing 45 changed files with 1,180 additions and 5,255 deletions.
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,3 @@ secret.yaml
github-credentials.yaml
/app_versions/*.json
/app/DataMigration/*.xlsx
/public/css
/public/js
/storage/test.xml
8 changes: 3 additions & 5 deletions app/Helpers/elementDeprecation.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ function hasDeprecatedValue($element, $compareMap): bool
*/
function generateDeprecationMap($element, $compareMap, string $path = ''): array
{
if ($element) {
$results = [];
$results = [];

if ($results) {
foreach ($element as $key => $value) {
if (is_array($value)) {
$nestedResults = generateDeprecationMap($value, $compareMap, $path . ($path === '' ? '' : '.') . $key);
Expand All @@ -54,11 +54,9 @@ function generateDeprecationMap($element, $compareMap, string $path = ''): array
}
}
}

return $results;
}

return [];
return $results;
}

function onlyDeprecatedItemsFromCodeList(string $path)
Expand Down
13 changes: 0 additions & 13 deletions app/Helpers/general.php
Original file line number Diff line number Diff line change
Expand Up @@ -1155,19 +1155,6 @@ function flattenArrayWithKeys($array, $prefix = ''): array
}
}

if (!function_exists('arrayOr')) {
function arrayOr(array $array): bool
{
foreach ($array as $item) {
if ($item) {
return true;
}
}

return false;
}
}

if (!function_exists('refreshActivityDeprecationStatusMap')) {
function refreshActivityDeprecationStatusMap(array $activity): array
{
Expand Down
38 changes: 5 additions & 33 deletions app/Http/Controllers/Admin/Workflow/BulkPublishingController.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
use Auth;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Session;
Expand Down Expand Up @@ -106,7 +105,7 @@ public function checkCoreElementsCompleted(Request $request): JsonResponse

if (!empty($activityIds)) {
$coreElementsCompletion = $this->bulkPublishingService->getCoreElementsCompletedArray($activityIds);
$deprecationStatusMap = $this->bulkPublishingService->getActivitiesWithDeprecatedValueArray($activityIds, $this->activityService);
$deprecationStatusMap = $this->bulkPublishingService->refreshDeprecationStatus($activityIds);

DB::commit();

Expand All @@ -116,11 +115,6 @@ public function checkCoreElementsCompleted(Request $request): JsonResponse
'data' => [
'core_elements_completion'=> $coreElementsCompletion,
'deprecation_status_map' => $deprecationStatusMap,
'counts' => [
'deprecated_list' => count($deprecationStatusMap ?? []),
'complete_list' => count(Arr::get($coreElementsCompletion, 'complete', [])),
'incomplete_list' => count(Arr::get($coreElementsCompletion, 'incomplete', [])),
],
],
]);
}
Expand Down Expand Up @@ -415,13 +409,10 @@ public function getValidationStatus(Request $request): JsonResponse
$activityIds = json_decode($request->get('activities'), true, 512, JSON_THROW_ON_ERROR);

if (!empty($activityIds)) {
$activities = $this->activityService->getActivitiesHavingIds($activityIds);
$filteredActivityIds = $this->filterOutPublishedStateActivityIds($activityIds, $activities->toArray());
$response = $this->bulkPublishingService->getActivityValidationStatus($filteredActivityIds);

$hasFailedStatus = $response['failed_count'] > 0;
$response = $this->bulkPublishingService->getActivityValidationStatus($activityIds);
$hasFailedStatus = in_array('failed', $response);

return response()->json(['success' => !$hasFailedStatus, 'data' => $response]);
return response()->json(['success' => !$hasFailedStatus, 'data' => $response, 'total' => count($response)]);
}

return response()->json(['success' => false, 'message' => 'Activity not selected.']);
Expand All @@ -433,7 +424,7 @@ public function getValidationStatus(Request $request): JsonResponse
}

/**
* Get Validation responses of activities.
* Get Validation responses of activites.
*
* @param Request $request
*
Expand Down Expand Up @@ -477,23 +468,4 @@ public function deleteValidationStatus(): JsonResponse
return response()->json(['success' => false, 'message' => 'Error has occurred while deleting validation status.']);
}
}

/**
* Filter out published state activity id's.
*
* @param array $activityIds
* @param array $activities
*
* @return array
*/
public function filterOutPublishedStateActivityIds(array $activityIds, array $activities): array
{
$activityLookup = [];

foreach ($activities as $activity) {
$activityLookup[$activity['id']] = $activity;
}

return array_filter($activityIds, fn ($activityId) => isset($activityLookup[$activityId]) && $activityLookup[$activityId]['status']);
}
}
67 changes: 3 additions & 64 deletions app/IATI/Elements/Xml/XmlGenerator.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@

use App\Constants\Enums;
use App\IATI\Models\Setting\Setting;
use App\IATI\Repositories\Activity\BulkPublishingStatusRepository;
use App\IATI\Services\Activity\ActivityPublishedService;
use App\IATI\Services\Activity\ActivityService;
use App\IATI\Services\Activity\BudgetService;
Expand Down Expand Up @@ -228,47 +227,24 @@ class XmlGenerator
*/
protected ActivityPublishedService $activityPublishedService;

/**
* @var BulkPublishingStatusRepository
*/
private BulkPublishingStatusRepository $publishingStatusRepository;

/**
* @var string|bool
*/
private string|bool $uuid;

/**
* XmlGenerator Constructor.
*
* @param ActivityService $activityService
* @param OrganizationService $organizationService
* @param ArrayToXml $arrayToXml
* @param ActivityPublishedService $activityPublishedService
* @param BulkPublishingStatusRepository $publishingStatusRepository
*/
public function __construct(
ActivityService $activityService,
OrganizationService $organizationService,
ArrayToXml $arrayToXml,
ActivityPublishedService $activityPublishedService,
BulkPublishingStatusRepository $publishingStatusRepository
ActivityPublishedService $activityPublishedService
) {
$this->activityService = $activityService;
$this->organizationService = $organizationService;
$this->arrayToXml = $arrayToXml;
$this->activityPublishedService = $activityPublishedService;
$this->publishingStatusRepository = $publishingStatusRepository;
}

/**
* @param bool|string $uuid
*
* @return void
*/
public function setUuid(bool|string $uuid): void
{
$this->uuid = $uuid;
}

/**
Expand Down Expand Up @@ -304,29 +280,20 @@ public function generateActivityXml($activity, $transaction, $result, $settings,
* @param $organization
* @param bool $refreshTimestamp
*
* @return array
* @return void
*
* @throws JsonException
*
* @throws Exception
*/
public function generateActivitiesXml($activityData, $settings, $organization, bool $refreshTimestamp = true): array
public function generateActivitiesXml($activityData, $settings, $organization, bool $refreshTimestamp = true): void
{
$publishingInfo = $settings->publishing_info;
$publisherId = Arr::get($publishingInfo, 'publisher_id', 'Not Available');
$innerActivityXmlArray = [];
$activityMappedToActivityIdentifier = [];
$successfullyProcessedActivities = [];

foreach ($activityData as $activity) {
if ($this->isNormalWorkflow($refreshTimestamp)) {
$this->publishingStatusRepository->updateActivityStatus($activity->id, $this->uuid, 'processing');

if (!$this->bulkPublishHasNotBeenCanceled($activity->id, $this->uuid)) {
continue;
}
}

$publishedActivity = sprintf('%s-%s.xml', $publisherId, $activity->id);
$activityCompleteXml = $this->getXml($activity, $activity->transactions ?? [], $activity->results ?? [], $settings, $organization, $refreshTimestamp);
$innerActivityXml = $activityCompleteXml->getElementsByTagName('iati-activity')->item(0);
Expand All @@ -338,17 +305,13 @@ public function generateActivitiesXml($activityData, $settings, $organization, b
$publishedFiles[] = $publishedActivity;

awsUploadFile(sprintf('%s/%s/%s', 'xml', 'activityXmlFiles', $publishedActivity), $activityCompleteXml->saveXML());

$successfullyProcessedActivities[] = $activity;
}

if (count($innerActivityXmlArray)) {
$filename = sprintf('%s-%s.xml', $publisherId, 'activities');
$this->savePublishedFiles($filename, $activity->org_id, $publishedFiles);
$this->appendMultipleInnerActivityXmlToMergedXml($innerActivityXmlArray, $settings, $organization, $activityMappedToActivityIdentifier, $refreshTimestamp);
}

return $successfullyProcessedActivities;
}

/**
Expand Down Expand Up @@ -887,28 +850,4 @@ public function extractIatiIdentifierFromMergedXml(SimpleXMLElement $mergedXml):

return $iatiIdentifierArray;
}

/**
* @param bool $refreshTimestamp
*
* @return bool
*/
private function isNormalWorkflow(bool $refreshTimestamp): bool
{
return $refreshTimestamp;
}

/**
* @param $activityId
* @param bool|string $uuid
*
* @return bool
*/
private function bulkPublishHasNotBeenCanceled($activityId, bool|string $uuid = false): bool
{
$activityPublishingStatus = $this->publishingStatusRepository->getSpecificActivityPublishingStatus($activityId, $uuid);
$activityPublishingStatus = $activityPublishingStatus ?? [];

return count($activityPublishingStatus) !== 0;
}
}
16 changes: 0 additions & 16 deletions app/IATI/Repositories/Activity/BulkPublishingStatusRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,22 +60,6 @@ public function getActivityPublishingStatus($organizationId, ?string $uuid = '')
})->get();
}

/**
* Returns activity publishing status.
*
* @param $activityId
* @param bool|string $uuid
*
* @return object|null
*/
public function getSpecificActivityPublishingStatus($activityId, bool|string $uuid = false): ?object
{
return $this->model->where('activity_id', '=', $activityId)
->when(!empty($uuid), function ($query) use ($uuid) {
return $query->where('job_batch_uuid', '=', $uuid);
})->get();
}

/**
* Returns activities that are currently undergoing bulk publishing for an organization.
*
Expand Down
Loading

0 comments on commit 35f1e5c

Please sign in to comment.