Merge branch 'dev'
This commit is contained in:
commit
b22366c523
|
|
@ -0,0 +1,14 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ApiBaseController extends Controller
|
||||
{
|
||||
protected function localeValidationRule()
|
||||
{
|
||||
return ['locale' => 'required|in:tm,ru,en'];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Resources\ExportResource;
|
||||
use App\Models\Export;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class ExportController extends ApiBaseController
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), array_merge([
|
||||
'page' => 'numeric|gt:0',
|
||||
'group' => 'required|exists:groups,id',
|
||||
'category' => 'exists:categories,id',
|
||||
'type' => 'in:internal,external'
|
||||
], $this->localeValidationRule()));
|
||||
if($validator->fails()) {
|
||||
return response()->json($validator->errors());
|
||||
}
|
||||
|
||||
$exports = Export::query()
|
||||
->where('group_id', request('group'))
|
||||
->where('locale', request('locale'))
|
||||
// ->when(request('title'), fn ($q) => $q->whereIn('id', $searchIds))
|
||||
->when(request('category'), fn ($q) => $q->where('category_id', request('category')))
|
||||
->when(request('unit'), fn ($q) => $q->where('unit', request('unit')))
|
||||
->when(request('currency'), fn ($q) => $q->where('currency', request('currency')))
|
||||
->when(request('payment'), fn ($q) => $q->where('payment', request('payment')))
|
||||
->when(request('send'), fn ($q) => $q->where('send', request('send')))
|
||||
->when(request('type'), fn ($q) => $q->where('type', request('type')));
|
||||
|
||||
return response()->json([
|
||||
'exports' => ExportResource::collection($exports->simplePaginate(5)),
|
||||
], 200);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Resources\CategoryApiResource;
|
||||
use App\Http\Resources\GroupResource;
|
||||
use App\Models\Category;
|
||||
use App\Models\Group;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class FiltersController extends ApiBaseController
|
||||
{
|
||||
public function groups(Request $request)
|
||||
{
|
||||
$data = $request->only(['type', 'locale']);
|
||||
$validator = Validator::make($data, array_merge([
|
||||
'type' => 'required|in:export,import'
|
||||
], $this->localeValidationRule()));
|
||||
|
||||
if ($validator->fails()) {
|
||||
return response()->json($validator->errors(), 400);
|
||||
}
|
||||
|
||||
return GroupResource::collection(Group::whereType($data['type'])->orderBy('is_default', 'desc')->get());
|
||||
}
|
||||
|
||||
public function categories(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->only('locale'), $this->localeValidationRule());
|
||||
if ($validator->fails()) {
|
||||
return response()->json($validator->errors(), 400);
|
||||
}
|
||||
|
||||
return CategoryApiResource::collection(Category::all());
|
||||
}
|
||||
|
||||
public function otherFilters(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), array_merge([
|
||||
'model' => 'required|in:Export,Import',
|
||||
'group' => 'required|exists:groups,id',
|
||||
'filter' => 'required|in:unit,currency,payment,send,country'
|
||||
|
||||
], $this->localeValidationRule()));
|
||||
|
||||
if ($validator->fails()) {
|
||||
return response()->json($validator->errors(), 400);
|
||||
}
|
||||
|
||||
$modelClass = '\\App\\Models\\' . $request['model'];
|
||||
|
||||
return $modelClass::selectRaw(request('filter'))
|
||||
->where('group_id', request('group'))
|
||||
->where('locale', request('locale'))
|
||||
->distinct()
|
||||
->pluck(request('filter'));
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Resources\ImportResource;
|
||||
use App\Models\Import;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class ImportController extends ApiBaseController
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), array_merge([
|
||||
'page' => 'numeric|gt:0',
|
||||
'group' => 'required|exists:groups,id'
|
||||
], $this->localeValidationRule()));
|
||||
|
||||
if ($validator->fails()) {
|
||||
return response()->json($validator->errors());
|
||||
}
|
||||
|
||||
$imports = Import::query()
|
||||
->where('group_id', request('group'))
|
||||
->where('locale', request('locale'))
|
||||
// ->when(request('title'), fn ($q) => $q->whereIn('id', $searchIds))
|
||||
->when(request('country'), fn ($q) => $q->where('country', request('country')))
|
||||
->when(request('unit'), fn ($q) => $q->where('unit', request('unit')))
|
||||
->when(request('currency'), fn ($q) => $q->where('currency', request('currency')));
|
||||
// ->when(request('registered_at'), fn ($q) => $q->whereDate('registered_at', request('registered_at')));
|
||||
|
||||
return response()->json([
|
||||
'imports' => ImportResource::collection($imports->simplePaginate(5)),
|
||||
], 200);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class CategoryApiResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'title' => $this->getTranslation('title', $request->get('locale')),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class GroupResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
$locale = $request->get('locale');
|
||||
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'title' => $this->getTranslation('title', $locale),
|
||||
'type' => $this->type,
|
||||
'file' => $this->getTranslation('file', $locale),
|
||||
'is_default' => $this->is_default,
|
||||
'hashid' => $this->hashid
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use App\Http\Controllers\Api\ExportController;
|
||||
use App\Http\Controllers\Api\FiltersController;
|
||||
use App\Http\Controllers\Api\ImportController;
|
||||
use App\Http\Controllers\Api\LineController;
|
||||
use App\Http\Controllers\Api\RequestController;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
@ -17,8 +17,12 @@ use App\Http\Controllers\Api\LineController;
|
|||
|
|
||||
*/
|
||||
|
||||
// Route::get('exports', [ExportController::class, 'index']);
|
||||
// Route::get('imports', [ImportController::class, 'index']);
|
||||
Route::get('imports', [ImportController::class, 'index'])->name('api.imports');
|
||||
Route::get('exports', [ExportController::class, 'index'])->name('api.exports');
|
||||
Route::get('groups', [FiltersController::class, 'groups']);
|
||||
Route::get('categories', [FiltersController::class, 'categories']);
|
||||
Route::get('other-filters', [FiltersController::class, 'otherFilters']);
|
||||
// Route::post('requests', [RequestController::class, 'store']);
|
||||
// Route::get('lines', [LineController::class, 'index']);
|
||||
|
||||
// Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue