Adding method to mark all given pageids as online

parent 7ca5e262
...@@ -90,4 +90,15 @@ class CachePageDecorator extends BaseCacheDecorator implements PageRepository ...@@ -90,4 +90,15 @@ class CachePageDecorator extends BaseCacheDecorator implements PageRepository
} }
); );
} }
/**
* @param int $pageId
* @return mixed
*/
public function markAsOnlineInAllLocales(int $pageId)
{
$this->clearCache();
$this->markAsOnlineInAllLocales($pageId);
}
} }
...@@ -5,6 +5,7 @@ namespace Modules\Page\Repositories\Eloquent; ...@@ -5,6 +5,7 @@ namespace Modules\Page\Repositories\Eloquent;
use Illuminate\Contracts\Pagination\LengthAwarePaginator; use Illuminate\Contracts\Pagination\LengthAwarePaginator;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Mcamara\LaravelLocalization\LaravelLocalization;
use Modules\Core\Repositories\Eloquent\EloquentBaseRepository; use Modules\Core\Repositories\Eloquent\EloquentBaseRepository;
use Modules\Page\Events\PageIsCreating; use Modules\Page\Events\PageIsCreating;
use Modules\Page\Events\PageIsUpdating; use Modules\Page\Events\PageIsUpdating;
...@@ -171,4 +172,20 @@ class EloquentPageRepository extends EloquentBaseRepository implements PageRepos ...@@ -171,4 +172,20 @@ class EloquentPageRepository extends EloquentBaseRepository implements PageRepos
// ->groupBy('page__pages.id')->orderBy("t.title", 'desc'); // ->groupBy('page__pages.id')->orderBy("t.title", 'desc');
return $pages->paginate($request->get('per_page', 10)); return $pages->paginate($request->get('per_page', 10));
} }
/**
* @param int $pageId
* @return mixed
*/
public function markAsOnlineInAllLocales(int $pageId)
{
$page = $this->find($pageId);
$data = [];
foreach (app(LaravelLocalization::class)->getSupportedLocales() as $locale => $supportedLocale) {
$data[$locale] = ['status' => 1];
}
return $this->update($page, $data);
}
} }
...@@ -33,4 +33,10 @@ interface PageRepository extends BaseRepository ...@@ -33,4 +33,10 @@ interface PageRepository extends BaseRepository
* @return LengthAwarePaginator * @return LengthAwarePaginator
*/ */
public function serverPaginationFilteringFor(Request $request) : LengthAwarePaginator; public function serverPaginationFilteringFor(Request $request) : LengthAwarePaginator;
/**
* @param int $pageId
* @return mixed
*/
public function markAsOnlineInAllLocales(int $pageId);
} }
...@@ -188,6 +188,17 @@ class EloquentPageRepositoryTest extends BasePageTest ...@@ -188,6 +188,17 @@ class EloquentPageRepositoryTest extends BasePageTest
}); });
} }
/** @test */
public function it_can_mark_page_as_online_in_all_locales()
{
$page = $this->createRandomPage(['en' => ['status' => 0], 'fr' => ['status' => 0]]);
$page = $this->page->markAsOnlineInAllLocales($page->id);
$this->assertTrue($page->translate('en')->status);
$this->assertTrue($page->translate('fr')->status);
}
private function createPage() private function createPage()
{ {
return $this->page->create([ return $this->page->create([
...@@ -200,4 +211,25 @@ class EloquentPageRepositoryTest extends BasePageTest ...@@ -200,4 +211,25 @@ class EloquentPageRepositoryTest extends BasePageTest
], ],
]); ]);
} }
private function createRandomPage(array $properties)
{
$faker = \Faker\Factory::create();
$data = [
'is_home' => 0,
'template' => 'default',
'en' => [
'title' => $faker->name,
'slug' => $faker->slug,
'body' => $faker->paragraph(),
],
'fr' => [
'title' => $faker->name,
'slug' => $faker->slug,
'body' => $faker->paragraph(),
],
];
return $this->page->create($data + $properties);
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment