hasMany( 'Offer' ); } public function projectemployees() { return $this->hasMany( 'Projectemployee' ); } public function projectcosts() { return $this->hasMany( 'Projectcost' ); } public function invoices() { return $this->hasMany( 'Invoice' ); } public function projectleader() { return $this->belongsTo( 'User', 'projectleader_id' ); } public function customer() { return $this->belongsTo( 'Customer' ); } public static function getAllProjects( $archive = 'F' ) { $projects = Project::getBaseProject(); if ( $archive == 'F' ) $projects = $projects->whereArchive( 'F' ); $projects = $projects->get(); return $projects; } public static function getProject( $projectID ) { $project = Project::getBaseProject(); $project = $project->whereArchive( 'F' ) ->whereId( $projectID ) ->first(); return $project; } public static function removeProject( $projectID ) { Project::whereId( $projectID )->delete(); } public static function getBaseProject() { $project = Project::with( [ 'projectleader' => function ( $q ) { $q->selectRaw( "id, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname" ); }] ) ->with( [ 'offers' => function ( $q ) { $q->whereArchive( 'F' ); }] ) ->with( [ 'projectemployees.user' => function ( $q ) { $q->selectRaw( "id, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname" ); }] ) ->with( 'projectemployees.projecthours' ) ->with( 'projectcosts.external' ) ->with( 'invoices.payments' ) ->with( 'invoices.vat' ) ->with( 'customer' ); return $project; } public static function createProject() { $data = ['startdate' => date( 'Y-m-d' )]; $project = Project::create( $data ); return $project->id; } public static function saveProject( $projectID, $project ) { $project = (array) $project; if ( $projectID == 0 ) { $project = Project::create( $project ); $projectID = $project['id'];; } else { Project::whereId( $projectID )->update( $project ); } return $projectID; } }