/** * Ajax function for subscribing on a date */ public function subscribeCroissantAction() { $request = $this->getRequest(); if ($request->isXmlHttpRequest()) { $response = new Response(); $dayOfSubscription = DateTime::createFromFormat("dmY", $request->request->get('date')); $dayOfSubscription->setTime(0, 0); $roleSubscription = $request->request->get('role'); $username = $request->request->get('username'); $em = $this->getDoctrine()->getManager(); $repositoryFS = $em->getRepository('STXCroissantsBundle:Friday_Subscriptions'); $friday_subscriber = $repositoryFS->findOneBy(array('date' => $dayOfSubscription)); /** * If the subscriptions doesn't exist or the main subscriber is empty, * then add the user as subscriber * */ if (is_null($friday_subscriber)) { $userManager = $this->get('fos_user.user_manager'); $user = new User(); $user = $userManager->findUserBy(array('username' => $username)); if (strcmp($this->getUser()->getUsername(), $user->getUsername()) == 0) { $newSubscription = new Friday_Subscriptions(); $newSubscription->setDate($dayOfSubscription); if ($roleSubscription == 1) { $newSubscription->setUser($user); } else { $newSubscription->setBackupUser($user); } $em->persist($newSubscription); $em->flush(); $output = array('success' => TRUE, 'message' => 'Subscription complete!', 'user' => $user->getUsername()); } else { $output = array('success' => FALSE, 'message' => 'The subscriber must be the same as the user logged in!'); } } elseif ($roleSubscription == 1 and is_null($friday_subscriber->getUser()) or $roleSubscription == 0 and is_null($friday_subscriber->getBackupUser())) { $userManager = $this->get('fos_user.user_manager'); $user = new User(); $user = $userManager->findUserBy(array('username' => $username)); if (strcmp($this->getUser()->getUsername(), $user->getUsername()) == 0) { if ($roleSubscription == 1) { $friday_subscriber->setUser($user); } else { $friday_subscriber->setBackupUser($user); } $em->persist($friday_subscriber); $em->flush(); $output = array('success' => TRUE, 'message' => 'Subscription complete!', 'user' => $user->getUsername()); } else { $output = array('success' => FALSE, 'message' => 'The subscriber must be the same as the user logged in!'); } } else { $output = array('success' => FALSE, 'message' => 'A user is already subscribed!'); } $response->headers->set('Content-Type', 'application/json'); $response->setContent(json_encode($output)); return $response; } $output = array('success' => FALSE, 'message' => 'isXmlHttpRequest FAILED!'); $response = new Response(); $response->headers->set('Content-Type', 'application/json'); $response->setContent(json_encode($output)); return $response; }