Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/job-board.corals.io/Corals/modules/Jobs/Classes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/job-board.corals.io/Corals/modules/Jobs/Classes/Employers.php
<?php

namespace Corals\Modules\Jobs\Classes;

use Corals\Modules\Jobs\Models\Employer;
use Corals\Modules\Jobs\Models\JobApplication;
use Corals\Modules\Utility\Facades\ListOfValue\ListOfValues;
use Corals\Settings\Facades\Settings;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\Request;

class Employers
{
    public $page_limit;

    /**
     * Foo constructor.
     */
    function __construct()
    {
        $this->page_limit = Settings::get('jobs_appearance_page_limit', 10);
    }

    protected function employersBaseQuery()
    {
        return Employer::select('*');
    }

    public function getEmployerList(Request $request)
    {
        $employers = $this->employersBaseQuery();

        foreach ($request->all() as $filter => $value) {
            $filterMethod = $filter . 'QueryBuilderFilter';
            if (method_exists($this, $filterMethod) && !empty($value)) {
                $employers = $this->{$filterMethod}($employers, $value);
            }
        }
        return $employers->select('jo_employers.*')->paginate($this->page_limit);
    }

    protected function searchQueryBuilderFilter($employers, $search_term)
    {
        $employers = $employers->where('name', $search_term);
        return $employers;
    }

    protected function field_codeQueryBuilderFilter($employers, $field_code)
    {
        $queryMethod = 'where';

        if (is_array($field_code)) {
            $queryMethod = 'whereIn';
        }

        $employers = $employers->{$queryMethod}('field_code', $field_code);
        return $employers;
    }

    protected function locationQueryBuilderFilter($employers, $location)
    {
        $employers = $employers->whereHas('location', function (Builder $query) use ($location) {
            $query->where('slug', $location);
        });
        return $employers;
    }

    protected function sortQueryBuilderFilter($employers, $sortOption)
    {
        switch ($sortOption) {
            case 'a_z_order':
                $employers = $employers->orderBy('jo_employers.name', 'asc');
                break;
            case 'z_a_order':
                $employers = $employers->orderBy('jo_employers.name', 'desc');
                break;
        }
        return $employers;
    }

    protected function categoryQueryBuilderFilter($employers, $categorySlug)
    {
        $queryMethod = 'where';

        if (is_array($categorySlug)) {
            $queryMethod = 'whereIn';
        }

        $employers = $employers->whereHas('jobs', function (Builder $query) use ($queryMethod, $categorySlug) {
            $query->whereHas('activeCategories', function (Builder $query) use ($categorySlug, $queryMethod) {
                $query->{$queryMethod}('slug', $categorySlug);
            });
        });
        return $employers;
    }

    protected function job_typeQueryBuilderFilter($employers, $job_type)
    {
        $queryMethod = 'where';

        if (is_array($job_type)) {
            $queryMethod = 'whereIn';
        }

        $employers = $employers->whereHas('jobs', function (Builder $query) use ($job_type, $queryMethod) {
            $query->{$queryMethod}('job_type', $job_type);
        });
        return $employers;
    }

    protected function experience_levelQueryBuilderFilter($employers, $experience_level)
    {
        $queryMethod = 'where';

        if (is_array($experience_level)) {
            $queryMethod = 'whereIn';
        }

        $employers = $employers->whereHas('jobs', function (Builder $query) use ($experience_level, $queryMethod) {
            $query->{$queryMethod}('experience_level', $experience_level);
        });
        return $employers;
    }


    public function checkActiveKey($value, $compareWithKey)
    {
        if (request()->has($compareWithKey)) {
            $compareWithValue = request()->get($compareWithKey);

            if (is_array($compareWithValue)) {
                return array_search($value, $compareWithValue) !== false;
            } else {
                return $value == $compareWithValue;
            }
        }

        return false;
    }


    public function getLastJob($employer)
    {
        return $employer->jobs->min('created_at');
    }


    public function getFieldCode()
    {
        return ListOfValues::get('company-fields');
    }

    public function getFieldCodeCount($field_code)
    {
        return Employer::where('field_code', '=', $field_code)
            ->count();
    }

    public function employersCount()
    {
        return Employer::all()->count();
    }

    public function getMyEmployer()
    {
        return Employer::query()
            ->where('user_id', user()->id)
            ->firstOrFail();
    }

    public function allEmployerJobApplications(Request $request, $empolyer)
    {
        $jobApplications = JobApplication::query()->join('jo_jobs',
            'jo_job_applications.job_id', '=', 'jo_jobs.id')
            ->where('jo_jobs.owner_id', '=', $empolyer->id)->latest();

        foreach ($request->all() as $filter => $value) {
            $filterMethod = $filter . 'QueryBuilderFilter';
            if (method_exists($this, $filterMethod) && !empty($value)) {
                $jobApplications = $this->{$filterMethod}($jobApplications, $value);
            }
        }

        return $jobApplications->select('jo_job_applications.*')->paginate($this->page_limit);

    }

    public function latestJobApplications()
    {
        $empolyer = $this->getMyEmployer();
        return JobApplication::query()->join('jo_jobs',
            'jo_job_applications.job_id', '=', 'jo_jobs.id')
            ->where('jo_jobs.owner_id', '=', $empolyer->id)
            ->latest('jo_job_applications.created_at')
            ->take(3)->get();

    }
}

Spamworldpro Mini