src/Controller/WidgetNotesController.php line 263

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use App\Entity\WidgetNotes;
  5. use App\Form\WidgetNotesType;
  6. use Psr\Log\LoggerInterface;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Symfony\Component\HttpFoundation\JsonResponse;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Session\Session;
  12. use Google_Client;
  13. use Google_Service_Calendar;
  14. use Symfony\Contracts\Translation\TranslatorInterface;
  15. class WidgetNotesController extends AbstractController
  16. {
  17.     private $translator;
  18.     protected $googleCalendar;
  19.     public function __construct(TranslatorInterface $translator)
  20.     {
  21. //        $redirect_uri='urn:ietf:wg:oauth:2.0:oob';
  22.         $redirect_uri 'https://' $_SERVER['HTTP_HOST']. '/calendar/token';
  23.         $googleCalendar = new Google_Client();
  24.         $googleCalendar->setApplicationName('Google Calendar API PHP Quickstart');
  25.         //campos a extraer de la base de datos User
  26.         $googleCalendar->setClientId('2790497987-57qc3vu4pr7vb0s8phpub2me58pe34lb.apps.googleusercontent.com');
  27.         $googleCalendar->setClientSecret('nj2C7unaTO68DRhyORsyipSj');
  28.         //fin campos user
  29. //        $api_key = "AIzaSyBR84cS1IU2BPvk5V3VnbqdkJESlv440Ac";
  30. //        $client->setDeveloperKey($api_key);
  31.         $googleCalendar->setRedirectUri($redirect_uri);
  32.         $googleCalendar->addScope(Google_Service_Calendar::CALENDAR);
  33.         $guzzleClient = new \GuzzleHttp\Client(array('curl' => array(CURLOPT_SSL_VERIFYPEER => false)));
  34.         $googleCalendar->setHttpClient($guzzleClient);
  35.         $this->googleCalendar $googleCalendar;
  36.         $this->translator $translator;
  37.     }
  38.   private function createWidgetNotesCreateForm(WidgetNotes $entity)
  39.   {
  40.       $form $this->createForm(WidgetNotesType::class, $entity, array(
  41.           'action' => $this->generateUrl('widget_notes_create'),
  42.           'method' => 'POST'
  43.       ));
  44.       return $form;
  45.   }
  46.   private function createWidgetNotesEditForm(WidgetNotes $entity$id)
  47.   {
  48.       $form $this->createForm(WidgetNotesType::class, $entity, array(
  49.           'action' => $this->generateUrl('widget_notes_update',
  50.             array(
  51.                 'id' => $id
  52.             )),
  53.           'method' => 'PUT'
  54.       ));
  55.       return $form;
  56.   }
  57.     /**
  58.      * @Route("/widget/notes/create/", name="widget_notes_create")
  59.      */
  60.     public function addNotesAction(Request $requestLoggerInterface $logger)
  61.     {
  62.       $em $this->getDoctrine()->getManager();
  63.       $notes $em->getRepository(WidgetNotes::class)->findAll();
  64.       $wnotes = new WidgetNotes();
  65.       $form $this->createWidgetNotesCreateForm($wnotes);
  66.       $form->handleRequest($request);
  67.         $forAgent $form->get('forAgent')->getData();
  68.         if(!is_null($forAgent)){
  69.             $wnotes->setForAgent($forAgent->getId());
  70.         }
  71.       if($form->isValid())
  72.       {
  73.           /* Obtengo usuario logueado */
  74.           $user_logueado $this->get('security.token_storage')->getToken()->getUser();
  75.           $user_id $user_logueado->getId();
  76.           $wnotes->setCreatedId($user_id);
  77.           $wnotes->setUpdatedId($user_id);
  78.           /* Gestión de eventos en Log */
  79.           $user_lastname $user_logueado->getLastname();
  80.           $user_name $user_logueado->getName();
  81.           $user_email $user_logueado->getEmail();
  82.           $user_rol $user_logueado->getRoles();
  83.           $event_url $request->getPathInfo();
  84.           $event_complete $user_name.' '.$user_lastname.' - '.$user_email.' - '.$user_rol[0].' | '.$event_url;
  85.           try{
  86.               $em->persist($wnotes);
  87.               $em->flush();
  88.               $event 'The Note has been created succesfully.';
  89.               $successMessage $this->translator->trans($event);
  90.               $this->addFlash('mensaje'$successMessage);
  91.               $logger->info($event_complete.' | '.$event);
  92.           } catch (\Exception $e){
  93.               $event 'An error occurred: '.$e->getMessage();
  94.               /* Para el log */
  95.               $logger->error($event_complete.' | '.$event);
  96.               /* Para el usuario */
  97.               $errorMessage $this->translator->trans($event);
  98.               $this->addFlash('mensajeerror'$errorMessage);
  99.           }
  100.           /* Fin Gestión de eventos en Log */
  101.       }else{
  102.           $errorMessage $this->translator->trans('Error, some fields are empty');
  103.           $this->addFlash('mensajeerror'$errorMessage);
  104.       }
  105.     return $this->redirectToRoute('homepage');
  106.     }
  107.     /**
  108.      * @Route("/widget/notes/edit/{id}", name="widget_notes_edit")
  109.      */
  110.     public function editNoteAction($id)
  111.     {
  112.         $em $this->getDoctrine()->getManager();
  113.         $note $em->getRepository(WidgetNotes::class)->findOneById($id);
  114.         $user $em->getRepository(User::class)->findOneById($note->getForAgent());
  115.         $note->setForAgent($user);
  116.         $form $this->createWidgetNotesEditForm($note$id);
  117.         return $this->render('home/note-edit.html.twig',
  118.             array(
  119.                 'form' => $form->createView()
  120.             )
  121.         );
  122.     }
  123.     /**
  124.      * @Route("/widget/notes/update/{id}", name="widget_notes_update", methods={"POST"})
  125.      */
  126.     public function updateNotesAction($idRequest $requestLoggerInterface $logger)
  127.     {
  128.       $em $this->getDoctrine()->getManager();
  129.       $note $em->getRepository(WidgetNotes::class)->findOneById($id);
  130.       $form $this->createWidgetNotesEditForm($note$id);
  131.       $form->handleRequest($request);
  132.         $forAgent $form->get('forAgent')->getData();
  133.         if(!is_null($forAgent)){
  134.             $note->setForAgent($forAgent->getId());
  135.         }
  136.       if($form->isValid())
  137.       {
  138.           /* Obtengo usuario logueado */
  139.           $user_logueado $this->get('security.token_storage')->getToken()->getUser();
  140.           $user_id $user_logueado->getId();
  141.           $note->setUpdatedId($user_id);
  142.           /* Gestión de eventos en Log */
  143.           $user_lastname $user_logueado->getLastname();
  144.           $user_name $user_logueado->getName();
  145.           $user_email $user_logueado->getEmail();
  146.           $user_rol $user_logueado->getRoles();
  147.           $event_url $request->getPathInfo();
  148.           $event_complete $user_name.' '.$user_lastname.' - '.$user_email.' - '.$user_rol[0].' | '.$event_url;
  149.           try{
  150.               $em->persist($note);
  151.               $em->flush();
  152.               $event 'The Note has been updated succesfully.';
  153.               $successMessage $this->translator->trans($event);
  154.               $this->addFlash('mensaje'$successMessage);
  155.               $logger->info($event_complete.' | '.$event);
  156.           } catch (\Exception $e){
  157.               $event 'An error occurred: '.$e->getMessage();
  158.               /* Para el log */
  159.               $logger->error($event_complete.' | '.$event);
  160.               /* Para el usuario */
  161.               $errorMessage $this->translator->trans($event);
  162.               $this->addFlash('mensajeerror'$errorMessage);
  163.           }
  164.           /* Fin Gestión de eventos en Log */
  165.       }else{
  166.           $errorMessage $this->translator->trans('Error, some fields are empty');
  167.           $this->addFlash('mensajeerror'$errorMessage);
  168.       }
  169.       return $this->redirectToRoute('homepage');
  170.     }
  171.     /**
  172.      * @Route("widget/notes/delete/{id}", name="Widget_notes_delete")
  173.      *
  174.      */
  175.     public function deleteNotesAction($idRequest $request)
  176.     {
  177.         $em $this->getDoctrine()->getManager();
  178.         $var $em->getRepository(WidgetNotes::class);
  179.         $delete $var->findOneById($id);
  180.         $em->remove($delete);
  181.         $em->flush();
  182.         /*$response = array(
  183.             'title' => $this->translator->trans("Perfect"),
  184.             'msg' => $this->translator->trans('The remider was removed successfully'),
  185.         );*/
  186.         $this->addFlash('mensaje',$this->translator->trans("The remider was removed successfully"));
  187.         return $this->redirectToRoute('homepage');
  188.     }
  189.       /**
  190.        * @Route("/widget/notes/events", name="get_widget_notes_select")
  191.        */
  192.       public function widgetNotesSelectAction(Request $request) {
  193.           $session = new Session();
  194.           $token=$session->get('tokenGoogleCalendar');
  195.           if (!is_null($token)) {
  196.               $this->googleCalendar->setAccessToken($token);
  197.               $connectGoogle "1";
  198.           }else{
  199.               $connectGoogle "0";
  200.           }
  201.           $em $this->getDoctrine()->getManager();
  202.           $user_logueado $this->get('security.token_storage')->getToken()->getUser();
  203.           $user_id $user_logueado->getId();
  204.           $wnotesprivate $em->getRepository(WidgetNotes::class)->findBy(
  205.             array('createdId' => $user_id'audience' => '0'),
  206.             array('dateAt' => 'ASC')
  207.           );
  208.           $wnotesprivateasig $em->getRepository(WidgetNotes::class)->findBy(
  209.             array('forAgent' => $user_id),
  210.             array('dateAt' => 'ASC')
  211.           );
  212.           $wnotespublic $em->getRepository(WidgetNotes::class)->findBy(
  213.             array('audience' => '1'),
  214.             array('dateAt' => 'ASC')
  215.           );
  216.           $datos = array();
  217.           $datosprivate = array();
  218.           $datosprivateasig = array();
  219.           $datospublic = array();
  220.           if (!empty($wnotesprivate)){
  221.               foreach($wnotesprivate as $wnotespr){
  222.                   if ($connectGoogle == 1){
  223.                       $egcuno '<a href="/calendar/addEvent/wn/'.$wnotespr->getId().'" class="text-white"><i class="icon-google-plus2"></i></a>';
  224.                   }else{
  225.                       $egcuno '';
  226.                   }
  227.                   $tooltip $wnotespr->getTitle()."<br>".$wnotespr->getMessage()."<br><br>";
  228.                   $datosprivate[] = array(
  229.                       "id" => $wnotespr->getId(),
  230.                       "title" => $egcuno.' <a href="/widget/notes/delete/'.$wnotespr->getId().'" class="sweet_warning text-white pull-right"><i class="icon-trash"></i></a>'.$wnotespr->getTitle(),
  231.                       "tooltip" => $tooltip,
  232.                       "date" => $wnotespr->getdateAt(),
  233.                       "color" => '#FAA200',
  234.                       "url" => "/widget/notes/edit/".$wnotespr->getId()
  235.                   );
  236.               }
  237.           }
  238.           if (!empty($wnotesprivateasig ) ){
  239.               foreach($wnotesprivateasig as $wnotespras){
  240.                   if ($connectGoogle == 1){
  241.                       $egcdos '<a href="/calendar/addEvent/wn/'.$wnotespras->getId().'" class="text-white"><i class="icon-google-plus2"></i></a>';
  242.                   }else{
  243.                       $egcdos '';
  244.                   }
  245.                   $tooltip $wnotespras->getTitle()."<br>".$wnotespras->getMessage()."<br><br>";
  246.                   $datosprivateasig[] = array(
  247.                       "id" => $wnotespras->getId(),
  248.                       "title" => $egcdos." Assignment: ".$wnotespras->getTitle(),
  249.                       "tooltip" => $tooltip,
  250.                       "date" => $wnotespras->getdateAt(),
  251.                       "color" => '#FAA200',
  252.                       "url" => "#"
  253.                   );
  254.               }
  255.           }
  256.           if (!empty($wnotespublic)){
  257.               foreach($wnotespublic as $wnotespu){
  258.                   if ($wnotespu->getCreatedId() == $user_id){
  259.                       $deleted '<a href="/widget/notes/delete/'.$wnotespu->getId().'" class="sweet_warning text-white pull-right"><i class="icon-trash"></i></a>';
  260.                   }else{
  261.                       $deleted '';
  262.                   }
  263.                   if ($connectGoogle == 1){
  264.                       $egctres '<a href="/calendar/addEvent/wn/'.$wnotespu->getId().'" class="text-white"><i class="icon-google-plus2"></i></a> ';
  265.                   }else{
  266.                       $egctres '';
  267.                   }
  268.                   $tooltip $wnotespu->getTitle()."<br>".$wnotespu->getMessage()."<br><br>";
  269.                   $datospublic[] = array(
  270.                       "id" => $wnotespu->getId(),
  271.                       "title" => $egctres.$deleted.$wnotespu->getTitle(),
  272.                       "tooltip" => $tooltip,
  273.                       "date" => $wnotespu->getdateAt(),
  274.                       "color" => '#F7D358',
  275.                       "url" => "#"
  276.                   );
  277.               }
  278.           }
  279.           $datos array_merge($datosprivate$datosprivateasig$datospublic);
  280.           $return = array(
  281.               'notes' => $datos,
  282.           );
  283.           $response = new JsonResponse($return);
  284.           return $response;
  285.       }
  286. }