clqms-be/app/Models/Test/TestMapDetailModel.php
mahdahar 7fd3dfddd8 fix: add testmap search filters
Allow the test map list endpoint to filter by host and client, and include container labels in detail responses. Update the API contract and feature coverage to match.
2026-04-16 12:53:46 +07:00

71 lines
1.8 KiB
PHP
Executable File

<?php
namespace App\Models\Test;
use App\Models\BaseModel;
class TestMapDetailModel extends BaseModel {
protected $table = 'testmapdetail';
protected $primaryKey = 'TestMapDetailID';
protected $allowedFields = [
'TestMapID',
'HostTestCode',
'HostTestName',
'ConDefID',
'ClientTestCode',
'ClientTestName',
'CreateDate',
'EndDate'
];
protected $useTimestamps = true;
protected $createdField = 'CreateDate';
protected $updatedField = '';
protected $useSoftDeletes = true;
protected $deletedField = "EndDate";
/**
* Get all details for a test map
*/
public function getDetailsByTestMap($testMapID) {
return $this->select('testmapdetail.*, containerdef.ConName AS ContainerLabel')
->join('containerdef', 'containerdef.ConDefID = testmapdetail.ConDefID', 'left')
->where('testmapdetail.TestMapID', $testMapID)
->where('testmapdetail.EndDate IS NULL')
->findAll();
}
/**
* Get test map detail by host test code
*/
public function getDetailsByHostCode($hostTestCode) {
return $this->where('HostTestCode', $hostTestCode)
->where('EndDate IS NULL')
->findAll();
}
/**
* Get test map detail by client test code
*/
public function getDetailsByClientCode($clientTestCode) {
return $this->where('ClientTestCode', $clientTestCode)
->where('EndDate IS NULL')
->findAll();
}
/**
* Disable all details for a test map
*
* @param int $testMapID
* @return void
*/
public function disableByTestMapID($testMapID)
{
$this->where('TestMapID', $testMapID)
->where('EndDate', null)
->set('EndDate', date('Y-m-d H:i:s'))
->update();
}
}