<?php
require_once('modules/gea_Callcenter/gea_Callcenter.php');

class gea_Callcenter2 extends gea_Callcenter {
    public $_request;
    function gea_Callcenter2() {
        parent::gea_Callcenter();
    }
    
    function create_new_list_query($order_by, $where,$filter=array(),$params=array(), 
                                   $show_deleted = 0,$join_type='', $return_array = false, 
                                   $parentbean=null, $singleSelect = false){
        
        $dateWhereClause = '';
        $low_secs = ' 00:00:00';
        $high_secs = ' 23:59:59';
        
       // echo '<pre>'.print_r($_REQUEST,true).'</pre>';
        if(isset($_REQUEST['start_proxima_llamada_c_basic_hours'])){
            $low_secs = ' '.$_REQUEST['start_proxima_llamada_c_basic_hours'].':'.
                            $_REQUEST['start_proxima_llamada_c_basic_minutes'].':00';
            $high_secs = ' '.$_REQUEST['end_proxima_llamada_c_basic_hours'].':'.
                            $_REQUEST['end_proxima_llamada_c_basic_minutes'].':00';
        }
        if(!empty($_REQUEST['start_range_proxima_llamada_c_basic']) && !empty($_REQUEST['end_range_proxima_llamada_c_basic'])){
            if(!empty($_REQUEST['start_range_proxima_llamada_c_basic'])){
                $from_date = trim($_REQUEST['start_range_proxima_llamada_c_basic']);
                $mysql_from = $this->get_date_format($from_date). $low_secs;
                $fromClause = " gea_callcenter_cstm.proxima_llamada_c >= '$mysql_from' "; 
            }

            if(!empty($_REQUEST['end_range_proxima_llamada_c_basic'])){
                $to_date = trim($_REQUEST['end_range_proxima_llamada_c_basic']);
                $mysql_to = $this->get_date_format($to_date). $high_secs;
                $toClause = " gea_callcenter_cstm.proxima_llamada_c <= '$mysql_to' "; 
            }            
            if($fromClause && $toClause){
                $and = 'AND';
            }
            
            $dateWhereClause = " AND ( $fromClause $and $toClause ) ";                
        }
        // validacion por estado de contacto //
        if(isset($_REQUEST['estado_contacto_basic']) && $_REQUEST['estado_contacto_basic'][0]!=''){
            // contactos nuevos //
            if($_REQUEST['estado_contacto_basic'][0]=='CONTACT_NEW'){
                $dateWhereClause .= " AND
                                    (
                                        SELECT
                                            COUNT(*)
                                        FROM
                                            contacts_gea_observaciones_respuestas_1_c con_obs
                                        WHERE
                                            con_obs.contacts_gea_observaciones_respuestas_1contacts_ida = gea_callcenter_cstm.contact_id_c
                                    ) = 0
                                ";
            }
            // contactos viejos sin gestion //
            if($_REQUEST['estado_contacto_basic'][0]=='CONTACT_DATE_BEFORE'){
                $dateWhereClause .= " AND
                                    (
                                        SELECT
                                            COUNT(*)
                                        FROM
                                            contacts_gea_observaciones_respuestas_1_c con_obs
                                        WHERE
                                            con_obs.contacts_gea_observaciones_respuestas_1contacts_ida = gea_callcenter_cstm.contact_id_c AND
                                            gea_callcenter_cstm.proxima_llamada_c >= '".@date('Y-m-d H:i:s')."'
                                    ) > 0
                                  ";
            }
            // contactos viejos con gestion //
            if($_REQUEST['estado_contacto_basic'][0]=='CONTAC_DATE_AFTER'){
                $dateWhereClause .= " AND
                                    (
                                        SELECT
                                            COUNT(*)
                                        FROM
                                            contacts_gea_observaciones_respuestas_1_c con_obs
                                        WHERE
                                            con_obs.contacts_gea_observaciones_respuestas_1contacts_ida = gea_callcenter_cstm.contact_id_c AND
                                            gea_callcenter_cstm.proxima_llamada_c < '".@date('Y-m-d H:i:s')."'
                                    ) > 0
                                    ";
            }
        }
        //echo $dateWhereClause; exit;

        $ret_array = parent::create_new_list_query($order_by, $where, $filter, $params, $show_deleted, $join_type, true, $parentbean, $singleSelect);

        //to make these custom fields pre-populatable, they had to go in searchdefs. But that automatically
        //puts them in the query as sugar wants. But we want to use these fields as we wish. So remove what sugar adds.
        $ret_array['where'] = preg_replace('/AND \( gea_callcenter_cstm\.proxima_llamada_c[^)]+\)/', '', $ret_array['where']);
        $ret_array['where'] = preg_replace('/AND \( ge_callcenter_cstm\.proxima_llamada_c[^)]+\)/', '', $ret_array['where']);

        $ret_array['where'] .= $dateWhereClause;
        if ( !$return_array ){
            return  $ret_array['select'] . $ret_array['from'] . $ret_array['where']. $ret_array['order_by'];
        }
        //echo '<pre>'.print_r($ret_array,true).'</pre>';exit;
        return $ret_array;
    }
    // ** //
    private function get_date_format($fecha){
        $anio = substr($fecha,6);
        $mes = substr($fecha,0,2);
        $dia = substr($fecha,3,2);
        return $anio.'-'.$mes.'-'.$dia;
    }
    
