File: D:/HostingSpaces/SBogers10/sportivo.komma.pro/app/Komma/Sports/SportsRepository.php
<?php
namespace Komma\Sports;
use Illuminate\Support\Facades\DB;
class SportsRepository
{
protected $relatedModel = 'Komma\Kms\GroupLessons\Models\GroupLessonTranslation';
protected $relatedModel2 = 'Komma\Kms\GroupLessons\Models\GroupLesson';
/**
* Load all group lessons for the quick menu
* Already prepared for Front-end
*
* @return array
*/
public function allGroupLesson()
{
$groupLessons = DB::table('group_lessons')
->leftJoin('group_lesson_translations', 'group_lessons.id', '=', 'group_lesson_translations.group_lesson_id')
->leftJoin('routes', 'group_lesson_translations.id', '=', 'routes.routable_id')
->select([
'group_lesson_translations.name', 'routes.route', 'group_lesson_translations.slug'
])
->whereNotNull('group_lesson_translations.name')
->where('routable_type', '=', $this->relatedModel)
->orderBy('group_lessons.lft', 'asc')
->get();
$groupLessonsArray = [];
foreach ($groupLessons as $groupLesson)
{
$groupLessonsArray[] = (object)['name' => $groupLesson->name, 'route' => $groupLesson->route, 'slug' => $groupLesson->slug];
}
return $groupLessonsArray;
}
/**
* Get a group lesson based upon the $slug
*
* @param $slug
* @return array
*/
public function get($slug)
{
$groupLesson = DB::table('group_lessons')
->leftJoin('group_lesson_translations', 'group_lessons.id', '=', 'group_lesson_translations.group_lesson_id')
->leftjoin('images', 'group_lessons.id', '=', 'images.imageble_id')
->select([
'group_lesson_translations.name', 'group_lesson_translations.tm', 'group_lesson_translations.intro', 'group_lesson_translations.description', 'images.large_image_url'
])
->where('group_lesson_translations.slug', '=', $slug)
->where(function ($query)
{
$query->where('images.imageble_type', '=', $this->relatedModel2);
$query->orWhereNull('images.imageble_type');
})
->first();
return $groupLesson;
}
/**
* Load all group lesson for the overview
* Already prepared for Front-end
*
* @return array
*/
public function getOverview()
{
$groupLessons = DB::table('group_lessons')
->leftJoin('group_lesson_translations', 'group_lessons.id', '=', 'group_lesson_translations.group_lesson_id')
->leftJoin('routes', 'group_lesson_translations.id', '=', 'routes.routable_id')
->leftjoin('images', 'group_lessons.id', '=', 'images.imageble_id')
->select([
'group_lesson_translations.name', 'routes.route', 'images.large_image_url'
])
->whereNotNull('group_lesson_translations.name')
->where('routable_type', '=', $this->relatedModel)
->where(function ($query)
{
$query->where('images.imageble_type', '=', $this->relatedModel2);
$query->orWhereNull('images.imageble_type');
})
->orderBy('group_lessons.lft', 'asc')
->get();
$groupLessonsArray = [];
foreach ($groupLessons as $groupLesson)
{
$groupLessonsArray[] = (object)['name' => $groupLesson->name, 'route' => $groupLesson->route, 'img'=>$groupLesson->large_image_url];
}
return ($groupLessonsArray);
}
/**
* Load 2 random group lesson which aren't the current $slug
* Already prepared for Front-end
*
* @param $amount
* @param $slug
* @return array
*/
public function getRandom($amount, $slug)
{
$groupLessons = DB::table('group_lessons')
->leftJoin('group_lesson_translations', 'group_lessons.id', '=', 'group_lesson_translations.group_lesson_id')
->leftJoin('routes', 'group_lesson_translations.id', '=', 'routes.routable_id')
->leftjoin('images', 'group_lessons.id', '=', 'images.imageble_id')
->select([
'group_lesson_translations.name', 'routes.route', 'group_lesson_translations.intro', 'images.large_image_url'
])
->whereNotNull('group_lesson_translations.name')
->where('routable_type', '=', $this->relatedModel)
->where('group_lesson_translations.slug', '!=', $slug)
->where(function ($query)
{
$query->where('images.imageble_type', '=', $this->relatedModel2);
$query->orWhereNull('images.imageble_type');
})
->get();
$groupLessonsArray = [];
foreach ($groupLessons as $groupLesson)
{
$groupLessonsArray[] = (object)['header' => $groupLesson->name, 'route' => '/'.$groupLesson->route, 'teaser' => $groupLesson->intro, 'img'=>$groupLesson->large_image_url];
}
$value1 = rand(0, (count($groupLessonsArray)-1));
$value2 = rand(0, (count($groupLessonsArray)-1));
do{
$value2 = rand(1, (count($groupLessonsArray)-1));
}while($value1 == $value2);
$randomArray = [$groupLessonsArray[$value1],$groupLessonsArray[$value2]];
return($randomArray);
}
/**
* Get the prices
*
* @return array
*/
public function getPrices(){
return DB::table('prices')
->join('price_translations', 'prices.id', '=', 'price_translations.price_id')
->select([
'price_translations.name','price_translations.slug', 'price_translations.description', 'price_translations.direct_button', 'price_translations.stars'
])
->orderBy('prices.lft', 'asc')
->get();
}
/**
* Load all information from the sport purposes on the sportpurpose page
*
* @return array
*/
public function getSportPurposes(){
//return \Lang::get('sports.purposes');
return DB::table('sport_purposes')
->leftJoin('sport_purpose_translations', 'sport_purposes.id', '=', 'sport_purpose_translations.sport_purpose_id')
->leftjoin('images', 'sport_purposes.id', '=', 'images.imageble_id')
->select([
'sport_purpose_translations.name','sport_purpose_translations.description','sport_purpose_translations.intro','sport_purpose_translations.direct_button', 'images.large_image_url'
])
->whereNotNull('sport_purpose_translations.name')
->where(function ($query)
{
$query->where('images.imageble_type', '=', 'Komma\Kms\SportPurposes\Models\SportPurpose');
$query->orWhereNull('images.imageble_type');
})
->orderBy('sport_purposes.lft', 'asc')
->get();
}
/**
* Load the sport purposes for in the circles on most pages
*
* @return array
*/
public function getSportPurposesCircles(){
return DB::table('sport_purposes')
->leftJoin('sport_purpose_translations', 'sport_purposes.id', '=', 'sport_purpose_translations.sport_purpose_id')
->leftjoin('images', 'sport_purposes.id', '=', 'images.imageble_id')
->select([
'sport_purpose_translations.name', 'images.large_image_url'
])
->whereNotNull('sport_purpose_translations.name')
->where(function ($query)
{
$query->where('images.imageble_type', '=', 'Komma\Kms\SportPurposes\Models\SportPurpose');
$query->orWhereNull('images.imageble_type');
})
->orderBy('sport_purposes.lft', 'asc')
->get();
}
public function getContent($key)
{
return \Lang::get('sports.' . $key);
}
public function getButton($key)
{
return \Lang::get('buttons.' . $key);
}
}