44
55namespace HiEvents \Repository \Eloquent ;
66
7+ use HiEvents \DomainObjects \Generated \OrganizerDomainObjectAbstract ;
8+ use HiEvents \DomainObjects \Generated \OrganizerSettingDomainObjectAbstract ;
79use HiEvents \DomainObjects \OrganizerDomainObject ;
10+ use HiEvents \DomainObjects \Status \OrganizerStatus ;
811use HiEvents \Models \Organizer ;
912use HiEvents \Repository \DTO \Organizer \OrganizerStatsResponseDTO ;
1013use HiEvents \Repository \Interfaces \OrganizerRepositoryInterface ;
14+ use Illuminate \Pagination \LengthAwarePaginator ;
1115
1216class OrganizerRepository extends BaseRepository implements OrganizerRepositoryInterface
1317{
@@ -21,6 +25,33 @@ public function getDomainObject(): string
2125 return OrganizerDomainObject::class;
2226 }
2327
28+ public function getSitemapOrganizers (int $ page , int $ perPage ): LengthAwarePaginator
29+ {
30+ return $ this ->handleResults ($ this ->model
31+ ->select ([
32+ 'organizers. ' . OrganizerDomainObjectAbstract::ID ,
33+ 'organizers. ' . OrganizerDomainObjectAbstract::NAME ,
34+ 'organizers. ' . OrganizerDomainObjectAbstract::UPDATED_AT ,
35+ ])
36+ ->join ('organizer_settings ' , 'organizers.id ' , '= ' , 'organizer_settings.organizer_id ' )
37+ ->where ('organizers. ' . OrganizerDomainObjectAbstract::STATUS , OrganizerStatus::LIVE ->name )
38+ ->where ('organizer_settings. ' . OrganizerSettingDomainObjectAbstract::ALLOW_SEARCH_ENGINE_INDEXING , true )
39+ ->whereNull ('organizers. ' . OrganizerDomainObjectAbstract::DELETED_AT )
40+ ->orderBy ('organizers. ' . OrganizerDomainObjectAbstract::ID )
41+ ->paginate ($ perPage , ['* ' ], 'page ' , $ page ));
42+ }
43+
44+ public function getSitemapOrganizerCount (): int
45+ {
46+ return $ this ->model
47+ ->newQuery ()
48+ ->join ('organizer_settings ' , 'organizers.id ' , '= ' , 'organizer_settings.organizer_id ' )
49+ ->where ('organizers. ' . OrganizerDomainObjectAbstract::STATUS , OrganizerStatus::LIVE ->name )
50+ ->where ('organizer_settings. ' . OrganizerSettingDomainObjectAbstract::ALLOW_SEARCH_ENGINE_INDEXING , true )
51+ ->whereNull ('organizers. ' . OrganizerDomainObjectAbstract::DELETED_AT )
52+ ->count ();
53+ }
54+
2455 public function getOrganizerStats (int $ organizerId , int $ accountId , string $ currencyCode ): OrganizerStatsResponseDTO
2556 {
2657 $ totalsQuery = <<<SQL
0 commit comments