Adding method to mark all given pageids as online

parent 7ca5e262
......@@ -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;
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\Request;
use Mcamara\LaravelLocalization\LaravelLocalization;
use Modules\Core\Repositories\Eloquent\EloquentBaseRepository;
use Modules\Page\Events\PageIsCreating;
use Modules\Page\Events\PageIsUpdating;
......@@ -171,4 +172,20 @@ class EloquentPageRepository extends EloquentBaseRepository implements PageRepos
// ->groupBy('page__pages.id')->orderBy("t.title", 'desc');
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
* @return 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
});
}
/** @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()
{
return $this->page->create([
......@@ -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