Пример #1
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $licence = $input->getArgument('licence');
     $center = $input->getArgument('center');
     $filterDate = $input->getOption('filter');
     $mail = $input->getOption('mail');
     $client = new Client();
     $crawler = $client->request('GET', 'https://driverpracticaltest.direct.gov.uk/application');
     $output->writeln('Step 1');
     $form = $crawler->selectButton('testTypeCar')->form();
     $crawler = $client->submit($form);
     $output->writeln('Step 2');
     $form = $crawler->selectButton('drivingLicenceSubmit')->form();
     $form->setValues(['driverLicenceNumber' => $licence, 'extendedTest' => 'false', 'specialNeeds' => 'false']);
     $crawler = $client->submit($form);
     $output->writeln('Step 3');
     $form = $crawler->selectButton('testCentreSubmit')->form();
     $form->setValues(['testCentreName' => $center]);
     $crawler = $client->submit($form);
     $output->writeln('Step 4');
     $link = $crawler->filter('.test-centre-results > li > a')->first()->link();
     $crawler = $client->click($link);
     $output->writeln('Step 5');
     $button = $crawler->selectButton('drivingLicenceSubmit');
     if ($button->count() == 0) {
         $output->writeln('Captcha!');
         //TODO: display captcha image and ask to solve? Use decaptcha?
         return;
     }
     $form = $button->form();
     $date = (new \DateTime())->format('d/m/y');
     $form->setValues(['preferredTestDate' => $date]);
     $crawler = $client->submit($form);
     $output->writeln('Step 6');
     $slots = $crawler->filter('.slotDateTime');
     $dates = $slots->each(function ($node, $i) use($output) {
         return $node->text();
     });
     if ($filterDate) {
         $filter = new DateFilter();
         $dates = $filter->filterDates($dates, $filterDate);
     }
     foreach ($dates as $date) {
         $output->writeln($date);
     }
     if (count($dates) && $mail) {
         $mailer = new DateMailer();
         $mailer->mail($mail, $dates);
     }
 }
 static function match($token)
 {
     global $config;
     self::$matched = false;
     if (parent::_find_match($token, $config['date_tok_rgx']) === true) {
         self::$operator = self::$matched_tokens[1];
         self::$date = self::$matched_tokens[2];
         self::$matched_token = self::$matched_tokens[0];
         self::$matched = true;
     }
     return self::$matched;
 }
 public function revenue_detail($hotelId, $acctCat)
 {
     if (!$this->securitypolicy->validateAccessRight(1, 'read')) {
         $this->_redirectInvalidAccess();
     }
     $hotel = new Hotel();
     $acctCat = urldecode($acctCat);
     # check date filters in session
     if ($this->session->has_userdata('revFilter')) {
         $dateFilterVal = $this->session->userdata('revFilter');
         if (array_key_exists('start-date', $dateFilterVal)) {
             $sDateFilter = new DateFilter();
             $sDateFilter->setFilter(array('type' => 'start', 'value' => $dateFilterVal['start-date'][0]));
             $hotel->addRevenueFilter($sDateFilter);
         }
         if (array_key_exists('end-date', $dateFilterVal)) {
             $eDateFilter = new DateFilter();
             $eDateFilter->setFilter(array('type' => 'end', 'value' => $dateFilterVal['end-date'][0]));
             $hotel->addRevenueFilter($eDateFilter);
         }
     }
     $hotel->setById($hotelId);
     $this->_viewData['hotel'] = $hotel;
     $financeAccts = new FinanceAccts();
     $financeAccts->setAll();
     if (!is_numeric($acctCat)) {
         $this->_viewData['revenuedata'] = $this->_getCompositeRevenueData($hotel, $acctCat);
     } else {
         $this->_viewData['revenuedata'] = $hotel->finances->getRevenueGroup($acctCat);
         $acctCat = $financeAccts->getName($acctCat);
     }
     $this->_viewData['financeAccts'] = $financeAccts;
     $this->_viewData['title'] = $acctCat;
     $this->load->view('revenue_list_detail', $this->_viewData);
 }