MOON
Server: Apache
System: Linux e2e-78-16.ssdcloudindia.net 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC 2021 x86_64
User: imensosw (1005)
PHP: 8.0.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/imensosw/www/imenso.co/dev/gravity/app/Task.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use DB ;
class Task extends Model 
{
    protected $fillable = [  
    ];

    public static function getTask($id )
    {
    	return Task::join('projects','projects.id','=','tasks.project_id')
        ->leftJoin('users','users.id','=','tasks.assignment_to')
        ->select('tasks.*','projects.project_name','users.name as assignment_to_name',
            'users.email as assignment_to_email','users.image as assignment_to_image' ,DB::raw("DATE_FORMAT(tasks.start_date,'%d, %b %Y') AS start_date_dmy"),DB::raw("DATE_FORMAT(tasks.end_date,'%d, %b %Y') AS end_date_dmy"))
        ->where('tasks.id',$id)->first();
    }
    public static function getProjectTask($projectId )
    {
        $tasks = Task::select('tasks.*','users.name as assignment_to_name','users.image as assignment_to_image' ,
            DB::raw("DATE_FORMAT(tasks.start_date,'%d, %b %Y') AS start_date_dmy"),
            DB::raw("DATE_FORMAT(tasks.end_date,'%d, %b %Y') AS end_date_dmy"))
        ->leftJoin('users','users.id','=','tasks.assignment_to');
        $tasks = $tasks->where('tasks.project_id',$projectId);
        $tasks = $tasks->orderBy('tasks.task_no', 'asc')->get();
        return $tasks ;
    }

    public static function getUserTasks($userId = FALSE,$progress = FALSE,$projectId = FALSE)
    {
        $tasks = Task::select('tasks.*', 'projects.project_name' ,'users.name as assignment_to_name','users.image as assignment_to_image' ,DB::raw("DATE_FORMAT(tasks.start_date,'%d-%m-%Y') AS start_date_dmy"),DB::raw("DATE_FORMAT(tasks.end_date,'%d-%m-%Y') AS end_date_dmy"),
            'predecessor_tasks.progress as predecessor_progress',
            'predecessor_tasks.id as predecessor_task_id'
            )
        ->join('projects','projects.id','=','tasks.project_id')
        ->leftJoin('users','users.id','=','tasks.assignment_to')
        //->leftJoin('tasks as complete','tasks.predecessor','=','complete.predecessor')
        ->leftJoin('tasks as predecessor_tasks', function ($join) 
        {
            $join->on('tasks.predecessor', '=', 'predecessor_tasks.task_no') ;
            $join->on( 'predecessor_tasks.project_id' , '=' , 'tasks.project_id' ) ;
            //->where('predecessor_tasks.progress', 100); 
        }); 
        
        if($userId !== FALSE)
        {
            $tasks = $tasks->where('tasks.assignment_to',$userId);
        }

        if($progress === FALSE)
        {
            $tasks = $tasks->where('tasks.progress', '<' , 100 );
        }
        else
        {
            $tasks = $tasks->where('tasks.progress', '=' , $progress );
        }
        if($projectId !== FALSE)
        {
            $tasks = $tasks->where('projects.id',$projectId);
        }
        $tasks = $tasks->groupBy('tasks.id')->orderBy('tasks.id', 'DESC')->get();

        return $tasks ;
    }
}