Feuerwehr-eppingen/app/Helpers/MenuHelper.php

114 lines
2.8 KiB
PHP

<?php
/**
* Created by PhpStorm.
* User: Marco Glietsch
* Date: 11.07.2018
* Time: 14:26
*/
namespace App\Helpers;
use App\Models\Tag;
use App\Models\User;
use App\Models\Post;
class MenuHelper
{
static function getDepartments()
{
$model = new Tag();
$departments = $model->isType('abteilung')
->orderBy('order', 'ASC')
->get();
return $departments;
}
static function getInstances($departmentId)
{
$model = new Tag();
$instances = $model->isType('instanz')
->where('name', '!=', 'Gesamtwehr')
->whereHas('tags2', function ($query) use ($departmentId) {
$query->where('parent_id', $departmentId);
})
->orderBy('name', 'ASC')
->get();
return $instances;
}
static function hasDepartmentMembers($department)
{
$members = User::select('tags1.name as membertype')
->join('user_tag as user_tag1', function($join){
$join->on('user_tag1.user_id', 'users.id');
})
->join('tags as tags1', function($join) use($department){
$join->on('user_tag1.tag_id', 'tags1.id');
if($department->name == 'Gesamtwehr')
{
$join = $join->where('tags1.type', 'mitgliedsart-gesamtwehr');
}
else
{
$join = $join->where('tags1.type', 'mitgliedsart-abteilung');
}
});
if($department->name != 'Gesamtwehr')
{
$members = $members
->addSelect('tags2.name as department')
->join('user_tag as user_tag2', function($join){
$join->on('user_tag2.user_id', 'users.id');
})
->join('tags as tags2', function($join) use($department){
$join->on('user_tag2.tag_id', 'tags2.id')
->where('tags2.id', $department->id);
});
}
$members = $members->get();
return count($members) ? true : false;
}
static function getDepartmentPages($department)
{
$pages = Post::select('posts.*')
->where('posts.type', 'seite')
->where('posts.published', true)
->join('post_tag as post_tag1', function($join){
$join->on('post_tag1.post_id', 'posts.id');
})
->join('tags as tags1', function($join) use($department){
$join->on('post_tag1.tag_id', 'tags1.id')
->where('tags1.type', 'seitenkategorie')
->where('tags1.name', $department->name);
})
->get();
return $pages;
}
static function getCategoryPages($category, $sites = array())
{
$pages = Post::select('posts.*')
->where('posts.type', 'seite')
->where('posts.published', true)
->join('post_tag as post_tag1', function($join){
$join->on('post_tag1.post_id', 'posts.id');
})
->join('tags as tags1', function($join) use($category){
$join->on('post_tag1.tag_id', 'tags1.id')
->where('tags1.type', 'seitenkategorie')
->where('tags1.name', $category);
});
if(count($sites) > 0)
{
$pages = $pages->whereIn('posts.slug', $sites);
}
$pages = $pages->get();
return $pages;
}
}