46 lines
1.3 KiB
PHP
46 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\API;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Article;
|
|
use Illuminate\Support\Carbon;
|
|
use App\Http\Resources\ArticleResource;
|
|
use App\Http\Controllers\Controller;
|
|
|
|
class TodaysPick extends Controller
|
|
{
|
|
/**
|
|
* __invoke
|
|
*
|
|
* Query the Articles published today and return 8 articles from unique sources
|
|
*
|
|
* @return void
|
|
*/
|
|
public function __invoke()
|
|
{
|
|
return Article::with('topics', 'source')
|
|
->whereDate('published_date', Carbon::today())
|
|
->inRandomOrder()
|
|
->take(8)
|
|
->get()
|
|
->transform(function ($article) {
|
|
return [
|
|
"id" => $article->id,
|
|
"title" => $article->title,
|
|
"url" => $article->url,
|
|
"author" => $article->author,
|
|
"featured_image" => $article->featured_image,
|
|
"published_date" => $article->published_date,
|
|
"meta" => $article->meta,
|
|
"source" => $article->source,
|
|
"topics" => $article->topics,
|
|
"body" => $article->body,
|
|
];
|
|
})
|
|
->unique('source.name')
|
|
->values()
|
|
->toArray();
|
|
}
|
|
}
|