Advertisement
Guest User

Untitled

a guest
Nov 12th, 2016
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.10 KB | None | 0 0
  1. <?php
  2.  
  3. namespace AppBundle\Controller;
  4.  
  5. use AppBundle\Entity\PayCards;
  6. use AppBundle\Entity\Users;
  7. use AppBundle\Model\User\AccountData;
  8. use AppBundle\Model\User\ChangeUserData;
  9. use AppBundle\Model\User\PayCardNumbers;
  10. use AppBundle\Model\User\PersonalData;
  11. use AppBundle\Utils\Password;
  12. use FOS\RestBundle\Controller\FOSRestController;
  13. use FOS\RestBundle\View\View;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use FOS\RestBundle\Controller\Annotations as Api;
  16. use Nelmio\ApiDocBundle\Annotation\ApiDoc;
  17. use Symfony\Component\Validator\ConstraintViolationListInterface;
  18. use AppBundle\Model\Authentication\AuthToken;
  19.  
  20. /**
  21.  * @Api\Prefix("/user")
  22.  */
  23. class UserController extends FOSRestController
  24. {
  25.     /**
  26.      * @ApiDoc(
  27.      *     statusCodes={
  28.      *         200="Returned when successful",
  29.      *     },
  30.      *  resource=true,
  31.      *  description="Zwraca dane konta użytkownika",
  32.      *  output = "AppBundle\Model\User\AccountData"
  33.      * )
  34.      *
  35.      * @Api\Get("/accountData")
  36.      */
  37.     public function getAccountDataAction(Request $request)
  38.     {
  39.         $user = $this->get('app.token')->getUserFromHeaders($request->headers);
  40.  
  41.         $authData = new AccountData();
  42.         $authData->setEmail($user->getEmail());
  43.         $authData->setPin($user->getPin());
  44.         $authData->setLogin($user->getLogin());
  45.  
  46.         return View::create($authData, 200);
  47.     }
  48.  
  49.     /**
  50.      * @ApiDoc(
  51.      *     statusCodes={
  52.      *         200="Returned when successful",
  53.      *     },
  54.      *  resource=true,
  55.      *  description="Zwraca personalne dane użytkownika",
  56.      *  output = "AppBundle\Model\User\PersonalData"
  57.      * )
  58.      *
  59.      * @Api\Get("/personalData")
  60.      */
  61.     public function getPersonalDataAction(Request $request)
  62.     {
  63.         $em = $this->getDoctrine()->getManager();
  64.         $user = $this->get('app.token')->getUserFromHeaders($request->headers);
  65.         $payCards = $em->getRepository('AppBundle:PayCards')->findByUser($user);
  66.  
  67.         $cardArrayString = array();
  68.         foreach ($payCards as $card) {
  69.             $cardArrayString[] = $card->getNumber();
  70.         }
  71.         $payCards = new PayCardNumbers();
  72.         $payCards->setCardNumbers($cardArrayString);
  73.  
  74.         $personalData = new PersonalData();
  75.         $personalData->setFirstName($user->getFirstName());
  76.         $personalData->setLastName($user->getLastName());
  77.         $personalData->setCardNumbers($payCards);
  78.  
  79.         return View::create($personalData, 200);
  80.     }
  81.  
  82.     /**
  83.      * @ApiDoc(
  84.      *     statusCodes={
  85.      *         200="Returned when successful",
  86.      *         400={
  87.      *           "Returned when an error in validating request",
  88.      *           "Returned when old password is wrong"
  89.      *         },
  90.      *         403="Returned when given username is not unique"
  91.      *     },
  92.      *  resource=true,
  93.      *  description="Zmienia dane użytkownika",
  94.      *  input = "AppBundle\Model\User\ChangeUserData"
  95.      * )
  96.      *
  97.      * @Api\Post("/changeUserData")
  98.      */
  99.     public function postChangeUserDataAction(Request $request, ChangeUserData $accountDataToChange, ConstraintViolationListInterface $validationErrors)
  100.     {
  101.         if (count($validationErrors) > 0) {
  102.             return View::create($validationErrors, 400);
  103.         }
  104.         $em = $this->getDoctrine()->getManager();
  105.         $user = $this->get('app.token')->getUserFromHeaders($request->headers);
  106.  
  107.         if ($accountDataToChange->getEmail() !== null) {
  108.             $user->setEmail($accountDataToChange->getEmail());
  109.         }
  110.  
  111.         if ($accountDataToChange->getFirstName() !== null) {
  112.             $user->setFirstName($accountDataToChange->getFirstName());
  113.         }
  114.  
  115.         if ($accountDataToChange->getLastName() !== null) {
  116.             $user->setLastName($accountDataToChange->getLastName());
  117.         }
  118.  
  119.         if ($accountDataToChange->getLogin() !== null) {
  120.             if ($em->getRepository('AppBundle:Users')->findOneByLogin($accountDataToChange->getLogin()) !== null) {
  121.                 return View::create(ResponseFormat::create("login", "given username already exists"), 403);
  122.             }
  123.             $user->setLogin($accountDataToChange->getLogin());
  124.         }
  125.  
  126.         if ($accountDataToChange->getPin() !== null) {
  127.             $user->setPin($accountDataToChange->getPin());
  128.         }
  129.  
  130.         if ($accountDataToChange->getPassword() !== null) {
  131.             if (Password::getSecureHash($user->getSalt(), $accountDataToChange->getOldPassword()) !== $user->getPassword()) {
  132.                 return View::create(ResponseFormat::create("oldPassword", "old password is wrong"), 400);
  133.             }
  134.             $user->setPassword(Password::getSecureHash($user->getSalt(), $accountDataToChange->getPassword()));
  135.         }
  136.  
  137.         $em->flush();
  138.     }
  139.  
  140.     /**
  141.      * @ApiDoc(
  142.      *     statusCodes={
  143.      *         200="Returned when successful",
  144.      *         400={
  145.      *           "Returned when an error in validating request"
  146.      *         }
  147.      *     },
  148.      *  resource=true,
  149.      *  description="Zwraca personalne dane użytkownika",
  150.      *  input = "AppBundle\Model\User\PayCardNumbers"
  151.      * )
  152.      *
  153.      * @Api\Post("/changePayCards")
  154.      */
  155.     public function postChangePayCardsAction(Request $request, PayCardNumbers $cardNumbers, ConstraintViolationListInterface $validationErrors)
  156.     {
  157.         if (count($validationErrors) > 0) {
  158.             return View::create($validationErrors, 400);
  159.         }
  160.         $em = $this->getDoctrine()->getManager();
  161.         $user = $this->get('app.token')->getUserFromHeaders($request->headers);
  162.         $this->deleteArrayOfEntities($em->getRepository('AppBundle:PayCards')->findByUser($user), $em);
  163.  
  164.         foreach ($cardNumbers->getCardNumbers() as $cardNumber) {
  165.             $payCard = new PayCards();
  166.             $payCard->setUser($user);
  167.             $payCard->setNumber($cardNumber);
  168.  
  169.             $em->persist($payCard);
  170.         }
  171.  
  172.         $em->flush();
  173.     }
  174.  
  175.     private function deleteArrayOfEntities($array, $em)
  176.     {
  177.         foreach ($array as $entity) {
  178.             $em->remove($entity);
  179.         }
  180.     }
  181.  
  182. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement