Пример #1
0
 public function enqueueAt($at, Job $job)
 {
     if ($job instanceof ContainerAwareJob) {
         $job->setKernelOptions($this->kernelOptions);
     }
     $this->attachRetryStrategy($job);
     \ResqueScheduler::enqueueAt($at, $job->queue, \get_class($job), $job->args);
     return null;
 }
 public function put($name, array $arguments = [], array $options = [])
 {
     $queue = isset($options['queue']) ? $options['queue'] : $this->defaultQueue;
     $resqueArguments = ['name' => $name, 'arguments' => $arguments, 'kernel_options' => $this->kernelOptions];
     $trackJobStatus = isset($options['track_status']) ? $options['track_status'] : $this->trackStatus;
     $id = null;
     if (isset($options['time'])) {
         $when = $options['time'];
     } elseif (isset($options['delay'])) {
         $when = time() + $options['delay'];
     } else {
         $when = null;
     }
     if (!$this->debug) {
         if ($when) {
             \ResqueScheduler::enqueueAt($when, $queue, \Mcfedr\ResqueQueueDriverBundle\Resque\Job::class, $resqueArguments, $trackJobStatus);
         } else {
             $id = \Resque::enqueue($queue, \Mcfedr\ResqueQueueDriverBundle\Resque\Job::class, $resqueArguments, $trackJobStatus);
         }
     }
     return new ResqueJob($resqueArguments, $id, $when, $queue, \Mcfedr\ResqueQueueDriverBundle\Resque\Job::class, $trackJobStatus);
 }
 public function tearDown()
 {
     $current_datetime = date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s')));
     $id_notificacion = $this->args['id'];
     $this->db->sql('SELECT * FROM notificaciones WHERE id="' . $id_notificacion . '" AND tipo = 0');
     $results = $this->db->getResult();
     if (!empty($results[0])) {
         $data = json_decode($results[0]['data']);
         $fecha_creacion_notificacion = $results[0]['fecha_creacion'];
         $fecha_oportunidad = $this->args['fecha_oportunidad'];
         $fecha_ejecucion = $this->args['tiempo_ejecucion'];
         $tiempo = Subordinados1::get_recurrencia($fecha_creacion_notificacion, $fecha_ejecucion);
         $condicion = split(" ", $tiempo);
         echo 'poner notificaciones en redis' . PHP_EOL;
         switch ($data->tipo) {
             case 'nueva_oportunidad':
                 if ($condicion[0] >= 24 && ($condicion[1] == 'dias' || $condicion[1] == 'minutos' || $condicion[1] == 'horas')) {
                     $current_datetime = date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s ') . '24 hour'));
                     $this->args['tiempo_ejecucion'] = $current_datetime;
                     $datetime = new DateTime($current_datetime, new DateTimeZone('America/Panama'));
                     ResqueScheduler::enqueueAt($datetime, 'notificacion' . time(), 'Notificaciones', $this->args);
                 }
                 break;
             case 'oportunidad_actualizar_etapa':
                 if ($condicion[0] > 40 && ($condicion[1] == 'dias' || $condicion[1] == 'minutos' || $condicion[1] == 'horas')) {
                     $current_datetime = date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s ') . '5 day'));
                     $this->args['tiempo_ejecucion'] = $current_datetime;
                     $datetime = new DateTime($current_datetime, new DateTimeZone('America/Panama'));
                     ResqueScheduler::enqueueAt($datetime, 'notificacion' . time(), 'Notificaciones', $this->args);
                 }
                 break;
         }
     }
     Resque_Event::listen('afterPerform', function () {
         echo "Se ejecuto la tarea Notificaciones {$this->args}['id'] " . date('Y-m-d H:i:s') . PHP_EOL;
     });
     Resque_Event::listen('onFailure', function () {
         echo "Algo paso :-| ....";
     });
 }
Пример #4
0
 protected function enqueueFromConfig($config)
 {
     if (isset($config['cron'])) {
         //ResqueScheduler::removeDelayed($config['args']['queue'], $config['class'], $config['args']);
         $this->logger->log(Psr\Log\LogLevel::NOTICE, 'queueing {class} in {queue} Scheduled {schedule_at}', array('class' => $config['class'], 'queue' => $config['args']['queue'], 'schedule_at' => $config['schedule_at']));
         ResqueScheduler::enqueueAt($config['schedule_at'], $config['args']['queue'], $config['class'], $config['args']);
     } else {
         $this->logger->log(Psr\Log\LogLevel::INFO, 'queueing {class} in {queue} [delayed]', array('class' => $config['class'], 'queue' => $config['queue']));
         Resque_Event::trigger('beforeDelayedEnqueue', array('queue' => $config['queue'], 'class' => $config['class'], 'args' => $config['args']));
         $payload = array_merge(array($config['queue'], $config['class']), $config['args']);
         call_user_func_array('Resque::enqueue', $payload);
     }
 }
