Booking, QI Content, Trees, Media
This commit is contained in:
parent
1f340e96fa
commit
7fbac395a9
260 changed files with 27160 additions and 3773 deletions
171
app/Http/Controllers/API/CMSContentController.php
Executable file
171
app/Http/Controllers/API/CMSContentController.php
Executable file
|
|
@ -0,0 +1,171 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\IQContentTree;
|
||||
use App\Models\IQContentTreeNode;
|
||||
use App\Models\TravelGuide;
|
||||
|
||||
|
||||
class CMSContentController extends Controller
|
||||
{
|
||||
public $successStatus = 200;
|
||||
|
||||
|
||||
public function search()
|
||||
{
|
||||
|
||||
$request = \Request::all();
|
||||
|
||||
if(!isset($request['url']) || !isset($request['key'])){
|
||||
return response()->json(['error' => "request no found"], $this->successStatus);
|
||||
}
|
||||
|
||||
if($request['key'] != 'f6077389c9ce710e554763a5de02c8ec'){
|
||||
return response()->json(['error' => "key"], 401);
|
||||
}
|
||||
|
||||
$urlArray = explode('/', $request['url']);
|
||||
$ret = [];
|
||||
|
||||
if(is_array($urlArray)){
|
||||
//tree
|
||||
$tree_identifier = array_shift($urlArray);
|
||||
$tree = IQContentTree::whereIdentifier($tree_identifier)->first();
|
||||
$travel_guide = null;
|
||||
$url = "";
|
||||
if($tree){
|
||||
$lvl = 0;
|
||||
|
||||
$ret['tree'] = $tree->toArray();
|
||||
$ret['navi'] = $this->makeNaviTree($tree, $urlArray, "", 0, false);
|
||||
$url = "/".$tree->identifier;
|
||||
$ret['bread_crumb'][$lvl] = [
|
||||
'title' => $tree->name,
|
||||
'url' => $url,
|
||||
];
|
||||
while (!empty($urlArray))
|
||||
{
|
||||
$tree_node_identifier = array_shift($urlArray);
|
||||
$tree_node = IQContentTreeNode::whereTreeId($tree->id)->whereIdentifier($tree_node_identifier)->whereLvl($lvl)->whereActive(true)->first();
|
||||
|
||||
if($tree_node){
|
||||
$url = $url."/".$tree_node->identifier;
|
||||
$ret['bread_crumb'][$lvl] = [
|
||||
'title' => $tree_node->name,
|
||||
'url' => $url,
|
||||
];
|
||||
|
||||
$ret['nodes'][$lvl] = $tree_node->toArray();
|
||||
$lvl ++;
|
||||
}else{
|
||||
return response()->json(['error' => 'no-node'], $this->successStatus);
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($ret['nodes']) && is_array($ret['nodes'])){
|
||||
//sites
|
||||
if($tree_node->iq_content_sites->count()){
|
||||
foreach ($tree_node->iq_content_sites as $iq_content_site){
|
||||
if(isset($iq_content_site->travel_guide) && $iq_content_site->travel_guide && $iq_content_site->travel_guide->active){
|
||||
$ret['sites'][] = $iq_content_site->travel_guide->toArray();
|
||||
/*if(!$travel_guide){
|
||||
//$travel_guide = $iq_content_site->travel_guide;
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
//children
|
||||
if($tree_node->iq_content_tree_node_childs->count()){
|
||||
foreach ($tree_node->iq_content_tree_node_childs as $iq_content_tree_node_child){
|
||||
if($iq_content_tree_node_child->active){
|
||||
$travel_guide = $iq_content_tree_node_child->iq_content_site_first();
|
||||
$ret['children'][] = [
|
||||
'name' => $iq_content_tree_node_child->name,
|
||||
'identifier' => $iq_content_tree_node_child->identifier,
|
||||
'url' => "/".$iq_content_tree_node_child->getUri(),
|
||||
'box_image_url' => $travel_guide ? $travel_guide->box_image_url : '',
|
||||
'description' => $travel_guide ? $travel_guide->meta_description : '',
|
||||
'active' => $travel_guide ? $travel_guide->active : false,
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
return response()->json(['success' => "node", "ret"=>$ret], $this->successStatus);
|
||||
|
||||
}else{
|
||||
return response()->json(['error' => 'no-node'], $this->successStatus);
|
||||
}
|
||||
}else{
|
||||
return response()->json(['error' => 'no-tree'], $this->successStatus);
|
||||
|
||||
}
|
||||
}
|
||||
return response()->json(['error' => "not-found"], $this->successStatus);
|
||||
|
||||
}
|
||||
|
||||
public function keywords(){
|
||||
$request = \Request::all();
|
||||
|
||||
if(!isset($request['key'])){
|
||||
return response()->json(['error' => "request no found"], $this->successStatus);
|
||||
}
|
||||
|
||||
if($request['key'] != 'f6077389c9ce710e554763a5de02c8ec'){
|
||||
return response()->json(['error' => "key"], 401);
|
||||
}
|
||||
$ret = [];
|
||||
$travel_guides = TravelGuide::whereNotNull('keyword')->where('active', true)->get();
|
||||
foreach ($travel_guides as $travel_guide){
|
||||
$tree_node = $travel_guide->iq_content_tree_node_first();
|
||||
if($tree_node){
|
||||
$ret[$travel_guide->keyword] = $tree_node->getUri();
|
||||
}
|
||||
|
||||
}
|
||||
return response()->json(['success' => "node", "ret"=>$ret], $this->successStatus);
|
||||
}
|
||||
|
||||
public function makeNaviTree(IQContentTree $iq_content_tree, $urlArray = [], $url = "", $lvl = 0, $parent_id = false)
|
||||
{
|
||||
|
||||
|
||||
$link = false;
|
||||
if (!empty($urlArray[$lvl])) {
|
||||
$link = ($urlArray[$lvl]);
|
||||
}
|
||||
if ($parent_id) {
|
||||
$tree_nodes = IQContentTreeNode::where('tree_id', $iq_content_tree->id)->where('lvl', $lvl)->where('active', true)->where('parent_id', $parent_id)->orderBy('pos', 'ASC')->get();
|
||||
} else {
|
||||
$url = "/" . $iq_content_tree->identifier . "/";
|
||||
$tree_nodes = IQContentTreeNode::where('tree_id', $iq_content_tree->id)->where('lvl', $lvl)->where('active', true)->orderBy('pos', 'ASC')->get();
|
||||
}
|
||||
$out = [];
|
||||
|
||||
|
||||
foreach ($tree_nodes as $node) {
|
||||
|
||||
$children = IQContentTreeNode::where('tree_id', $iq_content_tree->id)->where('lvl', $lvl + 1)->where('active', true)->where('parent_id', $node->id)->count();
|
||||
$out[] = [
|
||||
'lvl' => $lvl,
|
||||
'name' => $node->name,
|
||||
'url' => $url . $node->identifier,
|
||||
'active' => $link == $node->identifier ? true : false,
|
||||
// 'children' => $this->makeNaviTree($iq_content_tree, $urlArray, $url . $node->identifier . "/", $lvl + 1, $node->id),
|
||||
];
|
||||
|
||||
$tmp = [];
|
||||
if ($children) {
|
||||
$tmp = $this->makeNaviTree($iq_content_tree, $urlArray, $url . $node->identifier . "/", $lvl + 1, $node->id);
|
||||
$out = array_merge($out, $tmp);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
return $out;
|
||||
}
|
||||
}
|
||||
|
|
@ -348,13 +348,18 @@ class DraftController extends Controller
|
|||
$this->option = $travel_option['name'];
|
||||
$service = $this->replaceService($service);
|
||||
|
||||
/*
|
||||
* if($travel_option['children'] < 1){
|
||||
$travel_option['price_children'] = 0;
|
||||
}
|
||||
*/
|
||||
$price_info_travel_options[] = [
|
||||
'booking_id' => $data['booking_id'],
|
||||
'travel_program_id' => $data['travel_program_id'],
|
||||
'fewo_lodging_id' => null,
|
||||
'travel_class_id' => null,
|
||||
'draft_item_id' => null,
|
||||
'draft_type_id' => 34,
|
||||
'draft_type_id' => 41,
|
||||
'request_date' => $data['request_date'],
|
||||
'days_start' => null,
|
||||
'days_duration' => null,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue