rendered paste body /**
* Return all samples for given $work_order_id and $research_name where $research_name kind of research has been done.;
*
* @return $samples, Array. Samples->sample->layers->layer->
* sample->researches->research
* layer->researches_data->research_data
*/
//NOTE: Check for MVC violations (li)
public function foobar($work_order_id, $research_name)
{
//TODO: CHECK OUT IF 'SELECT DISTINCT IS A HACK!!
$sql = 'SELECT DISTINCT '.
'sample.*, sample_type.name as type ' .
'FROM work_order '.
'JOIN sample ON work_order.id = sample.work_order_id '.
'JOIN sample_type ON sample.sample_type_id = sample_type.id ' .
'JOIN layer ON sample.id = layer.sample_id '.
'JOIN ' . $research_name . '_research ON sample.id = ' . $research_name . '_research.sample_id '.
'WHERE work_order.id = ?';
$samples = $this->db->fetchAll($sql, array($work_order_id));
$sql2 = 'SELECT '.
'sample.id as sample_id , sample.work_order_id as work_order_id, '.
'material.name as material, ' .
'layer.* '.
'FROM work_order '.
'JOIN sample ON work_order.id = sample.work_order_id '.
'JOIN layer ON sample.id = layer.sample_id '.
'JOIN material ON layer.material_id = material.id ' .
'JOIN ' . $research_name . '_research ON sample.id = ' . $research_name . '_research.sample_id '.
'WHERE work_order.id = ?';
$layers = $this->db->fetchAll($sql2, array($work_order_id));
$sql3 = 'SELECT '.
'sample.id as sample_id , sample.work_order_id as work_order_id, '.
'layer.id as layer_id, '.
$research_name . '_research_of_layer.* '.
'FROM work_order '.
'JOIN sample ON work_order.id = sample.work_order_id ' .
'JOIN layer ON sample.id = layer.sample_id ' .
'JOIN ' . $research_name . '_research ON sample.id = ' . $research_name . '_research.sample_id '.
'JOIN ' . $research_name . '_research_of_layer ON layer_id = ' . $research_name . '_research_of_layer.layer_id '.
'AND ' . $research_name . '_research.id = ' .$research_name . '_research_of_layer.research_id '.
'WHERE work_order.id = ?'.
$researches_of_layer = $this->db->fetchAll($sql3, array($work_order_id));
$sql5 = 'SELECT '.
'sample.id as sample_id , sample.work_order_id as work_order_id, '.
$research_name .'_research.* '.
'FROM work_order '.
'JOIN sample ON work_order.id = sample.work_order_id '.
'JOIN ' . $research_name . '_research ON sample.id = ' . $research_name . '_research.sample_id '.
'WHERE work_order.id = ?';
$researches = $this->db->fetchAll($sql5, array($work_order_id));
$sql6 = 'SELECT '.
'sample.id as sample_id , sample.work_order_id as work_order_id, '.
'layer.id as layer_id, '.
$research_name .'_research_data.* '.
'FROM work_order '.
'JOIN sample ON work_order.id = sample.work_order_id '.
'JOIN layer ON sample.id = layer.sample_id '.
'JOIN ' . $research_name . '_research_data ON ' .
'layer.id = ' . $research_name . '_research_data.layer_id '.
'WHERE work_order.id = ?';
$researches_data = $this->db->fetchAll($sql6, array($work_order_id));
foreach ($samples as &$sample)
{
foreach ($researches as $research)
{
if($sample['id'] == $research['sample_id'])
{
$sample[$research_name . '_researches'][] = $research;
}
}
foreach ($layers as &$layer)
{
foreach ($researches_of_layer as $research_of_layer)
{
//if research_of_layer belongs to layer
if ($layer['id'] == $research_of_layer['layer_id'])
{
//populate the layer
$layer[$research_name . '_research_of_layer'][] = $research_of_layer;
}
}
foreach ($researches_data as $research_data)
{
//if research belongs to layer
if ($layer['id'] == $research_data['layer_id'])
{
//populate the layer
$layer[$research_name . '_researches_data'][] = $research_data;
}
}
//if layer belongs to sample
if ($sample['id'] == $layer['sample_id'])
{
//populate the sample
$sample['layers'][] = $layer;
}
}
}
return $samples;
}