Пример #5
0
 /**
  * Create a new scheduled job and save it to the specified queue.
  *
  * @param timestamp $at UNIX timestamp when job should be executed.
  * @param string $queue The name of the queue to place the job in.
  * @param string $class The name of the class that contains the code to execute the job.
  * @param array $args Any optional arguments that should be passed when the job is executed.
  *
  * @return string
  */
 public function enqueueJobAt($at, $queue, $class, $args = array())
 {
     return ResqueScheduler::enqueueAt($at, $queue, $class, $args);
 }
 /**
  * Guardar Formulario de Cliente Juridico
  *
  * @return boolean
  */
 function guardar_actividad()
 {
     if (Util::is_array_empty($_POST)) {
         return false;
     }
     //Init Fieldset variable
     $fieldset = array();
     //Remover el boton de submit que por default
     //viene con el valor "Guardar"
     unset($_POST["campo"]["guardar"]);
     $modulo_relacionado_con = $this->seleccionar_modulos_relacionado_con(array('valor' => $_POST['campo']['modulo_relacion']));
     if (!isset($_POST["campo"]["uuid_cliente"])) {
         $uuid_cliente = $this->seleccionar_cliente_de_oportunidad($_POST["campo"]["uuid_oportunidad"]);
         //$uuid_cliente= $uuid_cliente[0]['uuid_cliente'];
         $fieldset["uuid_cliente"] = $uuid_cliente[0]['uuid_cliente'];
     }
     unset($_POST["campo"]["modulo_relacion"]);
     //Recorrer arreglo e insertar los valores que no estan vacios
     //en el fieldset
     foreach ($_POST["campo"] as $fieldname => $fieldvalue) {
         if (empty($fieldvalue)) {
             continue;
         }
         //check if is an array
         if (is_array($fieldvalue)) {
             foreach ($fieldvalue as $name => $value) {
                 if ($value != "") {
                     if (strpos($name, 'uuid_') !== false) {
                         $fieldset["{$name} = UNHEX('{$value}')"] = NULL;
                     } else {
                         $fieldset[$name] = $this->security->xss_clean($value);
                     }
                 }
             }
         } else {
             if (strpos($fieldname, 'uuid_') !== false) {
                 $this->db->set($fieldname, "UNHEX('{$fieldvalue}')", FALSE);
             } else {
                 $fieldset[$fieldname] = $fieldvalue;
             }
         }
     }
     if (isset($_POST['campo']['completada'])) {
         if ($_POST['campo']['completada'] != 0 || $_POST['campo']['completada'] == "") {
             $fieldset["completada"] = 1;
         } else {
             $fieldset["completada"] = 0;
         }
     } else {
         $fieldset["completada"] = 0;
     }
     //Si el $fieldset es vacio
     if (Util::is_array_empty($fieldset)) {
         return false;
     }
     //
     // Begin Transaction
     // docs: https://ellislab.com/codeigniter/user-guide/database/transactions.html
     //
     $this->db->trans_start();
     $fieldset["creado_por"] = $this->session->userdata('id_usuario');
     $fieldset["fecha_creacion"] = date('Y-m-d H-i-s');
     $fieldset["relacionado_con"] = $modulo_relacionado_con[0]['id_cat'];
     $fieldset["fecha"] = date('Y-m-d H:i:s', strtotime($fieldset["fecha"]));
     //Campos adicionales
     $this->db->set('uuid_actividad', 'ORDER_UUID(uuid())', FALSE);
     //Guardar Actividad
     $this->db->insert('act_actividades', $fieldset);
     $idActividad = $this->db->insert_id();
     //---------------------------------------
     //End Transaction
     $this->db->trans_complete();
     $uuid_oportunidad = $_POST['campo']['uuid_oportunidad'];
     $uuid_tipo = $this->db->query("SELECT HEX(uuid_tipo_actividad) AS uuid_tipo,etiqueta FROM act_tipo_actividades WHERE etiqueta LIKE '%telefonica%'")->row_array();
     $tipo_actividad = $_POST['campo']['uuid_tipo_actividad'];
     $oportunidades = $this->db->query("select count(uuid_oportunidad) as oportunidades from act_actividades where HEX(uuid_oportunidad) ='" . $uuid_oportunidad . "'")->row_array();
     if ($this->is_redis_as_runnig && $oportunidades['oportunidades'] == 1 && $uuid_tipo['uuid_tipo'] != $tipo_actividad) {
         //armar datos
         $uuid_asignado = $_POST["campo"]["uuid_asignado"];
         $creado_por = CRM_Controller::$uuid_usuario;
         $datosOportunidad = $this->db->query("Select id_oportunidad, nombre from opp_oportunidades where HEX(uuid_oportunidad) = '" . $uuid_oportunidad . "' ")->row_array();
         $datos_notificaciones = array();
         $data_notificacion = array('id_oportunidad' => $datosOportunidad['id_oportunidad'], 'nombre' => $datosOportunidad['nombre'], 'tipo' => 'tiene_oportunidad');
         $datos_notificaciones['data'] = json_encode($data_notificacion);
         $notificacion = Notificaciones::guardar_notificaciones($datos_notificaciones, $uuid_asignado, $creado_por);
         $args = array('id' => $notificacion['id']);
         $schedules = Jobs::mostrar_jobs(array('id_job' => 3));
         $fecha_tarea = date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s ') . $schedule['recurrencia']));
         $datetime = new DateTime($fecha_tarea, new DateTimeZone('America/Panama'));
         if (!empty($schedules)) {
             foreach ($schedules as $schedule) {
                 $schedule_usuarios = json_decode($schedule['uuid_usuarios']);
                 $args = array_merge($args, array('id_job_conf' => $schedule['id'], 'oportunidad_id' => $datosOportunidad['id_oportunidad'], 'tiempo_ejecucion' => $fecha_tarea, 'recurrencia' => $schedule['recurrencia']));
                 if (in_array($uuid_asignado, $schedule_usuarios->uuid_usuarios)) {
                     ResqueScheduler::enqueueAt($datetime, 'notificacion', 'Notificaciones', $args);
                 } else {
                     ResqueScheduler::enqueueAt($datetime, 'notificacion', 'Notificaciones', $args);
                 }
             }
         }
     }
     if ($this->is_redis_as_runnig && $oportunidades['oportunidades'] >= 5) {
         $oportunidades = $this->db->query("select HEX(uuid_tipo_actividad) as uuid_tipo_actividad from act_actividades where HEX(uuid_oportunidad) ='" . $uuid_oportunidad . "' LIMIT 5")->result_array();
         $tipo = $this->db->query("SELECT HEX(uuid_tipo_actividad) AS uuid_tipo FROM act_tipo_actividades WHERE  etiqueta LIKE '%reunion%' OR etiqueta LIKE '%visita%'")->result_array();
         $array5_opotunidad = array();
         $array_tipo = array();
         foreach ($oportunidades as $actividades) {
             array_push($array5_opotunidad, $actividades['uuid_tipo_actividad']);
         }
         foreach ($tipo as $actividades) {
             array_push($array_tipo, $actividades['uuid_tipo']);
         }
         $array_conciden = array_intersect($array5_opotunidad, $array_tipo);
         if (count($array_conciden) == 0) {
             //armar datos
             $uuid_asignado = $_POST["campo"]["uuid_asignado"];
             $creado_por = CRM_Controller::$uuid_usuario;
             $datosOportunidad = $this->db->query("Select id_oportunidad, nombre from opp_oportunidades where HEX(uuid_oportunidad) = '" . $uuid_oportunidad . "' ")->row_array();
             $datos_notificaciones = array();
             $data_notificacion = array('id_oportunidad' => $datosOportunidad['id_oportunidad'], 'nombre' => $datosOportunidad['nombre'], 'tipo' => 'tiene_actividad');
             $datos_notificaciones['data'] = json_encode($data_notificacion);
             $notificacion = Notificaciones::guardar_notificaciones($datos_notificaciones, $uuid_asignado, $creado_por);
             $args = array('id' => $notificacion['id']);
             $schedules = Jobs::mostrar_jobs(array('id_job' => 7));
             $fecha_tarea = date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s ') . $schedule['recurrencia']));
             $datetime = new DateTime($fecha_tarea, new DateTimeZone('America/Panama'));
             if (!empty($schedules)) {
                 foreach ($schedules as $schedule) {
                     $schedule_usuarios = json_decode($schedule['uuid_usuarios']);
                     $args = array_merge($args, array('id_job_conf' => $schedule['id'], 'oportunidad_id' => $datosOportunidad['id_oportunidad'], 'tiempo_ejecucion' => $fecha_tarea, 'recurrencia' => $schedule['recurrencia']));
                     if (in_array($uuid_asignado, $schedule_usuarios->uuid_usuarios)) {
                         ResqueScheduler::enqueueAt($datetime, 'notificacion', 'Notificaciones', $args);
                     } else {
                         ResqueScheduler::enqueueAt($datetime, 'notificacion', 'Notificaciones', $args);
                     }
                 }
             }
         }
     }
     // Managing Errors
     if ($this->db->trans_status() === FALSE) {
         log_message("error", "MODULO: Actividades --> No se pudo guadar los datos de la actividad en DB.");
         return false;
     } else {
         /* Notifications::guardar_notificacion(
         			array(
         					"tipo_notificacion"=>'actualizacion',
         					"modulo"=>$_POST['campo']['relacionado_con'],
         					"id"=>$_POST['campo']['uuid_relacion'],
          			));*/
         //guardar el id en variable de session
         $this->session->set_userdata('uuid_actividad', $idActividad);
         return true;
     }
 }
 /**
  * Actualizar Etapa de Oportunidad
  *
  * @param string $id_cliente
  * @return boolean
  */
 function ajax_actualizar_oportunidad($id_oportunidad = NULL)
 {
     $id_oportunidad = $this->input->post('id_oportunidad', true);
     $id_etapa = $this->input->post('id_etapa', true);
     //Si el $fieldset es vacio
     if (empty($id_oportunidad) || empty($id_etapa)) {
         return false;
     }
     //
     // Begin Transaction
     // docs: https://ellislab.com/codeigniter/user-guide/database/transactions.html
     //
     $this->db->trans_start();
     $fieldset = array("id_etapa_venta" => $id_etapa);
     $clause = array("uuid_oportunidad = UNHEX('{$id_oportunidad}')" => NULL);
     //Actualizar Cliente Potencial
     $this->db->where($clause)->update('opp_oportunidades', $fieldset);
     //-----------------
     // Verificar si la etapa fue actualiza a Vendido
     //-----------------
     $fields = array("ocat.valor AS etapa_venta", "HEX(opp.uuid_propiedad) AS uuid_propiedad");
     $clause = array("opp.uuid_oportunidad = UNHEX('{$id_oportunidad}')" => NULL);
     $checkEtapa = $this->db->select($fields)->distinct()->from('opp_oportunidades AS opp')->join('opp_oportunidades_cat AS ocat', 'ocat.id_cat = opp.id_etapa_venta', 'LEFT')->where($clause)->get()->result_array();
     //-----------------
     // Obtener los Estados de las Propiedades
     //-----------------
     $listaEstadosPropiedades = $this->db->select("id_cat AS id_estado_propiedad")->distinct()->from('rpo_propiedades_cat')->where("valor", "no_disponible")->get()->result_array();
     //verificar si la etapa fue actualiza a Vendido
     //si es vendido, cambiar la propiedad a No Disponible.
     if (!empty($checkEtapa) && !empty($checkEtapa[0]["etapa_venta"]) && $checkEtapa[0]["etapa_venta"] == "vendido") {
         //Actualizar Propiedad
         $fieldset = array("id_estado_propiedad" => $listaEstadosPropiedades[0]["id_estado_propiedad"]);
         $clause = array("uuid_propiedad = UNHEX('" . $checkEtapa[0]["uuid_propiedad"] . "')" => NULL);
         $this->db->where($clause)->update('rpo_propiedades', $fieldset);
     }
     //---------------------------------------
     //End Transaction
     $this->db->trans_complete();
     //redis
     if ($this->is_redis_as_runnig && ($checkEtapa[0]["etapa_venta"] != "vendido" && $checkEtapa[0]["etapa_venta"] != "venta_perdida")) {
         //verifica si el redis esta corriendo
         //armar datos
         $creado_por = CRM_Controller::$uuid_usuario;
         $datosOportunidad = $this->db->query("Select id_oportunidad, nombre, fecha_creacion,HEX(id_asignado) as id_asignado from opp_oportunidades where HEX(uuid_oportunidad) = '" . $id_oportunidad . "' ")->row_array();
         $datos_notificaciones = array();
         $data_notificacion = array('id_oportunidad' => $datosOportunidad['id_oportunidad'], 'nombre' => $datosOportunidad['nombre'], 'tipo' => 'oportunidad_actualizar_etapa', 'etapa' => $checkEtapa[0]["etapa_venta"]);
         $datos_notificaciones['data'] = json_encode($data_notificacion);
         $uuid_asignado = $datosOportunidad['id_asignado'];
         $notificacion = Notificaciones::guardar_notificaciones($datos_notificaciones, $uuid_asignado, $creado_por);
         $args = array('id' => $notificacion['id']);
         //$this->redis->publish('oportunidad',json_encode(array('id_asignado' =>$uuid_asignado, 'id_notificacion' => $notificacion['id'] )));
         $schedules = Jobs::mostrar_jobs(array('id_job' => 2));
         if (!empty($schedules)) {
             foreach ($schedules as $schedule) {
                 $fecha_tarea = date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s ') . $schedule['recurrencia']));
                 $datetime = new DateTime($fecha_tarea, new DateTimeZone('America/Panama'));
                 $args = array_merge($args, array('id_job_conf' => $schedule['id'], 'oportunidad_id' => $datosOportunidad['id_oportunidad'], 'fecha_oportunidad' => $datosOportunidad['fecha_creacion'], 'tiempo_ejecucion' => $fecha_tarea, 'recurrencia' => $schedule['recurrencia']));
                 $schedule_usuarios = json_decode($schedule['uuid_usuarios']);
                 if (in_array($uuid_asignado, $schedule_usuarios->uuid_usuarios)) {
                     ResqueScheduler::enqueueAt($datetime, 'notificacion' . time(), 'Notificaciones', $args);
                 } else {
                     ResqueScheduler::enqueueAt($datetime, 'notificacion' . time(), 'Notificaciones', $args);
                 }
             }
         }
     }
     // Managing Errors
     if ($this->db->trans_status() === FALSE) {
         log_message("error", "MODULO: Oportunidades --> No se pudo actualizar la etapa de la oportunidad en DB.");
         return array("respuesta" => false, "mensaje" => "Hubo un error al tratar de actualizar la etapa de la oportunidad.");
     } else {
         //Limpiar cache
         @CRM_Controller::$cache->delete("infoOportunidad");
         @CRM_Controller::$cache->delete("listado_oportunidades");
         return array("respuesta" => true, "mensaje" => "Se ha cambiado la etapa de la oportunidad satisfactoriamente.");
     }
 }
