Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class CallcenterApi extends CApplicationComponent {
- public function getDb(){
- return Yii::app()->db;
- }
- public function createLlamada($cedula, $campana_id, $lista_id){
- $inst = new Llamada();
- $inst->campana_id = $campana_id;
- $inst->lista_id = $lista_id;
- $inst->identidad = $cedula;
- $inst->estatus = Llamada::ESTATUS_LLAMANDO;
- $inst->fechahora_inicia = time();
- return $inst;
- }
- public function closeLlamada($llamada_id, $estatus, $fechahora_nueva_llamada){
- $inst = Llamada::model()->findByPk($llamada_id);
- if($inst == null)
- throw new Exception("id llamada invalido");
- $tr = $this->getDb()->beginTransaction();
- $inst->fechahora_cierra=time();
- $inst->estatus = $estatus;
- $tipo_de_pago = ""; // usado para crear un pago, en caso de.
- // casos especificos segun estado
- if($estatus == Llamada::ESTATUS_PAGA_POR_OFICINA){
- $tipo_de_pago = "oficina";
- }elseif($estatus == Llamada::ESTATUS_PAGA_POR_CALLCENTER){
- $tipo_de_pago = "callcenter";
- }elseif($estatus == Llamada::ESTATUS_PAGA_CON_DEPOSITO){
- $tipo_de_pago = "deposito";
- }elseif($estatus == Llamada::ESTATUS_PAGA_CON_TRANSFERENCIA){
- $tipo_de_pago = "transferencia";
- }elseif($estatus == Llamada::ESTATUS_ENVIAR_COBRADOR){
- $ivisita = new VisitaDeCobranza();
- $ivisita->llamada_origen = $inst->id;
- $ivisita->fechahora_creado = time();
- $ivisita->identidad = $inst->identidad;
- $ivisita->campana_id = $inst->campana_id;
- $ivisita->cobrador_id = $data['cobrador_id'];
- if(!$visita->insert()){
- Yii::log(__METHOD__.", error al crear una VisitaDeCobranza"
- ."llamada:\n".CJSON::encode($inst)
- ."\ndata:\n".json_encode($data),"error");
- $tr->rollback();
- return false;
- }
- }else{
- // los otros estados no requieren acciones especiales:
- // "llamar luego", "colgado", "equivocado", "prueba"
- }
- // debe crear un pago,
- if($tipo_de_pago != ""){
- $ipago = new Pago();
- $ipago->llamada_origen = $inst->id;
- $ipago->fechahora_creado = time();
- $ipago->identidad = $inst->identidad;
- $ipago->campana_id = $inst->campana_id;
- $ipago->tipo = $tipo_de_pago;
- $ipago->setAttributes($data);
- if(!$ipago->insert()){
- Yii::log(__METHOD__.", error al crear pago"
- ."llamada:\n".CJSON::encode($inst)
- ."\ndata:\n".json_encode($data),"error");
- $tr->rollback();
- return false;
- }
- }
- // caso comun: todos podrian derivar en una nueva llamada programada
- // segun decision del operador o del negocio
- if($fechahora_nueva_llamada != null){
- // hay que crear un nuevo objeto de llamada para una fecha hora
- $llamadaprog = new Llamada();
- $llamadaprog->campana_id = $inst->campana_id;
- $llamadaprog->lista_id = $inst->lista_id;
- $llamadaprog->identidad = $inst->identidad;
- $llamadaprog->llamada_origen = $inst->id;
- $llamadaprog->estatus = Llamada::ESTATUS_PROGRAMADA;
- $llamadaprog->fechahora_programada =
- strtotime($fechahora_nueva_llamada);
- if(!$llamadaprog->insert()){
- Yii::log(__METHOD__.", error al crear llamada programada\n"
- ."llamada:\n".CJSON::encode($inst)
- ."\ndata:\n".json_encode($data),"error");
- $tr->rollback();
- return false;
- }
- }
- if(!$inst->save()){
- Yii::log(__METHOD__.", error al guardar llamada\n"
- ."llamada:\n".CJSON::encode($inst)
- ."\ndata:\n".json_encode($data),"error");
- $tr->rollback();
- return false;
- }else{
- // happy-day
- $tr->commit();
- return true;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement