-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclients.php
60 lines (50 loc) · 2.05 KB
/
clients.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
// Infraread API for external Clients Requests
use App\Models\Category;
use App\Models\Post;
use App\Models\Source;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;
Route::group(['prefix' => 'client'], function () {
// Get the initial data
Route::get('/initialData', function (Request $request) {
// Make sure Request contains username and password
if (!Auth::attempt($request->only(['email', 'password']))) {
return response(collect(['response' => 401])->toArray(), 401);
}
// Get categories, sources, and posts;
$categories = Category::where('id', '>', 0)->select(['id', 'description'])->get();
$sources = Source::where('id', '>', 0)->select(['id', 'category_id', 'name', 'description'])->get();
$posts = collect();
foreach (Source::all() as $key => $source) {
$posts = $posts->merge($source->latestPostsSinceEarliestUnread());
}
// consolidate all in a response object and return as json
$res = collect([
'response' => 200,
'data' => [
'categories' => $categories,
'sources' => $sources,
'posts' => $posts, ],
]);
return $res->toArray();
})->middleware('cors');
Route::get('/toggleReadStatus', function (Request $request) {
// Make sure Request contains username and password
if (!Auth::attempt($request->only(['email', 'password']))) {
return response(collect(['response' => 401])->toArray(), 401);
}
try {
$post = Post::findOrFail($request->post);
$post->read = abs(1 - $post->read);
$post->save();
return response(collect(['response' => 200])->toArray(), 200); //code...
} catch (\Throwable $th) {
return response(collect(['response' => 500])->toArray(), 500);
}
})->middleware('cors');
// mark post read
// toggle post read status
// mark post unread
});