/**
  * @test
  */
 public function it_builds_a_valid_parseable_template()
 {
     $business = $this->createBusiness();
     $startAt = $business->pref('start_at', '09:00');
     $finishAt = $business->pref('finish_at', '18:00');
     $service = $this->createService(['business_id' => $business->id]);
     $template = $this->vacancyTemplateBuilder->getTemplate($business, $business->services()->first());
     $vacancyParser = new VacancyParser();
     $parsedStatements = $vacancyParser->parseStatements($template);
     $this->assertCount(6, $parsedStatements);
 }
 /**
  * send Business Report.
  *
  * @param Business $business
  *
  * @return void
  */
 protected function publishVacancies(Business $business)
 {
     $this->info(__METHOD__);
     $this->info("Publishing vacancies for businessId:{$business->id}");
     $publishedVacancies = $this->vacancyParser->parseStatements($this->recallStatements($business->id));
     if (!$this->autopublishVacancies($business)) {
         $this->info('Skipped autopublishing vacancies');
         return false;
     }
     if (!$this->concierge->business($business)->vacancies()->updateBatch($business, $publishedVacancies)) {
         return false;
     }
     //        $owner = $business->owners()->first();
     // Mail to User
     //        $header = [
     //            'email' => $owner->email,
     //            'name'  => $owner->name,
     //        ];
     //        $this->transmail->locale($business->locale)
     //                        ->template('appointments.manager._schedule')
     //                        ->subject('manager.business.report.subject', ['date' => date('Y-m-d'), 'business' => $business->name])
     //                        ->send($header, compact('business', 'appointments'));
     return true;
 }
 /**
  * Store vacancies from a command string.
  *
  * @param Business $business
  * @param Request  $request
  *
  * @return Illuminate\Http\Response
  */
 public function storeBatch(Business $business, Request $request, VacancyParser $vacancyParser)
 {
     logger()->info(__METHOD__);
     logger()->info(sprintf('businessId:%s', $business->id));
     $this->authorize('manageVacancies', $business);
     // BEGIN
     //////////////////
     // FOR REFACTOR //
     //////////////////
     $this->concierge->business($business);
     $statements = $request->input('vacancies');
     $unpublish = $request->input('unpublish');
     if ($unpublish) {
         $this->concierge->vacancies()->unpublish();
     }
     $publishedVacancies = $vacancyParser->parseStatements($statements);
     if (!$this->concierge->vacancies()->updateBatch($business, $publishedVacancies)) {
         logger()->warning('Nothing to update');
         flash()->warning(trans('manager.vacancies.msg.store.nothing_changed'));
         return redirect()->back();
     }
     if ($request->input('remember')) {
         $this->rememberStatements($business->id, $statements);
     }
     logger()->info('Vacancies updated');
     flash()->success(trans('manager.vacancies.msg.store.success'));
     return redirect()->route('manager.business.show', [$business]);
 }