Bonsoir à tous
Je suis en train de créer les dernières actions d'affichage d'une table Interventions qui contient elle même des informations mais également des relations BelongsTo qui ne pose pas de soucis lorsque je fais un simple find('all'), sans condition. Cette même table est relié à une autre (History) via une relation hasmany().
Cette table History enregistre au fur et à mesure les actions des utilisateurs, surtout l'avancé d'une intervention. Ces informations seront mesuré, étudié dans le but d'établir des Stats (je ne suis pas encore à cette étape).
Pour chaque intervention, il y a 5 possibilités (5 cas):
L'intervention est créé mais pas attribué à un agent (cet action fonctionne)
L'intervention est attribué mais pas commencé.
L'intervention est attribué et est commencé.
L'intervetion est terminé pour l'équipe mais attend la validation du chef.
L'intervention est close. (cet action est faité également).
Mon soucis est que dans les 3 cas où je suis bloqué je dois faire un count sur la table Histories pour savoir s'il y a d'un action commencé ou non. En effet, quant une intervention sera débuté, l'agent devrait informé dans l'application l'arrivée sur le lieu et donc créera, sans le savoir directement une entrée dans la table histories. Donc si le count me renvoie 0, cela signifiera que je suis dans le cas 2, sinon dans le cas 3...
Mon idée à la base était de faire une condition dans ce genre:
<?php
public function specific($id=null)
{
$this->Intervention->recursive=1;
//cas 1
if($id==1)
{
//Non attribué a une equipe
//note: champs equipe_id equivaut à 0
$conditions=array(
'Intervention.equipe_id'=>'0'
);
}
elseif($id==2)
{
$conditions=array(
'Intervention.equipe_id <>'=>'0',
'History.nbhistory'!=0
);
}
//$this->Intervention->recursive=1;
$interventions=$this->Intervention->find('all',array(
'conditions'=>$conditions));
$this->set('interventions',$interventions);
}
?>
Et ajoutant un champs virtual afin d'obtenir le nombre d'entrée dans la table history.
Cependant cela ne fonctionne pas.
Auriez vous des idées pour résoudre mon soucis?
Merci d'avance.
Nb: si vous voulez plus d'information, n'hésitez pas.