Skip to content

Commit

Permalink
Finish API routes for sorting and finish API fully
Browse files Browse the repository at this point in the history
  • Loading branch information
perisicnikola37 committed Oct 2, 2022
1 parent 44c79d9 commit 3238dad
Show file tree
Hide file tree
Showing 5 changed files with 104 additions and 11 deletions.
47 changes: 40 additions & 7 deletions app/Http/Controllers/API/UserAPIController.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@

namespace App\Http\Controllers\API;

use Algolia\AlgoliaSearch\Http\Psr7\Request;
use App\Http\Controllers\Controller;
use App\Http\Resources\AdministratorCollection;
use App\Http\Resources\LibrarianCollection;
use App\Http\Resources\LibrarianFemaleCollection;
use App\Http\Resources\LibrarianMaleCollection;
use App\Http\Resources\ShowAuthorResource;
use App\Http\Resources\ShowUserResource;
use App\Http\Resources\StudentCollection;
use App\Http\Resources\StudentFemaleCollection;
Expand All @@ -15,25 +18,25 @@
use App\Http\Resources\UserTypeCountResource;
use App\Models\User;
use App\Models\UserType;
use Illuminate\Support\Facades\DB;
use Symfony\Component\HttpFoundation\Response;

class UserAPIController extends Controller
{
public function __construct()
{
// $this->middleware('auth:api')->except('index', 'show');
}

public function users() {
return UserCollection::collection(User::paginate(5));
}

public function students() {
return StudentCollection::collection(User::where('user_type_id', 1)->paginate(5));
}

public function librarians() {
return LibrarianCollection::collection(User::where('user_type_id', 2)->paginate(5));
}

public function students() {
return StudentCollection::collection(User::where('user_type_id', 1)->paginate(5));
public function administrators() {
return AdministratorCollection::collection(User::where('user_type_id', 3)->paginate(5));
}

public function userTypes() {
Expand Down Expand Up @@ -75,4 +78,34 @@ public function librariansFemale() {
'user_type_id' => 2,
])->paginate(5));
}

public function sortLibrarians($parameter) {
if ($parameter == 'desc') {
$order = 'desc';
} else {
$order = 'asc';
}
$filter = User::where('user_type_id', 2)->orderBy('id', $order)->get();
return $filter;
}

public function sortStudents($parameter) {
if ($parameter == 'desc') {
$order = 'desc';
} else {
$order = 'asc';
}
$filter = User::where('user_type_id', 1)->orderBy('id', $order)->get();
return $filter;
}

public function sortAdministrators($parameter) {
if ($parameter == 'desc') {
$order = 'desc';
} else {
$order = 'asc';
}
$filter = User::where('user_type_id', 3)->orderBy('id', $order)->get();
return $filter;
}
}
34 changes: 34 additions & 0 deletions app/Http/Resources/AdministratorCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class AdministratorCollection extends JsonResource
{
/**
* Transform the resource collection into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
if ($this->gender->id == 1) {
$d = 'Administrator';
} else {
$d = 'Administratorka';
}
return [
'ID' => $this->id,
'name' => $this->name,
'username' => $this->username,
'gender' => $this->gender->name,
'email' => $this->email,
'JMBG' => $this->JMBG,
'role' => $d,
'login_count' => $this->login_count,
'last_login_at' => $this->last_login_at->diffForHumans(),
];
}
}
9 changes: 5 additions & 4 deletions app/Http/Resources/ShowAuthorResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,11 @@ class ShowAuthorResource extends JsonResource
public function toArray($request)
{
return [
'ID' => $this->id,
'name' => Str::ucfirst($this->NameSurname),
'biography' => $this->biography,
'wikipedia' => $this->wikipedia,
'id' => $this->id,
// 'ID' => $this->id,
// 'name' => Str::ucfirst($this->NameSurname),
// 'biography' => $this->biography,
// 'wikipedia' => $this->wikipedia,
];
}
}
7 changes: 7 additions & 0 deletions app/Models/User.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,13 @@ public function toSearchableArray()
protected $hidden = [
'password',
'remember_token',
'created_at',
'updated_at',
'user_type_id',
'user_gender_id',
'email_verified_at',
'photo',
'last_login_at',
];

/**
Expand Down
18 changes: 18 additions & 0 deletions routes/api.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,35 @@
return $request->user();
});

// Version 1.0
Route::group(['prefix'=>'v1'], function(){

// Users
Route::get('/korisnici', [UserAPIController::class, 'users']);

// Students
Route::get('/ucenici-svi', [UserAPIController::class, 'students']);
Route::get('/ucenici', [UserAPIController::class, 'studentsMale']);
Route::get('/ucenice', [UserAPIController::class, 'studentsFemale']);

// Librarians
Route::get('/bibliotekari-svi', [UserAPIController::class, 'librarians']);
Route::get('/bibliotekari', [UserAPIController::class, 'librariansMale']);
Route::get('/bibliotekarke', [UserAPIController::class, 'librariansFemale']);

// Administrators
Route::get('/administratori-svi', [UserAPIController::class, 'administrators']);
Route::get('/administratori/{parameter}', [UserAPIController::class, 'sortAdministrators']);

// User types
Route::get('/tipovi-korisnika', [UserAPIController::class, 'userTypes']);
Route::get('/tipovi-korisnika-broj', [UserAPIController::class, 'userTypesCount']);

// User sorting
Route::get('/bibliotekari/{parameter}', [UserAPIController::class, 'sortLibrarians']);
Route::get('/ucenici/{parameter}', [UserAPIController::class, 'sortStudents']);
Route::get('/administratori/{parameter}', [UserAPIController::class, 'sortAdministrators']);

// Books
Route::get('/knjige', [BookAPIController::class, 'books']);
Route::get('/knjiga/{id}', [BookAPIController::class, 'showBook'])->name('show-book-api');
Expand Down Expand Up @@ -111,6 +128,7 @@
Route::delete('/izbrisi-globalnu-varijablu/{id}', [GlobalVariableAPIController::class, 'destroyGlobalVariable']);
Route::get('/trazi-globalnu-varijablu/{variable}', [GlobalVariableAPIController::class, 'searchGlobalVariable']);
Route::get('/globalne-varijable-broj', [GlobalVariableAPIController::class, 'globalVariablesCount']);

});


Expand Down

0 comments on commit 3238dad

Please sign in to comment.