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/hours.komma.pro/app/Komma/Projects/ProjectRepository.php
<?php


namespace App\Komma\Projects;


class ProjectRepository
{
    /**
     * Load Project with all relations
     *
     * @param $id
     * @return \Hours\Projects\Project|null
     */
    public function fullProject($id)
    {
        return Project::with([
            'Company',
            'ProjectWorkers.User',
            'Subprojects',
            'Subprojects.SubprojectTemplate',
            'Subprojects.Expenses',
            'Subprojects.Expenses.ExpenseType',
            'Subprojects.Expenses.ExpenseType.ExpenseUnit',
            'Subprojects.Tasks',
            'Subprojects.Tasks.TaskTemplate',
            'Subprojects.Tasks.Hours',
            'Subprojects.Tasks.Hours.User'
        ])->find($id);
    }

    /**
     * @param $search
     * @return mixed
     */
    public function allProjects($search)
    {
        if(!empty($search)) {
            $searchArray = explode(" ", $search);
            return Project::with([
                'Company',
                'ProjectWorkers.User',
                'Subprojects.Tasks.Hours.User',
            ])
                ->where(function ($query) use ($searchArray) {
                    for ($i = 0; $i < count($searchArray); $i++) {
                        if ($i == 0) {
                            $query->where('name', 'LIKE', '%' . $searchArray[$i] . '%');
                        } else {
                            $query->Where('name', 'LIKE', '%' . $searchArray[$i] . '%');
                        }
                    }
                })
                ->orderBy('created_at', 'desc');

        } else {
            return Project::with([
                'Company',
                'ProjectWorkers.User',
                'Subprojects.Tasks.Hours.User',
            ])
                ->orderBy('created_at', 'desc');
        }
    }
}