/**
  * This function pay for all jobs in working and date is expired.
  * This function is a cronjob. Only use for cron
  * Identificator job: 1
  */
 public function actionPayJobs()
 {
     $controlCronJobId = 1;
     //Find all jobs for to pay
     Yii::trace('[JOBS][actionPayJobs] Pay jobs finished before' . date("Y-m-d H:i:s"));
     $jobs_list = Jobs::model()->findAll('status = :status AND date <= :date', array(':status' => Jobs::STATUS_WORKING, 'date' => date("Y-m-d H:i:s")));
     Yii::trace('[JOBS][actionPayJobs] Pay jobs (' . count($jobs_list) . ')');
     if (count($jobs_list) > 0) {
         //Load cache of knights
         $app_rule_level = AppRulesLevel::model()->findAll(array('index' => 'level'));
         foreach ($jobs_list as $job) {
             //Update Knight
             $knight = Knights::model()->findByPk($job->knights_id);
             $knight->coins += $job->hours * $app_rule_level[$job->knight_level]->cache;
             //Check status of knight
             if (Inventory::checkIfPrimaryEquipmentIsCompleted($knight->id)) {
                 $knight->status = Knights::STATUS_ENABLE;
             } else {
                 $knight->status = Knights::STATUS_WITHOUT_EQUIPMENT;
             }
             if (!$knight->save()) {
                 Yii::trace('[JOBS][actionPayJobs] No se ha podido actualizar el caballero con sus rupias nuevas.');
             }
             //Update job
             $job->status = Jobs::STATUS_PAYED;
             if (!$job->save()) {
                 Yii::trace('[JOBS][actionPayJobs] No se ha podido actualizar el trabajo con el status "pagado".');
             }
             //Create event for knight
             $event = new KnightsEvents();
             $event->attributes = array('knights_id' => $job->knights_id, 'type' => KnightsEvents::TYPE_JOB, 'identificator' => $job->id);
             if (!$event->save()) {
                 Yii::trace('[JOBS][actionPayJobs] No se ha podido guardar un evento nuevo.', 'error');
             }
             //Update old event
             $lastEvent = KnightsEventsLast::getOldLastEvent($job->knights_id);
             $lastEvent->type = KnightsEvents::TYPE_JOB;
             $lastEvent->identificator = $job->id;
             $lastEvent->date = date('Y-m-d H:i:s');
             if (!$lastEvent->save()) {
                 Yii::trace('[JOBS][actionPayJobs] No se ha podido actualizar el último evento más viejo.', 'error');
             }
             //Update stats and  stats by day with coins earned.
             $knight_stats = KnightsStats::model()->findByPk($job->knights_id);
             if ($knight_stats) {
                 $knight_stats->money_total_earned += $job->hours * $app_rule_level[$job->knight_level]->cache;
                 if (!$knight_stats->save()) {
                     Yii::trace('[JOBS][actionPayJobs] No se han podido actualizar las estadisticas del caballero', 'error');
                 }
             } else {
                 Yii::trace('[JOBS][actionPayJobs] No hay stats del caballero', 'error');
             }
             $knight_stats_by_date = KnightsStatsByDate::model()->find('knights_id = :knights_id AND date = :date', array(':knights_id' => $job->knights_id, 'date' => substr($job->date, 0, 10)));
             if (!$knight_stats) {
                 $knight_stats_by_date = new KnightsStatsByDate();
                 $knight_stats_by_date->attributes = array('knights_id' => $job->knights_id, 'date' => substr($job->date, 0, 10));
             }
             $knight_stats_by->money_total_earned += $job->hours * $app_rule_level[$job->knight_level]->cache;
             if (!$knight_stats_by_date->save()) {
                 Yii::trace('[JOBS][actionPayJobs] No se han podido actualizar las estadisticas por día del caballero', 'error');
             }
         }
     }
 }