mivita/dev/app-bak/Http/Controllers/User/DownloadController.php
2025-10-20 17:42:08 +02:00

145 lines
No EOL
4.6 KiB
PHP

<?php
namespace App\Http\Controllers\User;
use Request;
use App\Models\DcTag;
use App\Models\DcFile;
use App\Models\DcFileTag;
use App\Models\DcCategory;
use App\Http\Controllers\Controller;
class DownloadController extends Controller
{
public function __construct()
{
$this->middleware('active.account');
}
public function index()
{
$this->setFilterVars();
$files = DcFile::where('active', true)->orderBy('id', 'desc')->get(); //File::all();
$filter_list = $this->makeFilterList();
$data = [
'files' => $files,
'filter_list' => $filter_list,
'tag_ids' => array(),
'resTagIds' => array(),
'search' => false,
];
return view('user.downloadcenter.index', $data);
}
public function search(){
$request = Request::all();
if(Request::ajax()){
$request['tagIds'] = isset($request['tagIds']) ? $request['tagIds'] : array();
$request['searchinput'] = isset($request['searchinput']) ? $request['searchinput'] : "";
$tag_ids = $request['tagIds'];
$searchTags = [];
foreach ($tag_ids as $tags) {
if($tags != "" && $tags != "0"){
if(is_array($tags)){
foreach ($tags as $tag) {
array_push($searchTags, $tag);
}
}else{
array_push($searchTags, $tags);
}
}
}
$q = DcFile::with('fileTag')->where('active', 1);
if($request['searchinput'] != ""){
$q->where('original_name', 'LIKE', '%'.$request['searchinput'].'%');
}
if(count($searchTags) > 0){
$q->whereHas('fileTag', function ($query) use ($searchTags){
$query->whereIn('tag_id', $searchTags);
});
}
$files = $q->orderBy('id', 'desc')->get();
$returnContentFiles = view('user.downloadcenter.content-files')->with('files', $files)->render();
/* if(strlen($files) < 1){
$returnContentFiles = "Keine Einträge vorhanden";
}*/
/*
$resTagIds = array();
foreach ($files as $file) {
foreach ($file->fileTag as $tagId) {
if(empty($resTagIds[$tagId->tag_id])){
$resTagIds[$tagId->tag_id] = 1;
}else{
$resTagIds[$tagId->tag_id]++;
}
}
}
$categories = DcCategory::orderBy('pos')->get();
$data = [
'categories' => $categories,
'tag_ids' => $tag_ids,
'resTagIds' => $resTagIds,
'search' => true,
];
$returnFilters = view('content-collapse')->with('data', $data)->render();
*/
$returnFilters = "";
return response()->json( array('success' => true, 'request' => $request, 'searchTags' => $searchTags, 'content_files'=>$returnContentFiles, 'content_filter'=>$returnFilters) );
}
return false;
}
private function setFilterVars(){
/* if(!session('user_shop_api_orders_filter')){
session(['user_shop_api_orders_filter' => 1]);
}
if(Request::get('user_shop_api_orders_filter')){
session(['user_shop_api_orders_filter' => Request::get('user_shop_api_orders_filter')]);
}
*/
}
private function makeFilterList($archive = false, $request = true)
{
$ret = [];
$categories = DcCategory::where('active', true)->orderBy('pos')->get();
foreach($categories as $category){
$tags = DcTag::where('category_id', $category->id)->where('active', true)->orderBy('pos')->get();
$items = [];
foreach ($tags as $tag){
//has file tags
$count = DcFileTag::with('dc_file')->where('tag_id', $tag->id)->whereHas('dc_file', function ($query){
$query->where('active', true);
})->count();
if($count > 0){
$tag->count = $count;
$items[] = $tag;
}
}
if(isset($items) && count($items) > 0){
$ret[$category->id]['items'] = $items;
$ret[$category->id]['name'] = $category->name;
}
}
return $ret;
}
}