belongsTo( 'Project' ); } public function user() { return $this->belongsTo( 'User' ); } public function projecthours() { return $this->hasMany( 'Projecthour' ); } public static function getAvailableEmployees( $projectID ) { $currentEmployees = Self::whereProjectId( $projectID ) ->lists( 'user_id' ); $availableEmployees = User::selectRaw( "id, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname" ) ->whereNotIn( 'id', $currentEmployees ) ->whereArchive( 'F' ) ->get(); return $availableEmployees; } public static function getUniqueProjectEmployees() { $projectemployees = Projectemployee::selectRaw( "USR.id, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname" ) ->distinct() ->join( 'users AS USR', 'USR.id', '=', 'projectemployees.user_id' ) ->get(); return $projectemployees; } public static function getProjectemployeeDetailsPerProject( $projectID ) { $details = Projectemployee::selectRaw( 'USR.id, budget, project_id, ROUND(SUM(hours), 0) AS hours, ROUND(SUM(hours * tarif), 0) AS revenues, projectemployees.id AS projectemployeeID' ) ->join( 'users AS USR', 'USR.id', '=', 'projectemployees.user_id' ) ->join( 'projecthours AS PRH', 'PRH.projectemployee_id', '=', 'projectemployees.id' ) ->where( 'projectemployees.project_id', '=', $projectID ) ->where( 'PRH.hourtype_id', '=', 1 ) ->groupBy( 'projectemployees.id' ) ->get(); return $details; } public static function firstOrCreateProjectemployee( $userID, $projectID ) { $projectemployee = self::whereUserId($userID)->whereProjectId($projectID); if( $projectemployee->count() > 0 ) return $projectemployee->first(); $user = User::find( $userID ); $tarif = $user ? $user->hourlyrate : 0; $projectemployee = Projectemployee::create( [ 'project_id' => $projectID, 'user_id' => $userID, 'tarif' => $tarif ] ); return $projectemployee; } public static function createProjectEmployee( $projectID ) { $projectemployee = Projectemployee::create( [ 'project_id' => $projectID ] ); return $projectemployee->id; } public static function saveProjectemployee( $projectemployeeID, $projectemployee ) { Projectemployee::whereId( $projectemployeeID ) ->update( $projectemployee ); } public static function removeProjectemployee( $projectemployeeID ) { Projectemployee::whereId( $projectemployeeID )->delete(); } }