PMCORE-2835
This commit is contained in:
@@ -20,32 +20,45 @@ class Application extends Model
|
||||
// Status name and status id
|
||||
public static $app_status_values = ['DRAFT' => 1, 'TO_DO' => 2, 'COMPLETED' => 3, 'CANCELLED' => 4];
|
||||
|
||||
public function delegations()
|
||||
{
|
||||
return $this->hasMany(Delegation::class, 'APP_UID', 'APP_UID');
|
||||
}
|
||||
|
||||
/**
|
||||
* Current user related to the application
|
||||
*/
|
||||
public function currentUser()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'APP_CUR_USER', 'USR_UID');
|
||||
}
|
||||
|
||||
/**
|
||||
* Creator user related to the application
|
||||
*/
|
||||
public function creatorUser()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'APP_INIT_USER', 'USR_UID');
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope for query to get the positive cases
|
||||
* Scope a query to only include specific user
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
* @param int $user
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeUserId($query, $user)
|
||||
{
|
||||
return $query->where('APP_DELEGATION.USR_ID', '=', $user);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope for query to get the creator
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
* @param string $usrUid
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopePositivesCases($query)
|
||||
public function scopeCreator($query, $usrUid)
|
||||
{
|
||||
$result = $query->where('APP_NUMBER', '>', 0);
|
||||
return $result;
|
||||
return $query->where('APP_INIT_USER', '=', $usrUid);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -58,8 +71,108 @@ class Application extends Model
|
||||
*/
|
||||
public function scopeAppUid($query, $appUid)
|
||||
{
|
||||
$result = $query->where('APP_UID', '=', $appUid);
|
||||
return $result;
|
||||
return $query->where('APP_UID', '=', $appUid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope a query to only include specific cases by APP_UID
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
* @param array $cases
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeSpecificCasesByUid($query, array $cases)
|
||||
{
|
||||
return $query->whereIn('APP_UID', $cases);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope for query to get the application by APP_NUMBER
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
* @param int $appNumber
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeCase($query, $appNumber)
|
||||
{
|
||||
return $query->where('APPLICATION.APP_NUMBER', '=', $appNumber);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope for query to get the positive cases
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopePositiveCases($query)
|
||||
{
|
||||
return $query->where('APPLICATION.APP_NUMBER', '>', 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope a query to only include specific cases
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
* @param array $cases
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeSpecificCases($query, array $cases)
|
||||
{
|
||||
return $query->whereIn('APPLICATION.APP_NUMBER', $cases);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope more than one range of cases
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
* @param array $rangeCases
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeRangeOfCases($query, array $rangeCases)
|
||||
{
|
||||
foreach ($rangeCases as $fromTo) {
|
||||
$fromTo = explode("-", $fromTo);
|
||||
if (count($fromTo) === 2) {
|
||||
$from = $fromTo[0];
|
||||
$to = $fromTo[1];
|
||||
if ($to > $from) {
|
||||
$query->orWhere(function ($query) use ($from, $to) {
|
||||
$query->casesFrom($from)->casesTo($to);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope a query to only include cases from a range
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
* @param int $from
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeCasesFrom($query, int $from)
|
||||
{
|
||||
return $query->where('APPLICATION.APP_NUMBER', '>=', $from);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope a query to only include cases from a range
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
* @param int $to
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeCasesTo($query, int $to)
|
||||
{
|
||||
return $query->where('APPLICATION.APP_NUMBER', '<=', $to);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -72,8 +185,20 @@ class Application extends Model
|
||||
*/
|
||||
public function scopeStatusId($query, int $status)
|
||||
{
|
||||
$result = $query->where('APP_STATUS_ID', '=', $status);
|
||||
return $result;
|
||||
return $query->where('APP_STATUS_ID', '=', $status);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope a more status
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
* @param array $statuses
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeStatusIds($query, array $statuses)
|
||||
{
|
||||
return $query->whereIn('APPLICATION.APP_STATUS_ID', $statuses);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -86,8 +211,104 @@ class Application extends Model
|
||||
*/
|
||||
public function scopeProUid($query, $proUid)
|
||||
{
|
||||
$result = $query->where('PRO_UID', '=', $proUid);
|
||||
return $result;
|
||||
return $query->where('APPLICATION.PRO_UID', '=', $proUid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope a query to only include a specific start date
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
* @param string $from
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeStartDateFrom($query, string $from)
|
||||
{
|
||||
return $query->where('APPLICATION.APP_CREATE_DATE', '>=', $from);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope a query to only include a specific start date
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
* @param string $to
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeStartDateTo($query, string $to)
|
||||
{
|
||||
return $query->where('APPLICATION.APP_CREATE_DATE', '<=', $to);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope a query to only include a specific finish date
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
* @param string $from
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeFinishCaseFrom($query, string $from)
|
||||
{
|
||||
return $query->where('APPLICATION.APP_FINISH_DATE', '>=', $from);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope a query to only include a specific finish date
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
* @param string $to
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeFinishCaseTo($query, string $to)
|
||||
{
|
||||
return $query->where('APPLICATION.APP_FINISH_DATE', '<=', $to);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope a query to only include a specific task
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
* @param int $task
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeTask($query, int $task)
|
||||
{
|
||||
return $query->where('APP_DELEGATION.TAS_ID', '=', $task);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope join with process
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeJoinProcess($query)
|
||||
{
|
||||
$query->leftJoin('PROCESS', function ($leftJoin) {
|
||||
$leftJoin->on('APPLICATION.PRO_UID', '=', 'PROCESS.PRO_UID');
|
||||
});
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope join with delegation
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeJoinDelegation($query)
|
||||
{
|
||||
$query->leftJoin('APP_DELEGATION', function ($leftJoin) {
|
||||
$leftJoin->on('APPLICATION.APP_NUMBER', '=', 'APP_DELEGATION.APP_NUMBER');
|
||||
});
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -103,7 +324,7 @@ class Application extends Model
|
||||
$query = Application::query()
|
||||
->select()
|
||||
->proUid($proUid)
|
||||
->positivesCases()
|
||||
->positiveCases()
|
||||
->orderBy('APP_NUMBER', 'ASC');
|
||||
return $query->get();
|
||||
}
|
||||
@@ -183,7 +404,7 @@ class Application extends Model
|
||||
->select()
|
||||
->proUid($proUid)
|
||||
->statusId($status)
|
||||
->positivesCases();
|
||||
->positiveCases();
|
||||
|
||||
return $query->get()->count(['APP_NUMBER']);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user