use Twig\Extra\Markdown\DefaultMarkdown;
-use Rapsys\AirBundle\Entity\Session;
+use Rapsys\AirBundle\Command;
use Rapsys\AirBundle\Entity\GoogleCalendar;
use Rapsys\AirBundle\Entity\GoogleToken;
+use Rapsys\AirBundle\Entity\Session;
use Rapsys\PackBundle\Util\SluggerUtil;
class Calendar2Command extends Command {
- /**
- * Set default name
- */
- protected static $defaultName = 'rapsysair:calendar2';
-
- /**
- * Set default description
- */
- protected static $defaultDescription = 'Synchronize sessions in users\' calendar';
-
/**
* Set google client scopes
*/
/**
* {@inheritdoc}
- *
- * @param string $project The google project
- * @param string $client The google client
- * @param string $secret The google secret
*/
- public function __construct(ManagerRegistry $doctrine, RouterInterface $router, SluggerUtil $slugger, TranslatorInterface $translator, string $locale, string $project, string $client, string $secret) {
+ public function __construct(ManagerRegistry $doctrine, string $locale, RouterInterface $router, SluggerUtil $slugger, TranslatorInterface $translator) {
//Call parent constructor
- parent::__construct($doctrine, $router, $slugger, $translator, $locale);
+ parent::__construct($doctrine, $locale, $router, $slugger, $translator);
//Set google client
$this->client = new Client(
[
- 'application_name' => $project,
- 'client_id' => $client,
- 'client_secret' => $secret,
- 'redirect_uri' => $this->router->generate('rapsys_air_google_callback', [], UrlGeneratorInterface::ABSOLUTE_URL),
+ 'application_name' => $_ENV['RAPSYSAIR_GOOGLE_PROJECT'],
+ 'client_id' => $_ENV['RAPSYSAIR_GOOGLE_CLIENT'],
+ 'client_secret' => $_ENV['RAPSYSAIR_GOOGLE_SECRET'],
+ 'redirect_uri' => $this->router->generate('rapsysair_google_callback', [], UrlGeneratorInterface::ABSOLUTE_URL),
'scopes' => $this->scopes,
'access_type' => 'offline',
#'login_hint' => $user->getMail(),
$this->markdown = new DefaultMarkdown;
}
+ /**
+ * Configure attribute command
+ */
+ protected function configure() {
+ //Configure the class
+ $this
+ //Set name
+ ->setName('rapsysair:calendar2')
+ //Set description shown with bin/console list
+ ->setDescription('Synchronize sessions in users\' calendar')
+ //Set description shown with bin/console --help airlibre:attribute
+ ->setHelp('This command synchronize sessions in users\' google calendar');
+ }
+
/**
* Process the attribution
*/
- protected function execute(InputInterface $input, OutputInterface $output) {
+ protected function execute(InputInterface $input, OutputInterface $output): int {
//Iterate on google tokens
foreach($tokens = $this->doctrine->getRepository(GoogleToken::class)->findAllIndexed() as $tid => $token) {
//Iterate on google calendars
//TODO: load all calendar events here ?
//Iterate on sessions to update
- foreach($sessions = $this->doctrine->getRepository(Session::class)->findAllByUserIdSynchronized($token['uid'], $calendar['synchronized'])) {
+ foreach($sessions = $this->doctrine->getRepository(Session::class)->findAllByUserIdSynchronized($token['uid'], $calendar['synchronized']) as $session) {
//TODO: insert/update/delete events here ?
}