101 lines
2.9 KiB
PHP
101 lines
2.9 KiB
PHP
<?php
|
|
/**
|
|
* Created by Pensare Software.
|
|
* User: Theo Weijmer
|
|
* Date: 17/01/2018
|
|
* Time: 10:25
|
|
*/
|
|
|
|
class Projectemployee extends BaseModel {
|
|
|
|
public function project()
|
|
{
|
|
return $this->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();
|
|
}
|
|
|
|
} |