Advertisement
christiansalazarh

callcenter core api

Aug 30th, 2013
138
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. class CallcenterApi extends CApplicationComponent {
  3.     public function getDb(){
  4.         return Yii::app()->db;
  5.     }
  6.     public function createLlamada($cedula, $campana_id, $lista_id){
  7.         $inst = new Llamada();
  8.         $inst->campana_id = $campana_id;
  9.         $inst->lista_id = $lista_id;
  10.         $inst->identidad = $cedula;
  11.         $inst->estatus = Llamada::ESTATUS_LLAMANDO;
  12.         $inst->fechahora_inicia = time();
  13.         return $inst;
  14.     }  
  15.     public function closeLlamada($llamada_id, $estatus, $fechahora_nueva_llamada){
  16.         $inst = Llamada::model()->findByPk($llamada_id);
  17.         if($inst == null)
  18.             throw new Exception("id llamada invalido");
  19.         $tr = $this->getDb()->beginTransaction();
  20.         $inst->fechahora_cierra=time();
  21.         $inst->estatus = $estatus;
  22.         $tipo_de_pago = ""; // usado para crear un pago, en caso de.
  23.         // casos especificos segun estado
  24.         if($estatus == Llamada::ESTATUS_PAGA_POR_OFICINA){
  25.             $tipo_de_pago = "oficina";
  26.         }elseif($estatus == Llamada::ESTATUS_PAGA_POR_CALLCENTER){
  27.             $tipo_de_pago = "callcenter";
  28.         }elseif($estatus == Llamada::ESTATUS_PAGA_CON_DEPOSITO){
  29.             $tipo_de_pago = "deposito";
  30.         }elseif($estatus == Llamada::ESTATUS_PAGA_CON_TRANSFERENCIA){
  31.             $tipo_de_pago = "transferencia";       
  32.         }elseif($estatus == Llamada::ESTATUS_ENVIAR_COBRADOR){
  33.             $ivisita = new VisitaDeCobranza();
  34.             $ivisita->llamada_origen = $inst->id;
  35.             $ivisita->fechahora_creado = time();
  36.             $ivisita->identidad = $inst->identidad;
  37.             $ivisita->campana_id = $inst->campana_id;
  38.             $ivisita->cobrador_id = $data['cobrador_id'];
  39.             if(!$visita->insert()){
  40.                 Yii::log(__METHOD__.", error al crear una VisitaDeCobranza"
  41.                     ."llamada:\n".CJSON::encode($inst)
  42.                     ."\ndata:\n".json_encode($data),"error");
  43.                 $tr->rollback();
  44.                 return false;
  45.             }
  46.         }else{
  47.             // los otros estados no requieren acciones especiales:
  48.             //  "llamar luego", "colgado", "equivocado", "prueba"
  49.         }
  50.         // debe crear un pago,
  51.         if($tipo_de_pago != ""){
  52.             $ipago = new Pago();
  53.             $ipago->llamada_origen = $inst->id;
  54.             $ipago->fechahora_creado = time();
  55.             $ipago->identidad = $inst->identidad;
  56.             $ipago->campana_id = $inst->campana_id;
  57.             $ipago->tipo = $tipo_de_pago;
  58.             $ipago->setAttributes($data);
  59.             if(!$ipago->insert()){
  60.                 Yii::log(__METHOD__.", error al crear pago"
  61.                     ."llamada:\n".CJSON::encode($inst)
  62.                     ."\ndata:\n".json_encode($data),"error");
  63.                 $tr->rollback();
  64.                 return false;
  65.             }
  66.         }
  67.         // caso comun: todos podrian derivar en una nueva llamada programada
  68.         // segun decision del operador o del negocio
  69.         if($fechahora_nueva_llamada != null){
  70.             // hay que crear un nuevo objeto de llamada para una fecha hora
  71.             $llamadaprog = new Llamada();
  72.             $llamadaprog->campana_id = $inst->campana_id;
  73.             $llamadaprog->lista_id = $inst->lista_id;
  74.             $llamadaprog->identidad = $inst->identidad;
  75.             $llamadaprog->llamada_origen = $inst->id;
  76.             $llamadaprog->estatus = Llamada::ESTATUS_PROGRAMADA;
  77.             $llamadaprog->fechahora_programada =
  78.                 strtotime($fechahora_nueva_llamada);
  79.             if(!$llamadaprog->insert()){
  80.                 Yii::log(__METHOD__.", error al crear llamada programada\n"
  81.                     ."llamada:\n".CJSON::encode($inst)
  82.                     ."\ndata:\n".json_encode($data),"error");
  83.                 $tr->rollback();
  84.                 return false;
  85.             }
  86.         }
  87.         if(!$inst->save()){
  88.             Yii::log(__METHOD__.", error al guardar llamada\n"
  89.                 ."llamada:\n".CJSON::encode($inst)
  90.                 ."\ndata:\n".json_encode($data),"error");
  91.             $tr->rollback();
  92.             return false;                                                  
  93.         }else{
  94.             // happy-day
  95.             $tr->commit();
  96.             return true;
  97.         }
  98.     }
  99. }
Advertisement
RAW Paste Data Copied
Advertisement