HoFQuery.php 2.15 KB
<?php

namespace FootyRoom\Queries;

use Illuminate\Database\Connection;

class HoFQuery
{
    /**
     * @var \Illuminate\Database\Connection
     */
    protected $mysql;

    /**
     * Constructor.
     *
     * @param \Illuminate\Database\Connection $mysql
     */
    public function __construct(Connection $mysql)
    {
        $this->mysql = $mysql;
    }

    /**
     * Return all players in hall of fame.
     *
     * @return \Illuminate\Support\Collection
     */
    public function find(): \Illuminate\Support\Collection
    {
        return $this->mysql

        ->table('history')
        ->select([
            '*',
            $this->mysql->raw('LOWER(REPLACE(nicename, " ", "-")) AS slug'),
        ])
        ->get();
    }

    /**
     * Return players for specific period in hall of fame.
     *
     * @param string $period
     *
     * @return \Illuminate\Support\Collection
     */
    public function findByPeriod($period): \Illuminate\Support\Collection
    {
        return $this->mysql

        ->table('history')
        ->select([
            '*',
            $this->mysql->raw('LOWER(REPLACE(nicename, " ", "-")) AS slug'),
        ])
        ->where('period', '=', $period)
        ->get();
    }

    /**
     * Return info data for specific name of player.
     *
     * @param string $slug
     *
     * @return object|null
     */
    public function findBySlug($slug)
    {
        return $this->mysql

        ->table('history')
        ->where('nicename', '=', $slug)
        ->first();
    }

    /**
     * Return records data for specific name of player.
     *
     * @param string $playerName
     *
     * @return object[]|null
     */
    public function findRecordsByName($playerName)
    {
        return $this->mysql

        ->table('hof_records')
        ->where('name', '=', $playerName)
        ->get();
    }

    /**
     * Return honors data for specific name of player.
     *
     * @param string $playerName
     *
     * @return object[]|null
     */
    public function findHonorsByName($playerName)
    {
        return $this->mysql

        ->table('hof_honours')
        ->where('name', '=', $playerName)
        ->get();
    }
}