File "SearchController.php"
Full Path: /home/bettaeza/flyinsyria.com/.well-known/Api/Controllers/SearchController.php
File size: 5.17 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace Modules\Api\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Modules\Booking\Models\Service;
use Modules\Flight\Controllers\FlightController;
class SearchController extends Controller
{
public function search($type = ''){
$type = $type ? $type : request()->get('type');
if(empty($type))
{
return $this->sendError(__("Type is required"));
}
$class = get_bookable_service_by_id($type);
if(empty($class) or !class_exists($class)){
return $this->sendError(__("Type does not exists"));
}
if(!empty(request()->query('limit'))){
$limit = request()->query('limit');
}else{
$limit = !empty(setting_item($type."_page_limit_item"))? setting_item($type."_page_limit_item") : 9;
}
$query = new $class();
$rows = $query->search(request()->input())->paginate($limit);
$total = $rows->total();
return $this->sendSuccess(
[
'total'=>$total,
'total_pages'=>$rows->lastPage(),
'data'=>$rows->map(function($row){
return $row->dataForApi();
}),
]
);
}
public function searchServices(){
if(!empty(request()->query('limit'))){
$limit = request()->query('limit');
}else{
$limit = 9;
}
$query = new Service();
$rows = $query->search(request()->input())->paginate($limit);
$total = $rows->total();
return $this->sendSuccess(
[
'total'=>$total,
'total_pages'=>$rows->lastPage(),
'data'=>$rows->map(function($row){
return $row->dataForApi();
}),
]
);
}
public function getFilters($type = ''){
$type = $type ? $type : request()->get('type');
if(empty($type))
{
return $this->sendError(__("Type is required"));
}
$class = get_bookable_service_by_id($type);
if(empty($class) or !class_exists($class)){
return $this->sendError(__("Type does not exists"));
}
$data = call_user_func([$class,'getFiltersSearch'],request());
return $this->sendSuccess(
[
'data'=>$data
]
);
}
public function getFormSearch($type = ''){
$type = $type ? $type : request()->get('type');
if(empty($type))
{
return $this->sendError(__("Type is required"));
}
$class = get_bookable_service_by_id($type);
if(empty($class) or !class_exists($class)){
return $this->sendError(__("Type does not exists"));
}
$data = call_user_func([$class,'getFormSearch'],request());
return $this->sendSuccess(
[
'data'=>$data
]
);
}
public function detail($type = '',$id = '')
{
if(empty($type)){
return $this->sendError(__("Resource is not available"));
}
if(empty($id)){
return $this->sendError(__("Resource ID is not available"));
}
$class = get_bookable_service_by_id($type);
if(empty($class) or !class_exists($class)){
return $this->sendError(__("Type does not exists"));
}
$row = $class::find($id);
if(empty($row))
{
return $this->sendError(__("Resource not found"));
}
if($type=='flight'){
return app()->make(FlightController::class)->getData(\request(),$id);
}
return $this->sendSuccess([
'data'=>$row->dataForApi(true)
]);
}
public function checkAvailability(Request $request , $type = '',$id = ''){
if(empty($type)){
return $this->sendError(__("Resource is not available"));
}
if(empty($id)){
return $this->sendError(__("Resource ID is not available"));
}
$class = get_bookable_service_by_id($type);
if(empty($class) or !class_exists($class)){
return $this->sendError(__("Type does not exists"));
}
$classAvailability = $class::getClassAvailability();
$classAvailability = app()->make($classAvailability);
$request->merge(['id' => $id]);
if($type == "hotel"){
$request->merge(['hotel_id' => $id]);
return $classAvailability->checkAvailability($request);
}
return $classAvailability->loadDates($request);
}
public function checkBoatAvailability(Request $request ,$id = ''){
if(empty($id)){
return $this->sendError(__("Boat ID is not available"));
}
$class = get_bookable_service_by_id('boat');
$classAvailability = $class::getClassAvailability();
$classAvailability = app()->make($classAvailability);
$request->merge(['id' => $id]);
return $classAvailability->availabilityBooking($request);
}
}