Apidcloud

InspecaoModel

Feb 4th, 2016
82
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. class Inspecao extends CActiveRecord
  4. {
  5.     const ESTADO_EM_FALTA=0;
  6.     const ESTADO_CONCLUIDO=1;
  7.    
  8.     public $nserie;
  9.     public $_unidade;
  10.  
  11.     public $kitnserie;
  12.  
  13.     public static function model($className=__CLASS__)
  14.     {
  15.         return parent::model($className);
  16.     }
  17.  
  18.     public function tableName()
  19.     {
  20.         return 'inspecao';
  21.     }
  22.  
  23.     public function rules()
  24.     {
  25.         return array(
  26.             array('data_limite, contacto, nserie', 'required'),
  27.             array('contacto', 'length', 'max'=>128),
  28.             array('data_conclusao', 'default', 'setOnEmpty' => true),
  29.             array('id, unidade_id, data_limite, data_conclusao, contacto, estado', 'safe', 'on'=>'search'),
  30.             array('nserie', 'verifica'),
  31.             array('contacto','email'),
  32.         );
  33.     }
  34.    
  35.     protected function beforeSave()
  36.     {
  37.         //if (!$this->nserie)
  38.         //  if ($this->unidade->nserie)
  39.         //      $this->nserie=$this->unidade->nserie;
  40.    
  41.         if($this->data_conclusao)
  42.         {          
  43.             $this->estado=Inspecao::ESTADO_CONCLUIDO;
  44.         }else{
  45.             $this->estado=Inspecao::ESTADO_EM_FALTA;
  46.         }
  47.         return parent::beforeSave();
  48.     }
  49.    
  50.     protected function afterSave()
  51.     {
  52.        
  53.         if ($this->estado==Inspecao::ESTADO_CONCLUIDO)
  54.         {
  55.             //Yii::trace('**** CONCLUIDO', 'asd.asd.asd');
  56.             if (!$this->unidade->proximaInspecao)
  57.             {
  58.                 //Yii::trace('**** PROXIMA', 'asd.asd.asd');
  59.                 $nova_inspecao=new Inspecao();
  60.                 $nova_inspecao->unidade_id=$this->unidade->id;
  61.                 $nova_inspecao->nserie=$this->unidade->nserie;
  62.                
  63.                 $nova_data = strtotime('+1 year', strtotime($this->data_conclusao));
  64.                
  65.                 $nova_inspecao->data_limite=date("Y-m-d", $nova_data);
  66.                 $nova_inspecao->contacto=$this->contacto;
  67.                 $nova_inspecao->estado=Inspecao::ESTADO_EM_FALTA;
  68.                 if ($nova_inspecao->save())
  69.                     Yii::trace('**** SUCESSO', 'asd.asd.asd');
  70.                 else
  71.                     Yii::trace('**** ERRO'.print_r($nova_inspecao->getErrors(),true), 'asd.asd.asd');
  72.             }
  73.         }
  74.        
  75.         parent::afterSave();
  76.     }
  77.    
  78.     public function verifica($attribute,$params)
  79.     {
  80.         $this->_unidade=Unidade::model()->findByAttributes(array('nserie'=>$this->nserie));
  81.         if (!$this->_unidade)
  82.             $this->addError('nserie', 'Unidade não existe');
  83.        
  84.     }
  85.  
  86.     public function relations() {
  87.  
  88.         return array(
  89.             'unidade' => array(self::BELONGS_TO, 'Unidade', 'unidade_id'),
  90.             'emkit'=>array( self::HAS_MANY,'EmKit',array('id'=>'unidade_id'),'through'=>'unidade' ),
  91.             'kit'=>array( self::BELONGS_TO,'Kit','kit_id','through'=>'emkit' )
  92.         );
  93.     }
  94.  
  95.     public function attributeLabels()
  96.     {
  97.         return array(
  98.             'id' => 'Identificador',
  99.             'unidade_id' => 'Unidade',
  100.             'data_limite' => 'Data Limite',
  101.             'data_conclusao' => 'Data de Execução',
  102.             'contacto' => 'Contacto e-mail',
  103.             'proximaInspecao' => 'Próxima Inspeção',
  104.             'nserie'=>'Nº de Série',
  105.             'kitnserie' => 'Kit Nº Série',
  106.         );
  107.     }
  108.  
  109.     public function search()
  110.     {
  111.         $criteria=new CDbCriteria;
  112.  
  113.         $criteria->compare('id',$this->id,true);
  114.         $criteria->compare('unidade_id',$this->unidade_id,true);
  115.        
  116.         $data = $this->data_limite;
  117.        
  118.         $criteria->compare('data_limite',$data,true);
  119.        
  120.         $data = $this->data_conclusao;
  121.        
  122.         $criteria->compare('data_conclusao',$data,true);
  123.        
  124.         $criteria->compare('contacto',$this->contacto,true);
  125.         $criteria->compare('t.estado',$this->estado);
  126.        
  127.         $criteria->compare('nserie',$this->nserie,true);
  128.        
  129.         $criteria->select='t.*, unidade.nserie AS nserie';
  130.         $criteria->join='LEFT JOIN unidade ON unidade.id=t.unidade_id';
  131.  
  132.         return new CActiveDataProvider($this, array(
  133.             'criteria'=>$criteria,
  134.             'sort'=>array(
  135.                 'defaultOrder'=>array(
  136.                     'data_limite'=>false
  137.                 ),
  138.                 'attributes' => array(
  139.                     'nserie' => array(
  140.                         'asc' => 'nserie',
  141.                         'desc' => 'nserie desc',
  142.                     ),
  143.                     '*',
  144.                 ),
  145.             )
  146.         ));
  147.     }
  148.    
  149.     public function inspecoesUnidade($unidade)
  150.     {
  151.         $criteria=new CDbCriteria;
  152.  
  153.         $criteria->compare('id',$this->id,true);
  154.         $criteria->compare('unidade_id',$unidade);
  155.         $criteria->compare('data_limite',$this->data_limite,true);
  156.         $criteria->compare('data_conclusao',$this->data_conclusao,true);
  157.         $criteria->compare('contacto',$this->contacto,true);
  158.         $criteria->compare('estado',$this->estado);
  159.  
  160.         return new CActiveDataProvider($this, array(
  161.             'criteria'=>$criteria,
  162.             'sort'=>array(
  163.                 'defaultOrder'=>array(
  164.                     'data_limite'=>true
  165.                 )
  166.             )
  167.         ));
  168.     }
  169.    
  170.     public static function itemAlias($type,$code=NULL) {
  171.         $_items = array(
  172.             'Estado' => array(
  173.                 self::ESTADO_EM_FALTA => 'Em falta',
  174.                 self::ESTADO_CONCLUIDO => 'Concluída',
  175.             ),
  176.         );
  177.         if (isset($code))
  178.             return isset($_items[$type][$code]) ? $_items[$type][$code] : false;
  179.         else
  180.             return isset($_items[$type]) ? $_items[$type] : false;
  181.     }
  182.    
  183.     public function getCssClass()
  184.     {
  185.         $css='';
  186.        
  187.         if ($this->estado==self::ESTADO_CONCLUIDO)
  188.         {
  189.             $css='success';
  190.         } else {
  191.        
  192.             $data_actual = strtotime(date("Y-m-d"));
  193.             $data_limite = strtotime($this->data_limite);
  194.        
  195.             $delta = $data_actual-$data_limite;
  196.        
  197.             if ($delta>0)
  198.                 $css='error';
  199.                
  200.             if ($delta<=0)
  201.                 $css='warning';
  202.        
  203.             if ($delta<-2592000)
  204.                 $css='';
  205.         }
  206.        
  207.         return $css;
  208.     }
  209.    
  210.     public function existeRelatorio()
  211.     {
  212.         $existe=false;
  213.         if ($this->relatorio)
  214.             $existe=true;
  215.        
  216.         return $existe;
  217.     }
  218. }
RAW Paste Data