Booking, QI Content, Trees, Media

This commit is contained in:
Kevin Adametz 2019-10-02 20:03:55 +02:00
parent 1f340e96fa
commit 7fbac395a9
260 changed files with 27160 additions and 3773 deletions

View 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;
}
}

View file

@ -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,