api settings from server
This commit is contained in:
parent
6866f94346
commit
f88ffc73f9
|
|
@ -1,102 +1,139 @@
|
|||
<?php namespace AhmadFatoni\ApiGenerator\Controllers\API;
|
||||
|
||||
use Cms\Classes\Controller;
|
||||
use BackendMenu;
|
||||
use DB;
|
||||
use Config;
|
||||
use Illuminate\Http\Request;
|
||||
use AhmadFatoni\ApiGenerator\Helpers\Helpers;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use RainLab\Blog\Models\Post;
|
||||
|
||||
use RainLab\Blog\Classes\PostResource;
|
||||
|
||||
class PostsController extends Controller
|
||||
{
|
||||
protected $Post;
|
||||
|
||||
protected $helpers;
|
||||
|
||||
public function __construct(Post $Post, Helpers $helpers)
|
||||
{
|
||||
parent::__construct();
|
||||
$this->Post = $Post;
|
||||
$this->helpers = $helpers;
|
||||
}
|
||||
|
||||
public function index(Request $request){
|
||||
|
||||
$data = $request->all();
|
||||
|
||||
$validator = Validator::make($data, [
|
||||
'locale' => 'required|in:ru,en,tm',
|
||||
]);
|
||||
|
||||
if($validator->fails()) {
|
||||
return $this->helpers->apiArrayResponseBuilder(400, 'fail', $validator->errors() );
|
||||
}
|
||||
|
||||
$filter = [
|
||||
'page' => input('page'),
|
||||
'sort' => input('sort')??'published_at desc',
|
||||
'perPage' => input('count'),
|
||||
'search' => trim(input('search')),
|
||||
'category' => input('category'),
|
||||
'date' => input('date'),
|
||||
];
|
||||
|
||||
if(request()->has('featured')){
|
||||
$filter['featured'] = true;
|
||||
}
|
||||
|
||||
$data = response()->json(
|
||||
PostResource::collection($this->Post::with(['categories:id,name'])->listFrontEnd($filter)));
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function show($id, Request $request)
|
||||
{
|
||||
$data = $request->all();
|
||||
$validator = Validator::make($data, [
|
||||
'locale' => 'required|in:ru,en,tm',
|
||||
]);
|
||||
if($validator->fails()) {
|
||||
return $this->helpers->apiArrayResponseBuilder(400, 'fail', $validator->errors() );
|
||||
}
|
||||
|
||||
if(!$post = $this->Post::find($id)) {
|
||||
return $this->helpers->apiArrayResponseBuilder(404, 'not found', ['error' => "Resource id = {$id} could not be found"]);
|
||||
} else {
|
||||
$obj = Db::table('vdomah_blogviews_views')
|
||||
->where('post_id', $post->getKey());
|
||||
|
||||
if ($obj->count() > 0) {
|
||||
$row = $obj->first();
|
||||
|
||||
// $views = $row->views + rand(1,10);;
|
||||
$views = $row->views + 1;;
|
||||
|
||||
$obj->update(['views' => $views]);
|
||||
$post['views'] = $row->views;
|
||||
}
|
||||
else {
|
||||
|
||||
Db::table('vdomah_blogviews_views')->insert([
|
||||
'post_id' => $post->getKey(),
|
||||
'views' => 1
|
||||
]);
|
||||
}
|
||||
|
||||
return new PostResource($post);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static function getAfterFilters() {return [];}
|
||||
public static function getBeforeFilters() {return [];}
|
||||
public static function getMiddleware() {return [];}
|
||||
public function callAction($method, $parameters=false) {
|
||||
return call_user_func_array(array($this, $method), $parameters);
|
||||
}
|
||||
|
||||
}
|
||||
<?php namespace AhmadFatoni\ApiGenerator\Controllers\API;
|
||||
|
||||
use Cms\Classes\Controller;
|
||||
use BackendMenu;
|
||||
use DB;
|
||||
use Config;
|
||||
use Illuminate\Http\Request;
|
||||
use AhmadFatoni\ApiGenerator\Helpers\Helpers;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use RainLab\Blog\Models\Post;
|
||||
|
||||
use RainLab\Blog\Classes\PostResource;
|
||||
|
||||
class PostsController extends Controller
|
||||
{
|
||||
protected $Post;
|
||||
|
||||
protected $helpers;
|
||||
|
||||
public function __construct(Post $Post, Helpers $helpers)
|
||||
{
|
||||
parent::__construct();
|
||||
$this->Post = $Post;
|
||||
$this->helpers = $helpers;
|
||||
}
|
||||
|
||||
public function index(Request $request){
|
||||
|
||||
$data = $request->all();
|
||||
|
||||
$validator = Validator::make($data, [
|
||||
'locale' => 'required|in:ru,en,tm',
|
||||
]);
|
||||
|
||||
if($validator->fails()) {
|
||||
return $this->helpers->apiArrayResponseBuilder(400, 'fail', $validator->errors() );
|
||||
}
|
||||
|
||||
$filter = [
|
||||
'page' => input('page'),
|
||||
'sort' => input('sort')??'published_at desc',
|
||||
'perPage' => input('count'),
|
||||
'search' => trim(input('search')),
|
||||
'category' => input('category'),
|
||||
'date' => input('date'),
|
||||
'type' => input('type'),
|
||||
];
|
||||
|
||||
if(request()->has('featured')){
|
||||
$filter['featured'] = true;
|
||||
}
|
||||
|
||||
$data = response()->json(
|
||||
PostResource::collection($this->Post::with(['categories:id,name'])->listFrontEnd($filter)));
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function show($id, Request $request)
|
||||
{
|
||||
$data = $request->all();
|
||||
$validator = Validator::make($data, [
|
||||
'locale' => 'required|in:ru,en,tm',
|
||||
]);
|
||||
if($validator->fails()) {
|
||||
return $this->helpers->apiArrayResponseBuilder(400, 'fail', $validator->errors() );
|
||||
}
|
||||
|
||||
if(!$post = $this->Post::find($id)) {
|
||||
return $this->helpers->apiArrayResponseBuilder(404, 'not found', ['error' => "Resource id = {$id} could not be found"]);
|
||||
} else {
|
||||
$obj = Db::table('vdomah_blogviews_views')
|
||||
->where('post_id', $post->getKey());
|
||||
|
||||
if ($obj->count() > 0) {
|
||||
$row = $obj->first();
|
||||
|
||||
// $views = $row->views + rand(1,10);;
|
||||
$views = $row->views + 1;;
|
||||
|
||||
$obj->update(['views' => $views]);
|
||||
$post['views'] = $row->views;
|
||||
}
|
||||
else {
|
||||
|
||||
Db::table('vdomah_blogviews_views')->insert([
|
||||
'post_id' => $post->getKey(),
|
||||
'views' => 1
|
||||
]);
|
||||
}
|
||||
|
||||
return new PostResource($post);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function popular(Request $request){
|
||||
$data = $request->all();
|
||||
|
||||
$validator = Validator::make($data, [
|
||||
'locale' => 'required|in:ru,en,tm',
|
||||
]);
|
||||
|
||||
if($validator->fails()) {
|
||||
return $this->helpers->apiArrayResponseBuilder(400, 'fail', $validator->errors() );
|
||||
}
|
||||
|
||||
$filter = [
|
||||
'page' => input('page'),
|
||||
'perPage' => input('count'),
|
||||
'search' => trim(input('search')),
|
||||
'category' => input('category'),
|
||||
'date' => input('date'),
|
||||
'type' => input('type'),
|
||||
];
|
||||
|
||||
if(request()->has('featured')){
|
||||
$filter['featured'] = true;
|
||||
}
|
||||
|
||||
//$posts = response()->json(
|
||||
// PostResource::collection($this->Post::isPublished()->select("id", "excerpt")
|
||||
// ->leftJoin('vdomah_blogviews_views as pv', 'pv.post_id', '=', 'rainlab_blog_posts.id')->paginate(8)));
|
||||
|
||||
$posts = response()->json(
|
||||
Post::isPublished()->select("id", "title", "slug", "excerpt", "published_at", "type", "views", "video", "powerseo_title", "powerseo_description", "powerseo_keywords")->with("featured_images")
|
||||
->leftJoin('vdomah_blogviews_views as pv', 'pv.post_id', '=', 'rainlab_blog_posts.id')->listFrontEnd($filter));
|
||||
|
||||
return $posts;
|
||||
}
|
||||
|
||||
|
||||
public static function getAfterFilters() {return [];}
|
||||
public static function getBeforeFilters() {return [];}
|
||||
public static function getMiddleware() {return [];}
|
||||
public function callAction($method, $parameters=false) {
|
||||
return call_user_func_array(array($this, $method), $parameters);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,13 @@
|
|||
<?php
|
||||
|
||||
Route::post('fatoni/generate/api', array('as' => 'fatoni.generate.api', 'uses' => 'AhmadFatoni\ApiGenerator\Controllers\ApiGeneratorController@generateApi'));
|
||||
Route::post('fatoni/update/api/{id}', array('as' => 'fatoni.update.api', 'uses' => 'AhmadFatoni\ApiGenerator\Controllers\ApiGeneratorController@updateApi'));
|
||||
Route::get('fatoni/delete/api/{id}', array('as' => 'fatoni.delete.api', 'uses' => 'AhmadFatoni\ApiGenerator\Controllers\ApiGeneratorController@deleteApi'));
|
||||
|
||||
Route::resource('api/v1/categories', 'AhmadFatoni\ApiGenerator\Controllers\API\CategoriesController', ['except' => ['destroy', 'create', 'edit']]);
|
||||
Route::get('api/v1/categories/{id}/delete', ['as' => 'api/v1/categories.delete', 'uses' => 'AhmadFatoni\ApiGenerator\Controllers\API\CategoriesController@destroy']);
|
||||
|
||||
Route::resource('api/v1/posts', 'AhmadFatoni\ApiGenerator\Controllers\API\PostsController', ['except' => ['destroy', 'create', 'edit']]);
|
||||
Route::get('api/v1/posts/{id}/delete', ['as' => 'api/v1/posts.delete', 'uses' => 'AhmadFatoni\ApiGenerator\Controllers\API\PostsController@destroy']);
|
||||
<?php
|
||||
|
||||
Route::post('fatoni/generate/api', array('as' => 'fatoni.generate.api', 'uses' => 'AhmadFatoni\ApiGenerator\Controllers\ApiGeneratorController@generateApi'));
|
||||
Route::post('fatoni/update/api/{id}', array('as' => 'fatoni.update.api', 'uses' => 'AhmadFatoni\ApiGenerator\Controllers\ApiGeneratorController@updateApi'));
|
||||
Route::get('fatoni/delete/api/{id}', array('as' => 'fatoni.delete.api', 'uses' => 'AhmadFatoni\ApiGenerator\Controllers\ApiGeneratorController@deleteApi'));
|
||||
|
||||
Route::resource('api/v1/categories', 'AhmadFatoni\ApiGenerator\Controllers\API\CategoriesController', ['except' => ['destroy', 'create', 'edit']]);
|
||||
Route::get('api/v1/categories/{id}/delete', ['as' => 'api/v1/categories.delete', 'uses' => 'AhmadFatoni\ApiGenerator\Controllers\API\CategoriesController@destroy']);
|
||||
|
||||
Route::resource('api/v1/posts', 'AhmadFatoni\ApiGenerator\Controllers\API\PostsController', ['except' => ['destroy', 'create', 'edit']]);
|
||||
Route::get('api/v1/posts/{id}/delete', ['as' => 'api/v1/posts.delete', 'uses' => 'AhmadFatoni\ApiGenerator\Controllers\API\PostsController@destroy']);
|
||||
|
||||
Route::get('api/v1/popular/posts', 'AhmadFatoni\ApiGenerator\Controllers\API\PostsController@popular');
|
||||
|
|
|
|||
|
|
@ -275,7 +275,8 @@ class Post extends Model
|
|||
'category' => null,
|
||||
'search' => '',
|
||||
'published' => true,
|
||||
'featured' => null,
|
||||
'featured' => false,
|
||||
'type' => 'photo',
|
||||
'date' => '',
|
||||
'exceptPost' => null
|
||||
], $options));
|
||||
|
|
@ -287,7 +288,11 @@ class Post extends Model
|
|||
}
|
||||
|
||||
|
||||
if (isset($featured)) {
|
||||
if (isset($type)) {
|
||||
$query->where('type', $type);
|
||||
}
|
||||
|
||||
if (isset($featured)) {
|
||||
$query->where('featured', $featured);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue