From f74ee6c698f1ae63dfdc7e7d9e8866f49db6f007 Mon Sep 17 00:00:00 2001 From: PG-Momik Date: Fri, 5 May 2023 12:53:52 +0545 Subject: [PATCH] [change]: code review --- app/Console/Commands/FixDocumentLink.php | 14 +++++++++++--- app/Console/Commands/FixRegionIssues.php | 6 ++++-- app/Console/Commands/FixTransaction.php | 14 +++++++++++--- .../Repositories/Activity/ActivityRepository.php | 11 +++++++++++ .../Organization/OrganizationRepository.php | 12 ++++++++++++ app/IATI/Services/Activity/ActivityService.php | 11 +++++++++++ .../Services/Organization/OrganizationService.php | 12 ++++++++++++ 7 files changed, 72 insertions(+), 8 deletions(-) diff --git a/app/Console/Commands/FixDocumentLink.php b/app/Console/Commands/FixDocumentLink.php index 59cfbf8b9e..b38935178b 100644 --- a/app/Console/Commands/FixDocumentLink.php +++ b/app/Console/Commands/FixDocumentLink.php @@ -6,6 +6,8 @@ use App\IATI\Models\Activity\Activity; use App\IATI\Models\Organization\Organization; +use App\IATI\Services\Activity\ActivityService; +use App\IATI\Services\Organization\OrganizationService; use App\IATI\Traits\MigrateActivityTrait; use App\IATI\Traits\MigrateOrganizationTrait; use Exception; @@ -78,8 +80,14 @@ class FixDocumentLink extends Command * * @param DB $db * @param DatabaseManager $databaseManager + * @param OrganizationService $organizationService + * @param ActivityService $activityService */ - public function __construct(protected DB $db, protected DatabaseManager $databaseManager) + public function __construct(protected DB $db, + protected DatabaseManager $databaseManager, + protected OrganizationService $organizationService, + protected ActivityService $activityService + ) { parent::__construct(); } @@ -111,11 +119,11 @@ public function handle(): int $aidstreamOrganizationIdentifierArray = $this->getAidstreamOrganizationIdentifier($aidstreamOrganizationIds); $aidstreamOrganizationIdentifierArray = array_map('strtolower', $aidstreamOrganizationIdentifierArray); - $iatiOrganizations = Organization::whereIn('publisher_id', $aidstreamOrganizationIdentifierArray)->get(); + $iatiOrganizations = $this->organizationService->getOrganizationByPublisherIds($aidstreamOrganizationIdentifierArray); $iatiOrganizationIdArray = $iatiOrganizations->pluck('id', 'publisher_id'); $idMap = $this->mapOrganizationIds($aidstreamOrganizationIdentifierArray, $iatiOrganizationIdArray); - $activities = Activity::whereIn('org_id', $idMap)->get(); + $activities = $this->activityService->getActivitiesByOrgIds($idMap); foreach ($activities as $activity) { $this->fixActivityResultDocumentLink($activity); diff --git a/app/Console/Commands/FixRegionIssues.php b/app/Console/Commands/FixRegionIssues.php index e590ae4676..fc13437d30 100644 --- a/app/Console/Commands/FixRegionIssues.php +++ b/app/Console/Commands/FixRegionIssues.php @@ -5,6 +5,7 @@ namespace App\Console\Commands; use App\IATI\Models\Organization\Organization; +use App\IATI\Services\Organization\OrganizationService; use App\IATI\Traits\MigrateActivityTrait; use App\IATI\Traits\MigrateOrganizationTrait; use Exception; @@ -38,7 +39,8 @@ class FixRegionIssues extends Command public function __construct( protected DB $db, - protected DatabaseManager $databaseManager + protected DatabaseManager $databaseManager, + protected OrganizationService $organizationService ) { parent::__construct(); } @@ -77,7 +79,7 @@ public function handle(): void $recipientRegionBudgetArray = $aidstreamOrganizationDataCollectionArray->pluck('recipient_region_budget', 'organization_id'); $aidstreamOrganizationIdentifierArray = array_map('strtolower', $aidstreamOrganizationIdentifierArray); - $iatiOrganizations = Organization::whereIn('publisher_id', $aidstreamOrganizationIdentifierArray)->get(); + $iatiOrganizations = $this->organizationService->getOrganizationByPublisherIds($aidstreamOrganizationIdentifierArray); $iatiOrganizationIdArray = $iatiOrganizations->pluck('id', 'publisher_id'); $idMap = $this->mapOrganizationIds($aidstreamOrganizationIdentifierArray, $iatiOrganizationIdArray); diff --git a/app/Console/Commands/FixTransaction.php b/app/Console/Commands/FixTransaction.php index 2fb47fbe75..fc0d5f2d53 100644 --- a/app/Console/Commands/FixTransaction.php +++ b/app/Console/Commands/FixTransaction.php @@ -6,6 +6,8 @@ use App\IATI\Models\Activity\Activity; use App\IATI\Models\Organization\Organization; +use App\IATI\Services\Activity\ActivityService; +use App\IATI\Services\Organization\OrganizationService; use App\IATI\Traits\MigrateOrganizationTrait; use Illuminate\Console\Command; use Illuminate\Database\DatabaseManager; @@ -39,8 +41,14 @@ class FixTransaction extends Command * * @param DB $db * @param DatabaseManager $databaseManager + * @param ActivityService $activityService + * @param OrganizationService $organizationService */ - public function __construct(protected DB $db, protected DatabaseManager $databaseManager) + public function __construct(protected DB $db, + protected DatabaseManager $databaseManager, + protected ActivityService $activityService, + protected OrganizationService $organizationService + ) { parent::__construct(); } @@ -72,11 +80,11 @@ public function handle() $aidstreamOrganizationIdentifierArray = $this->getAidstreamOrganizationIdentifier($aidstreamOrganizationIds); $aidstreamOrganizationIdentifierArray = array_map('strtolower', $aidstreamOrganizationIdentifierArray); - $iatiOrganizations = Organization::whereIn('publisher_id', $aidstreamOrganizationIdentifierArray)->get(); + $iatiOrganizations = $this->organizationService->getOrganizationByPublisherIds($aidstreamOrganizationIdentifierArray); $iatiOrganizationIdArray = $iatiOrganizations->pluck('id', 'publisher_id'); $idMap = $this->mapOrganizationIds($aidstreamOrganizationIdentifierArray, $iatiOrganizationIdArray); - $activities = Activity::whereIn('org_id', $idMap)->get(); + $activities = $this->activityService->getActivitiesByOrgIds($idMap); foreach ($activities as $activity) { $this->fixAllTransaction($activity); diff --git a/app/IATI/Repositories/Activity/ActivityRepository.php b/app/IATI/Repositories/Activity/ActivityRepository.php index 8e0adcd9d1..b5a71d287d 100644 --- a/app/IATI/Repositories/Activity/ActivityRepository.php +++ b/app/IATI/Repositories/Activity/ActivityRepository.php @@ -472,4 +472,15 @@ public function updateReportingOrg($id, $key, $data): int { return $this->model->where('id', $id)->update(["reporting_org->0->{$key}"=>$data]); } + + /** + * Returns activities by org ids + * @param array $orgIds + * + * @return Collection|array + */ + public function getActivitiesByOrgIds(array $orgIds): Collection | array + { + return $this->model->whereIn('org_id', $orgIds)->get(); + } } diff --git a/app/IATI/Repositories/Organization/OrganizationRepository.php b/app/IATI/Repositories/Organization/OrganizationRepository.php index e8ca473ed1..a5d4707604 100644 --- a/app/IATI/Repositories/Organization/OrganizationRepository.php +++ b/app/IATI/Repositories/Organization/OrganizationRepository.php @@ -10,6 +10,7 @@ use App\IATI\Repositories\Repository; use App\IATI\Traits\FillDefaultValuesTrait; use Illuminate\Contracts\Pagination\LengthAwarePaginator; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Collection; @@ -176,4 +177,15 @@ public function getOrganizationByPublisherId($publisherId): ?object { return $this->model->where('publisher_id', $publisherId)->with(['settings', 'users', 'activities'])->first(); } + /** + * Returns Organizations by publisher ids + * + * @param array $publisherIds + * + * @return array|Collection + */ + public function getOrganizationByPublisherIds(array $publisherIds): Collection | array + { + return $this->model->whereIn('publisher_id', $publisherIds)->get(); + } } diff --git a/app/IATI/Services/Activity/ActivityService.php b/app/IATI/Services/Activity/ActivityService.php index 086da8c038..3dfa17123d 100644 --- a/app/IATI/Services/Activity/ActivityService.php +++ b/app/IATI/Services/Activity/ActivityService.php @@ -674,4 +674,15 @@ public function getReportingOrg(): mixed { return app(OrganizationRepository::class)->getSpecifiedColumn(auth()->user()->organization->id, 'reporting_org'); } + /** + * Returns activities by organization ids + * + * @param array $idMap + * + * @return array|Collection + */ + public function getActivitiesByOrgIds(array $idMap): Collection | array + { + return $this->activityRepository->getActivitiesByOrgIds($idMap); + } } diff --git a/app/IATI/Services/Organization/OrganizationService.php b/app/IATI/Services/Organization/OrganizationService.php index dba33aa7fc..dc70ea49bb 100644 --- a/app/IATI/Services/Organization/OrganizationService.php +++ b/app/IATI/Services/Organization/OrganizationService.php @@ -11,6 +11,7 @@ use GuzzleHttp\Client; use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\Pagination\LengthAwarePaginator; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Arr; use Illuminate\Support\Collection; @@ -236,4 +237,15 @@ public function getOrganizationByPublisherId($publisher_id): ?object { return $this->organizationRepo->getOrganizationByPublisherId($publisher_id); } + /** + * Returns organizations by publisher ids + * + * @param array $publisherIds + * + * @return Builder|Model|mixed|object|null + */ + public function getOrganizationByPublisherIds(array $publisherIds): mixed + { + return $this->organizationRepo->getOrganizationByPublisherIds($publisherIds); + } }