File: /home/imensosw/www/mpl.imenso.co/app/Repositories/CommentRepository.php
<?php
namespace App\Repositories;
use App\Models\MplGlobalNews;
use App\Models\News;
use App\Models\User;
use Illuminate\Support\Collection;
class CommentRepository extends Repository
{
public $news_post;
public $user;
public static function forGlobalNewsPost(MplGlobalNews $news)
{
$repo = new self;
$repo->news_post = $news;
return $repo;
}
public static function forNewsPost(News $news)
{
$repo = new self;
$repo->news_post = $news;
return $repo;
}
public function withUser(User $user)
{
$this->user = $user;
return $this;
}
public function get()
{
$comments = $this->news_post->comments()
->orderby($this->order_by, $this->order_direction)
->skip($this->skip)
->take($this->take)
->get();
$this->items = $comments;
return $this->items;
}
public function prepareForExternalUse()
{
$flattened = new Collection;
foreach ($this->items as $item) {
$data = $item->toArray();
$data['post_date'] = $item->created_at->diffForHumans();
$data['like_count'] = $item->likes->count();
$data['author'] = [
'name' => $item->user->getName(),
'thumbnail' => url($item->user->profileImageSrc()),
];
$data['liked'] = 0;
$data['reported'] = 0;
if ($this->user) {
$data['liked'] = $item->isLikedByUser($this->user);
$data['reported'] = $item->isReportedByUser($this->user);
}
$flattened->push($data);
}
return $flattened;
}
}