Merged in bugfix/PMCORE-3083 (pull request #7967)

PMCORE-3083

Approved-by: Julio Cesar Laura Avendaño
This commit is contained in:
Paula Quispe
2021-07-12 20:52:25 +00:00
committed by Julio Cesar Laura Avendaño
17 changed files with 439 additions and 43 deletions

View File

@@ -1260,6 +1260,10 @@ class AbstractCases implements CasesInterface
if (!empty($properties['caseNumber'])) {
$this->setCaseNumber($properties['caseNumber']);
}
// Add a filter with specific cases or range of cases like '1, 3-5, 8, 10-15'
if (!empty($properties['filterCases'])) {
$this->setFilterCases($properties['filterCases']);
}
// Filter by case title
if (!empty($properties['caseTitle'])) {
$this->setCaseTitle($properties['caseTitle']);
@@ -1290,10 +1294,6 @@ class AbstractCases implements CasesInterface
$this->setFinishCaseTo($properties['finishCaseTo']);
}
/** Apply filters related to SEARCH */
// Add a filter with specific cases or range of cases like '1, 3-5, 8, 10-15'
if (get_class($this) === Search::class && !empty($properties['filterCases'])) {
$this->setFilterCases($properties['filterCases']);
}
// Filter by more than one case statuses like ['DRAFT', 'TO_DO']
if (get_class($this) === Search::class && !empty($properties['caseStatuses'])) {
$this->setCaseStatuses($properties['caseStatuses']);

View File

@@ -47,6 +47,18 @@ class Draft extends AbstractCases
if ($this->getCaseNumber()) {
$query->case($this->getCaseNumber());
}
// Filter only cases by specific cases like [1,3,5]
if (!empty($this->getCasesNumbers()) && empty($this->getRangeCasesFromTo())) {
$query->specificCases($this->getCasesNumbers());
}
// Filter only cases by range of cases like ['1-5', '10-15']
if (!empty($this->getRangeCasesFromTo()) && empty($this->getCasesNumbers())) {
$query->rangeOfCases($this->getRangeCasesFromTo());
}
// Filter cases mixed by range of cases and specific cases like '1,3-5,8'
if (!empty($this->getCasesNumbers()) && !empty($this->getRangeCasesFromTo())) {
$query->casesOrRangeOfCases($this->getCasesNumbers(), $this->getRangeCasesFromTo());
}
// Specific case title
if (!empty($this->getCaseTitle())) {
$query->title($this->getCaseTitle());

View File

@@ -50,6 +50,18 @@ class Inbox extends AbstractCases
if ($this->getCaseNumber()) {
$query->case($this->getCaseNumber());
}
// Filter only cases by specific cases like [1,3,5]
if (!empty($this->getCasesNumbers()) && empty($this->getRangeCasesFromTo())) {
$query->specificCases($this->getCasesNumbers());
}
// Filter only cases by range of cases like ['1-5', '10-15']
if (!empty($this->getRangeCasesFromTo()) && empty($this->getCasesNumbers())) {
$query->rangeOfCases($this->getRangeCasesFromTo());
}
// Filter cases mixed by range of cases and specific cases like '1,3-5,8'
if (!empty($this->getCasesNumbers()) && !empty($this->getRangeCasesFromTo())) {
$query->casesOrRangeOfCases($this->getCasesNumbers(), $this->getRangeCasesFromTo());
}
// Specific case title
if (!empty($this->getCaseTitle())) {
$query->title($this->getCaseTitle());

View File

@@ -52,6 +52,18 @@ class Participated extends AbstractCases
if ($this->getCaseNumber()) {
$query->case($this->getCaseNumber());
}
// Filter only cases by specific cases like [1,3,5]
if (!empty($this->getCasesNumbers()) && empty($this->getRangeCasesFromTo())) {
$query->specificCases($this->getCasesNumbers());
}
// Filter only cases by range of cases like ['1-5', '10-15']
if (!empty($this->getRangeCasesFromTo()) && empty($this->getCasesNumbers())) {
$query->rangeOfCases($this->getRangeCasesFromTo());
}
// Filter cases mixed by range of cases and specific cases like '1,3-5,8'
if (!empty($this->getCasesNumbers()) && !empty($this->getRangeCasesFromTo())) {
$query->casesOrRangeOfCases($this->getCasesNumbers(), $this->getRangeCasesFromTo());
}
// Specific case title
if (!empty($this->getCaseTitle())) {
$query->title($this->getCaseTitle());

View File

@@ -49,6 +49,18 @@ class Paused extends AbstractCases
if ($this->getCaseNumber()) {
$query->case($this->getCaseNumber());
}
// Filter only cases by specific cases like [1,3,5]
if (!empty($this->getCasesNumbers()) && empty($this->getRangeCasesFromTo())) {
$query->specificCases($this->getCasesNumbers());
}
// Filter only cases by range of cases like ['1-5', '10-15']
if (!empty($this->getRangeCasesFromTo()) && empty($this->getCasesNumbers())) {
$query->rangeOfCases($this->getRangeCasesFromTo());
}
// Filter cases mixed by range of cases and specific cases like '1,3-5,8'
if (!empty($this->getCasesNumbers()) && !empty($this->getRangeCasesFromTo())) {
$query->casesOrRangeOfCases($this->getCasesNumbers(), $this->getRangeCasesFromTo());
}
// Specific case title
if (!empty($this->getCaseTitle())) {
$query->title($this->getCaseTitle());

View File

@@ -48,14 +48,18 @@ class Search extends AbstractCases
if ($this->getCaseNumber()) {
$query->case($this->getCaseNumber());
}
// Filter cases by specific cases like [1,3,5]
if (!empty($this->getCasesNumbers())) {
// Filter only cases by specific cases like [1,3,5]
if (!empty($this->getCasesNumbers()) && empty($this->getRangeCasesFromTo())) {
$query->specificCases($this->getCasesNumbers());
}
// Filter cases by range of cases like ['1-5', '10-15']
if (!empty($this->getRangeCasesFromTo())) {
// Filter only cases by range of cases like ['1-5', '10-15']
if (!empty($this->getRangeCasesFromTo()) && empty($this->getCasesNumbers())) {
$query->rangeOfCases($this->getRangeCasesFromTo());
}
// Filter cases mixed by range of cases and specific cases like '1,3-5,8'
if (!empty($this->getCasesNumbers()) && !empty($this->getRangeCasesFromTo())) {
$query->casesOrRangeOfCases($this->getCasesNumbers(), $this->getRangeCasesFromTo());
}
// Specific case title
if (!empty($this->getCaseTitle())) {
// Join with delegation

View File

@@ -49,6 +49,18 @@ class Supervising extends AbstractCases
if ($this->getCaseNumber()) {
$query->case($this->getCaseNumber());
}
// Filter only cases by specific cases like [1,3,5]
if (!empty($this->getCasesNumbers()) && empty($this->getRangeCasesFromTo())) {
$query->specificCases($this->getCasesNumbers());
}
// Filter only cases by range of cases like ['1-5', '10-15']
if (!empty($this->getRangeCasesFromTo()) && empty($this->getCasesNumbers())) {
$query->rangeOfCases($this->getRangeCasesFromTo());
}
// Filter cases mixed by range of cases and specific cases like '1,3-5,8'
if (!empty($this->getCasesNumbers()) && !empty($this->getRangeCasesFromTo())) {
$query->casesOrRangeOfCases($this->getCasesNumbers(), $this->getRangeCasesFromTo());
}
// Specific case title
if (!empty($this->getCaseTitle())) {
$query->title($this->getCaseTitle());

View File

@@ -50,6 +50,18 @@ class Unassigned extends AbstractCases
if ($this->getCaseNumber()) {
$query->case($this->getCaseNumber());
}
// Filter only cases by specific cases like [1,3,5]
if (!empty($this->getCasesNumbers()) && empty($this->getRangeCasesFromTo())) {
$query->specificCases($this->getCasesNumbers());
}
// Filter only cases by range of cases like ['1-5', '10-15']
if (!empty($this->getRangeCasesFromTo()) && empty($this->getCasesNumbers())) {
$query->rangeOfCases($this->getRangeCasesFromTo());
}
// Filter cases mixed by range of cases and specific cases like '1,3-5,8'
if (!empty($this->getCasesNumbers()) && !empty($this->getRangeCasesFromTo())) {
$query->casesOrRangeOfCases($this->getCasesNumbers(), $this->getRangeCasesFromTo());
}
// Specific case title
if ($this->getCaseTitle()) {
$query->title($this->getCaseTitle());

View File

@@ -135,18 +135,49 @@ class Application extends Model
*/
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);
});
$query->where(function ($query) use ($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 more than one range of cases
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param array $cases
* @param array $rangeCases
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeCasesOrRangeOfCases($query, array $cases, array $rangeCases)
{
$query->where(function ($query) use ($cases, $rangeCases) {
// Get the cases related to the task self service
$query->specificCases($cases);
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);
});
}
}
}
});
}
/**

View File

@@ -488,18 +488,49 @@ class Delegation extends Model
*/
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);
});
$query->where(function ($query) use ($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 more than one range of cases
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param array $cases
* @param array $rangeCases
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeCasesOrRangeOfCases($query, array $cases, array $rangeCases)
{
$query->where(function ($query) use ($cases, $rangeCases) {
// Get the cases related to the task self service
$query->specificCases($cases);
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);
});
}
}
}
});
}
/**

View File

@@ -50,6 +50,7 @@ class Home extends Api
* @param int $process
* @param int $task
* @param string $caseTitle
* @param string $filterCases
* @param string $paged
* @param string $sort
*
@@ -65,6 +66,7 @@ class Home extends Api
int $process = 0,
int $task = 0,
string $caseTitle = '',
string $filterCases = '',
string $paged = '0,15',
string $sort = 'APP_NUMBER,DESC'
) {
@@ -74,6 +76,7 @@ class Home extends Api
$properties = [];
$properties['caseNumber'] = $caseNumber;
$properties['caseTitle'] = $caseTitle;
$properties['filterCases'] = $filterCases;
$properties['process'] = $process;
$properties['task'] = $task;
// Get the user that access to the API
@@ -105,6 +108,7 @@ class Home extends Api
* @param int $process
* @param int $task
* @param string $caseTitle
* @param string $filterCases
* @param string $paged
* @param string $sort
*
@@ -120,6 +124,7 @@ class Home extends Api
int $process = 0,
int $task = 0,
string $caseTitle = '',
string $filterCases = '',
string $paged = '0,15',
string $sort = 'APP_NUMBER,DESC'
) {
@@ -129,6 +134,7 @@ class Home extends Api
$properties = [];
$properties['caseNumber'] = $caseNumber;
$properties['caseTitle'] = $caseTitle;
$properties['filterCases'] = $filterCases;
$properties['process'] = $process;
$properties['task'] = $task;
// Get the user that access to the API
@@ -160,6 +166,7 @@ class Home extends Api
* @param int $process
* @param int $task
* @param string $caseTitle
* @param string $filterCases
* @param string $paged
* @param string $sort
*
@@ -175,6 +182,7 @@ class Home extends Api
int $process = 0,
int $task = 0,
string $caseTitle = '',
string $filterCases = '',
string $paged = '0,15',
string $sort = 'APP_NUMBER,DESC'
) {
@@ -184,6 +192,7 @@ class Home extends Api
$properties = [];
$properties['caseNumber'] = $caseNumber;
$properties['caseTitle'] = $caseTitle;
$properties['filterCases'] = $filterCases;
$properties['process'] = $process;
$properties['task'] = $task;
// Get the user that access to the API
@@ -217,6 +226,7 @@ class Home extends Api
* @param int $process
* @param int $task
* @param string $caseTitle
* @param string $filterCases
* @param string $paged
* @param string $sort
*
@@ -232,6 +242,7 @@ class Home extends Api
int $process = 0,
int $task = 0,
string $caseTitle = '',
string $filterCases = '',
string $paged = '0,15',
string $sort = 'APP_NUMBER,DESC'
) {
@@ -241,6 +252,7 @@ class Home extends Api
$properties = [];
$properties['caseNumber'] = $caseNumber;
$properties['caseTitle'] = $caseTitle;
$properties['filterCases'] = $filterCases;
$properties['process'] = $process;
$properties['task'] = $task;
// Get the user that access to the API
@@ -272,6 +284,7 @@ class Home extends Api
* @param int $process
* @param int $task
* @param string $caseTitle
* @param string $filterCases
* @param string $filter
* @param string $caseStatus
* @param string $startCaseFrom
@@ -293,6 +306,7 @@ class Home extends Api
int $process = 0,
int $task = 0,
string $caseTitle = '',
string $filterCases = '',
string $filter = 'IN_PROGRESS',
string $caseStatus = '',
string $startCaseFrom = '',
@@ -306,6 +320,7 @@ class Home extends Api
$properties = [];
$properties['caseNumber'] = $caseNumber;
$properties['caseTitle'] = $caseTitle;
$properties['filterCases'] = $filterCases;
$properties['process'] = $process;
$properties['task'] = $task;
// Get the user that access to the API