Exemplo n.º 1
0
 public function setUp()
 {
     parent::setUp();
     Config::set('termId', 1);
     IncomeEvent::truncate();
     Event::truncate();
     Terminal::truncate();
     Rule::truncate();
     ResultSignal::truncate();
     Signal::truncate();
     Terminal::create(array('name' => 'test', 'url' => 'http://test', 'queue' => 'queueTest', 'key' => 'key'));
     Event::create(array('terminal_id' => 1, 'name' => 'Хочу есть', 'event_sid' => 'im_hungry'));
     Signal::create(array('terminal_id' => 1, 'name' => 'Иди кушай', 'signal_sid' => 'go_eat'));
     Signal::create(array('terminal_id' => 1, 'name' => 'Жди', 'signal_sid' => 'wait'));
     Signal::create(array('terminal_id' => 1, 'name' => 'Терпи до дома', 'signal_sid' => 'endure'));
     Rule::create(array('terminal_id' => 1, 'name' => 'Иди кушай', 'event_id' => 1, 'rule' => 'time >= 13.00 AND time <= 14.00 AND have_money === true', 'signal_id' => 1, 'flag_active' => true));
     Rule::create(array('terminal_id' => 1, 'name' => 'Жди', 'event_id' => 1, 'rule' => 'time < 13.00', 'signal_id' => 2, 'flag_active' => true));
     Rule::create(array('terminal_id' => 1, 'name' => 'Терпи до дома', 'event_id' => 1, 'rule' => 'time > 14.00', 'signal_id' => 3, 'flag_active' => true));
 }
Exemplo n.º 2
0
 /**
  * @param $data
  *
  * @return Rule[]
  */
 public function CalcFitRules($data)
 {
     $eventData = json_decode($data['data'], true);
     if (json_last_error() != JSON_ERROR_NONE) {
         return ['error' => 'JSON error'];
     }
     //Записываем событие в базу
     $this->incomeEvent = new IncomeEvent();
     $this->incomeEvent->newIncomeEvent($data['term'], $data['event'], $eventData);
     //Если не находим событие - отдаём ошибку
     $event = Event::getEvent($data['term'], $data['event']);
     if ($event == null) {
         Log::info('Правило ' . $data['event'] . ' не найдено');
         return ['error' => 'Unknown event'];
     }
     //Получаем все правила теминала по событию
     $rules = Rule::getRules($data['term'], $event->id);
     $countRules = count($rules);
     Log::info("Всего найдено правил: {$countRules}");
     //Определяем соответсвующие запросу правила
     $rulesHandler = new RulesHandler();
     $fitRules = $rulesHandler->getFitRules($rules, $eventData);
     return $fitRules;
 }
Exemplo n.º 3
0
 /**
  * Получить все правила по номеру терминала и событию
  *
  * @param integer $term
  * @param string  $eventId
  *
  * @return array
  */
 public static function getRules($term, $eventId)
 {
     return Rule::whereTerminalId($term)->whereEventId($eventId)->whereFlagActive(true)->get()->all();
 }
Exemplo n.º 4
0
 public function postAddDataRule()
 {
     $signal_id = Input::only('signal_id');
     $sid = $signal_id['signal_id'];
     $input = Input::only('event_id', 'rule', 'name');
     $input['terminal_id'] = $this->getTerminalId();
     $errors = Rules::add($input);
     $data['terminal_id'] = $input['terminal_id'];
     foreach ($sid as $key => $value) {
         $data['signal_id'] = $value;
         $error = Rules::checkSignals($data);
         if ($error != null) {
             $errors['errors']['signal_id'][$key] = $error;
         }
     }
     if ($errors) {
         return $errors;
     }
     //Изменяем данные
     $message = 'Данные изменены';
     foreach ($sid as $value) {
         $input['signal_id'] = $value;
         $rule = new Rule();
         $rule->name = $input['name'];
         $rule->rule = $input['rule'];
         $rule->event_id = $input['event_id'];
         $rule->signal_id = $input['signal_id'];
         $rule->terminal_id = $input['terminal_id'];
         $rule->flag_active = 1;
         $rule->save();
     }
     return array('message' => $message);
 }