Пример #8
0
 /**
  * Put a new job on a queue
  *
  * @param string $name The service name of the worker that implements {@link \Mcfedr\ResqueBundle\Worker\WorkerInterface}
  * @param array $options Options to pass to execute - must be json serializable
  * @param string $queue Optional queue name, otherwise the default queue will be used
  * @param \DateTime $when Optionally set a time in the future when this task should happen
  * @param boolean $trackStatus Set to true to be able to monitor the status of a job
  * @return JobDescription
  */
 public function put($name, array $options = null, $queue = null, \DateTime $when = null, $trackStatus = false)
 {
     if ($this->debug) {
         return;
     }
     if (!$queue) {
         $queue = $this->defaultQueue;
     }
     $args = array_merge(['name' => $name, 'options' => $options], $this->kernelOptions);
     $trackJobStatus = $trackStatus || $this->trackStatus;
     if ($when) {
         \ResqueScheduler::enqueueAt($when, $queue, Job::class, $args, $trackJobStatus);
         return new JobDescription($when, $queue, Job::class, $args, $trackJobStatus);
     } else {
         $id = \Resque::enqueue($queue, Job::class, $args, $trackJobStatus);
         return new JobDescription(null, $queue, Job::class, $args, $trackJobStatus, $id);
     }
 }
Пример #9
0
 /**
  * Create a new scheduled job and save it to the specified queue.
  *
  * @param timestamp $at UNIX timestamp when job should be executed.
  * @param string $queue The name of the queue to place the job in.
  * @param string $class The name of the class that contains the code to execute the job.
  * @param array $args Any optional arguments that should be passed when the job is executed.
  * @param bool $track_status Enable track status
  * 
  * @return string
  */
 public function enqueueJobAt($at, $queue, $class, $args = array(), $track_status = false)
 {
     return ResqueScheduler::enqueueAt($at, $queue, $class, $args, $track_status);
 }