<?php

class ClientesSincronizacoes extends GxActiveRecord
{
    public $DTSINCRONIZACAO_INICIO;
    public $DTSINCRONIZACAO_FIM;
    public $DTDESSINCRONIZACAO_INICIO;
    public $DTDESSINCRONIZACAO_FIM;

    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }

    public function tableName()
    {
        return 'clientes_sincronizacoes';
    }

    public function behaviors() {
        return array('datetimeI18NBehavior' => array('class' => 'ext.DateTimeI18NBehavior'));
    }

    public function rules()
    {
        return array(
            array('SIN_DE, SIN_PARA, SIN_DADOSCLIENTE, SIN_DATA, SIN_IDAUTOR, SIN_STATUS', 'required'),
            array('SIN_DE, SIN_PARA, SIN_IDAUTOR, SIN_IDAUTOR_DESSINCRONIZACAO', 'numerical', 'integerOnly' => true),
            array('SIN_REGISTROS_SINCRONIZADOS, SIN_DATA_DESSINCRONIZACAO, SIN_IDAUTOR_DESSINCRONIZACAO', 'default', 'setOnEmpty' => true, 'value' => null),
            array('SIN_IDAUTOR, SIN_STATUS, DTSINCRONIZACAO_INICIO, DTSINCRONIZACAO_FIM, DTDESSINCRONIZACAO_INICIO, DTDESSINCRONIZACAO_FIM', 'safe', 'on' => 'search'),
        );
    }

    public function relations()
    {
        return array(
            'ClienteExcluido'   => array(self::BELONGS_TO, 'Clientes', 'SIN_DE'),
            'ClienteMantido' => array(self::BELONGS_TO, 'Clientes', 'SIN_PARA'),
            'AutorSinc'   => array(self::BELONGS_TO, 'Funcionarios', 'SIN_IDAUTOR'),
            'AutorDesinc' => array(self::BELONGS_TO, 'Funcionarios', 'SIN_IDAUTOR_DESSINCRONIZACAO'),
        );
    }

    public function attributeLabels()
    {
        return array(
            'SIN_IDSINCRONIZACAO'       => 'Código',
            'SIN_DE'                    => 'Cliente excluído',
            'SIN_PARA'                  => 'Cliente mantido',
            'SIN_STATUS'                => 'Situação',
            'SIN_DATA'                  => 'Data',
            'SIN_IDAUTOR'               => 'Autor',
            'DTSINCRONIZACAO_INICIO'    => 'Data de Sincronização',
            'DTDESSINCRONIZACAO_INICIO' => 'Data de Dessincronização',
        );
    }

    public function search()
    {
        $criteria = new CDbCriteria;

        $criteria->compare('SIN_DE', $this->SIN_DE);
        $criteria->compare('SIN_PARA', $this->SIN_PARA);
        $criteria->compare('SIN_IDAUTOR', $this->SIN_IDAUTOR);
        $criteria->compare('SIN_STATUS', $this->SIN_STATUS);

        if (!empty(Util::formatDataMysql($this->DTSINCRONIZACAO_INICIO))) {
            $criteria->addCondition('SIN_DATA >= "'.Util::formatDataMysql($this->DTSINCRONIZACAO_INICIO).'"');
        }

        if (!empty(Util::formatDataMysql($this->DTSINCRONIZACAO_FIM))) {
            $criteria->addCondition('SIN_DATA <= "'.Util::formatDataMysql($this->DTSINCRONIZACAO_FIM).'"');
        }

        if (!empty(Util::formatDataMysql($this->DTDESSINCRONIZACAO_INICIO))) {
            $criteria->addCondition('SIN_DATA_DESSINCRONIZACAO >= "'.Util::formatDataMysql($this->DTDESSINCRONIZACAO_INICIO).'"');
        }

        if (!empty(Util::formatDataMysql($this->DTDESSINCRONIZACAO_FIM))) {
            $criteria->addCondition('SIN_DATA_DESSINCRONIZACAO <= "'.Util::formatDataMysql($this->DTDESSINCRONIZACAO_FIM).'"');
        }

        $permissoes_array = array(1,12,20);
        if (!in_array(User::getPrivilegio(), $permissoes_array)) {
            $criteria->addCondition('SIN_IDAUTOR = "'.User::getId().'"');
        }

        return new CActiveDataProvider($this, array(
                'criteria' => $criteria,
                'sort' => array(
                    'defaultOrder' => 'SIN_DATA DESC',
                ),
                'pagination' => array(
                    'pageSize'  => 20,
                )
            )
        );
    }
}