belongsTo( 'Projectemployee' ); } public static function getUsedYears() { $years = Projecthour::selectRaw( "YEAR(hourdate) AS year" ) ->distinct() ->orderByRaw( 'YEAR( hourdate )' ) ->get(); return $years; } public static function getMonthlyEmployeeHoursPerProject( $employeeID, $year ) { $projectHours = ProjecthoursPerEmployeePerMonth::fire( $employeeID, $year ); return $projectHours; } public static function recapProjects() { $recaps = QRecapProjects::fire(); return $recaps; } public static function saveProjecthour( $projecthourID, $projecthour ) { $projecthour = (array) $projecthour; if ( $projecthourID == 0 ) { $projecthour = Projecthour::create( $projecthour ); $projecthourID = $projecthour['id']; } else { Projecthour::whereId( $projecthourID )->update( $projecthour ); } return $projecthourID; } public static function removeProjecthour( $projecthourID ) { Projecthour::whereId( $projecthourID )->delete(); } public static function getTotalHoursPerProject( $projectID ) { $totalProjecthours = self::selectRaw( "CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname, SUM(IF(hourtype_id = 1, hours, 0)) AS declarable, SUM(IF(hourtype_id = 1, hours * tarif, 0)) AS revenues, SUM(IF(hourtype_id != 1, hours, 0)) AS nondeclarable" ) ->join( 'projectemployees AS PRE', 'PRE.id', '=', 'projecthours.projectemployee_id' ) ->join( 'users AS USR', 'USR.id', '=', 'PRE.user_id' ) ->groupBy( 'USR.id' ) ->where( 'PRE.project_id', '=', $projectID ) ->get(); return $totalProjecthours; } }