HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
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);
    }
}