    /***/
    public function get_opciones_agenda_llamada($order_by, $where,$filter=array(),$params=array(), 
                                   $show_deleted = 0,$join_type='', $return_array = false, 
                                   $parentbean=null, $singleSelect = false){
        try{
            echo json_encode(
                        array(
                            'rows'=>$GLOBALS['app_list_strings']['Respuestas']
                        )
                    );
		
        }catch(Exception $e){
            throw new Exception ('Error: '.$e->getMessage());
        }
    }
    /***/
    public function get_update_opciones_respuesta($order_by, $where,$filter=array(),$params=array(), 
                                   $show_deleted = 0,$join_type='', $return_array = false, 
                                   $parentbean=null, $singleSelect = false){
        try{
            $db = DBManagerFactory::getInstance();
            // verificamo si es programar llamada //
            ///if($this->_request['selOpciones_respuesta']=='PROGRAMAR_LLAMADA'){
                // actualizamos la fecha de proxima llamada //
				$prox_call = $this->get_date_format($this->_request['txtFechaProxima_respuesta']).' '.
                             $this->_request['selHoraProxima_respuesta'].':'.
                             $this->_request['selMinutosProxima_respuesta'].':00';
                
				$sql = "
                         UPDATE gea_callcenter_cstm
                         SET
                            proxima_llamada_c = '".$prox_call."',
                            estado_gestion_c = '".$this->_request['hdngestion_callcenter']."',
                            descripcion_c = '".$this->_request['tarObservacionesRespuesta']."'
                         WHERE
                            id_c = '".$this->_request['hdnrecord']."'
                       ";
				// die($sql);
                $resp = $db->query($sql);
            //}
            
            // insertamos la observaciones //
            $id_obs = create_guid();
            $sql = "
                    INSERT INTO
                        gea_observaciones_respuestas(
                           id,
                           date_entered,
                           created_by,
                           description
                        )
                        VALUES(
                            '".$id_obs."',
                            '".@date('Y-m-d H:i:s')."',
                            '".$_SESSION['authenticated_user_id']."',
                            '".$this->_request['tarObservacionesRespuesta']."'
                        )
                ";
            $resp = $db->query($sql);
            // insertamos la observaciones //
            $sql = "
                    INSERT INTO
                        gea_observaciones_respuestas_cstm(
                           id_c,
                           respuesta_c,
                           se_hablo_con_c
                        )
                        VALUES(
                            '".$id_obs."',
                            '".$this->_request['selOpciones_respuesta']."',
                            '".$this->_request['txtSeHabloCon']."'
                        )
                ";
            $resp = $db->query($sql);
            
            /************************************************************/
            /************************************************************/
            // insertamos la relacion contacts - observacion //
            $sql = "
                    INSERT INTO
                        contacts_gea_observaciones_respuestas_1_c(
                           id,
                           date_modified,
                           contacts_gea_observaciones_respuestas_1contacts_ida,
                           contacts_g32e0puestas_idb
                        )
                        VALUES(
                            '".create_guid()."',
                            '".@date('Y-m-d H:i:s')."',
                            '".$this->_request['hdnrecord_contact']."',
                            '".$id_obs."'
                        )
                ";
            $resp = $db->query($sql);
            
            echo json_encode(array('msj'=>'Proceso terminado correctamente','error'=>false));
        }catch(Exception $e){
            echo json_encode(array('msj'=>'Error','error'=>true));
            throw new Exception ('Error: '.$e->getMessage());
        }
    }
}
?>