add new url scraping data and create tab data lists
This commit is contained in:
@@ -54,4 +54,86 @@ class PbgTask extends Model
|
||||
public function attachments(){
|
||||
return $this->hasMany(PbgTaskAttachment::class, 'pbg_task_id', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the data lists associated with this PBG task (One to Many)
|
||||
* One pbg_task can have many data lists
|
||||
*/
|
||||
public function dataLists()
|
||||
{
|
||||
return $this->hasMany(PbgTaskDetailDataList::class, 'pbg_task_uuid', 'uuid');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get only data lists with files
|
||||
*/
|
||||
public function dataListsWithFiles()
|
||||
{
|
||||
return $this->hasMany(PbgTaskDetailDataList::class, 'pbg_task_uuid', 'uuid')
|
||||
->whereNotNull('file')
|
||||
->where('file', '!=', '');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get data lists by status
|
||||
*/
|
||||
public function dataListsByStatus($status)
|
||||
{
|
||||
return $this->hasMany(PbgTaskDetailDataList::class, 'pbg_task_uuid', 'uuid')
|
||||
->where('status', $status);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get data lists by data type
|
||||
*/
|
||||
public function dataListsByType($dataType)
|
||||
{
|
||||
return $this->hasMany(PbgTaskDetailDataList::class, 'pbg_task_uuid', 'uuid')
|
||||
->where('data_type', $dataType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create or update data lists from API response
|
||||
*/
|
||||
public function syncDataLists(array $dataLists): void
|
||||
{
|
||||
foreach ($dataLists as $listData) {
|
||||
PbgTaskDetailDataList::updateOrCreate(
|
||||
['uid' => $listData['uid']],
|
||||
[
|
||||
'name' => $listData['name'] ?? null,
|
||||
'description' => $listData['description'] ?? null,
|
||||
'status' => $listData['status'] ?? null,
|
||||
'status_name' => $listData['status_name'] ?? null,
|
||||
'data_type' => $listData['data_type'] ?? null,
|
||||
'data_type_name' => $listData['data_type_name'] ?? null,
|
||||
'file' => $listData['file'] ?? null,
|
||||
'note' => $listData['note'] ?? null,
|
||||
'pbg_task_uuid' => $this->uuid,
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get data lists count by status
|
||||
*/
|
||||
public function getDataListsCountByStatusAttribute()
|
||||
{
|
||||
return $this->dataLists()
|
||||
->selectRaw('status, COUNT(*) as count')
|
||||
->groupBy('status')
|
||||
->pluck('count', 'status');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get data lists count by data type
|
||||
*/
|
||||
public function getDataListsCountByTypeAttribute()
|
||||
{
|
||||
return $this->dataLists()
|
||||
->selectRaw('data_type, COUNT(*) as count')
|
||||
->groupBy('data_type')
|
||||
->pluck('count', 'data_type');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user