Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class Inspecao extends CActiveRecord
- {
- const ESTADO_EM_FALTA=0;
- const ESTADO_CONCLUIDO=1;
- public $nserie;
- public $_unidade;
- public $_em_kit;
- public $kitnserie;
- public static function model($className=__CLASS__)
- {
- return parent::model($className);
- }
- public function tableName()
- {
- return 'inspecao';
- }
- public function rules()
- {
- return array(
- array('data_limite, contacto, nserie', 'required'),
- array('contacto', 'length', 'max'=>128),
- array('data_conclusao', 'default', 'setOnEmpty' => true),
- array('id, kitnserie, unidade_id, data_limite, data_conclusao, contacto, estado', 'safe', 'on'=>'search'),
- array('nserie', 'verifica'),
- array('contacto','email'),
- );
- }
- protected function beforeSave()
- {
- //if (!$this->nserie)
- // if ($this->unidade->nserie)
- // $this->nserie=$this->unidade->nserie;
- if($this->data_conclusao)
- {
- $this->estado=Inspecao::ESTADO_CONCLUIDO;
- }else{
- $this->estado=Inspecao::ESTADO_EM_FALTA;
- }
- return parent::beforeSave();
- }
- protected function afterSave()
- {
- if ($this->estado==Inspecao::ESTADO_CONCLUIDO)
- {
- //Yii::trace('**** CONCLUIDO', 'asd.asd.asd');
- if (!$this->unidade->proximaInspecao)
- {
- //Yii::trace('**** PROXIMA', 'asd.asd.asd');
- $nova_inspecao=new Inspecao();
- $nova_inspecao->unidade_id=$this->unidade->id;
- $nova_inspecao->nserie=$this->unidade->nserie;
- $nova_data = strtotime('+1 year', strtotime($this->data_conclusao));
- $nova_inspecao->data_limite=date("Y-m-d", $nova_data);
- $nova_inspecao->contacto=$this->contacto;
- $nova_inspecao->estado=Inspecao::ESTADO_EM_FALTA;
- if ($nova_inspecao->save())
- Yii::trace('**** SUCESSO', 'asd.asd.asd');
- else
- Yii::trace('**** ERRO'.print_r($nova_inspecao->getErrors(),true), 'asd.asd.asd');
- }
- }
- parent::afterSave();
- }
- public function verifica($attribute,$params)
- {
- $this->_unidade=Unidade::model()->findByAttributes(array('nserie'=>$this->nserie));
- if (!$this->_unidade)
- $this->addError('nserie', 'Unidade não existe');
- }
- public function relations()
- {
- /*
- return array(
- 'unidade' => array(self::BELONGS_TO, 'Unidade', 'unidade_id'),
- 'relatorio' => array(self::HAS_ONE, 'Relatorio', 'inspecao_id'),
- 'em_kit'=>array(self::HAS_MANY, 'EmKit', array('id' => 'unidade_id'), 'through' => 'unidade'),
- 'relatorio' => array(self::HAS_ONE, 'Relatorio', 'inspecao_id'),
- 'unidade' => array(self::BELONGS_TO, 'Unidade', 'unidade_id'),
- 'em_kit'=>array(self::HAS_MANY,'EmKit',array('id'=>'unidade_id'),'through'=>'unidade'),
- 'kit'=>array(self::BELONGS_TO,'Kit','kit_id','through'=>'em_kit')
- );*/
- return array(
- 'relatorio' => array(self::HAS_ONE, 'Relatorio', 'inspecao_id'),
- 'unidade' => array(self::BELONGS_TO, 'Unidade', 'unidade_id'),
- 'emkit'=>array(self::HAS_MANY,'EmKit',array('id'=>'unidade_id')),
- 'kit'=>array(self::HAS_ONE,'Kit','kit_id','through'=>'emkit')
- );
- }
- public function attributeLabels()
- {
- return array(
- 'id' => 'Identificador',
- 'unidade_id' => 'Unidade',
- 'data_limite' => 'Data Limite',
- 'data_conclusao' => 'Data de Execução',
- 'contacto' => 'Contacto e-mail',
- 'proximaInspecao' => 'Próxima Inspeção',
- 'nserie'=>'Nº de Série',
- 'kitnserie' => 'Kit Nº Série',
- );
- }
- public function search()
- {
- $criteria=new CDbCriteria;
- $criteria->compare('id',$this->id,true);
- $criteria->compare('unidade_id',$this->unidade_id,true);
- $data = $this->data_limite;
- /*$pattern = '/(\d+)-(\d+)/';
- if (preg_match($pattern, $this->data_limite, $matches))
- $data=sprintf("%02d", $matches[2]).'-'.sprintf("%02d", $matches[1]);
- $pattern = '/(\d+)-(\d{4})/';
- if (preg_match($pattern, $this->data_limite, $matches))
- $data=$matches[2].'-'.sprintf("%02d", $matches[1]);
- $pattern = '/(\d+)-(\d+)-(\d{4})/';
- if (preg_match($pattern, $this->data_limite, $matches))
- $data=$matches[3].'-'.sprintf("%02d", $matches[2]).'-'.sprintf("%02d", $matches[1]);*/
- $criteria->compare('data_limite',$data,true);
- $data = $this->data_conclusao;
- /*$pattern = '/(\d+)-(\d+)/';
- if (preg_match($pattern, $this->data_conclusao, $matches))
- $data=sprintf("%02d", $matches[2]).'-'.sprintf("%02d", $matches[1]);
- $pattern = '/(\d+)-(\d{4})/';
- if (preg_match($pattern, $this->data_conclusao, $matches))
- $data=$matches[2].'-'.sprintf("%02d", $matches[1]);
- $pattern = '/(\d+)-(\d+)-(\d{4})/';
- if (preg_match($pattern, $this->data_conclusao, $matches))
- $data=$matches[3].'-'.sprintf("%02d", $matches[2]).'-'.sprintf("%02d", $matches[1]);*/
- $criteria->compare('data_conclusao',$data,true);
- $criteria->compare('contacto',$this->contacto,true);
- $criteria->compare('t.estado',$this->estado);
- $criteria->compare('nserie',$this->nserie,true);
- $criteria->select='t.*, unidade.nserie AS nserie';
- $criteria->join='LEFT JOIN unidade ON unidade.id=t.unidade_id';
- return new CActiveDataProvider($this, array(
- 'criteria'=>$criteria,
- 'sort'=>array(
- 'defaultOrder'=>array(
- 'data_limite'=>false
- ),
- 'attributes' => array(
- 'nserie' => array(
- 'asc' => 'nserie',
- 'desc' => 'nserie desc',
- ),
- '*',
- ),
- )
- ));
- }
- public function inspecoesUnidade($unidade)
- {
- $criteria=new CDbCriteria;
- $criteria->compare('id',$this->id,true);
- $criteria->compare('unidade_id',$unidade);
- $criteria->compare('data_limite',$this->data_limite,true);
- $criteria->compare('data_conclusao',$this->data_conclusao,true);
- $criteria->compare('contacto',$this->contacto,true);
- $criteria->compare('estado',$this->estado);
- return new CActiveDataProvider($this, array(
- 'criteria'=>$criteria,
- 'sort'=>array(
- 'defaultOrder'=>array(
- 'data_limite'=>true
- )
- )
- ));
- }
- public static function itemAlias($type,$code=NULL) {
- $_items = array(
- 'Estado' => array(
- self::ESTADO_EM_FALTA => 'Em falta',
- self::ESTADO_CONCLUIDO => 'Concluída',
- ),
- );
- if (isset($code))
- return isset($_items[$type][$code]) ? $_items[$type][$code] : false;
- else
- return isset($_items[$type]) ? $_items[$type] : false;
- }
- public function getCssClass()
- {
- $css='';
- if ($this->estado==self::ESTADO_CONCLUIDO)
- {
- $css='success';
- } else {
- $data_actual = strtotime(date("Y-m-d"));
- $data_limite = strtotime($this->data_limite);
- $delta = $data_actual-$data_limite;
- if ($delta>0)
- $css='error';
- if ($delta<=0)
- $css='warning';
- if ($delta<-2592000)
- $css='';
- }
- return $css;
- }
- public function existeRelatorio()
- {
- $existe=false;
- if ($this->relatorio)
- $existe=true;
- return $existe;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement