Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace AppBundle\Controller;
- use AppBundle\Entity\PayCards;
- use AppBundle\Entity\Users;
- use AppBundle\Model\User\AccountData;
- use AppBundle\Model\User\ChangeUserData;
- use AppBundle\Model\User\PayCardNumbers;
- use AppBundle\Model\User\PersonalData;
- use AppBundle\Utils\Password;
- use FOS\RestBundle\Controller\FOSRestController;
- use FOS\RestBundle\View\View;
- use Symfony\Component\HttpFoundation\Request;
- use FOS\RestBundle\Controller\Annotations as Api;
- use Nelmio\ApiDocBundle\Annotation\ApiDoc;
- use Symfony\Component\Validator\ConstraintViolationListInterface;
- use AppBundle\Model\Authentication\AuthToken;
- /**
- * @Api\Prefix("/user")
- */
- class UserController extends FOSRestController
- {
- /**
- * @ApiDoc(
- * statusCodes={
- * 200="Returned when successful",
- * },
- * resource=true,
- * description="Zwraca dane konta użytkownika",
- * output = "AppBundle\Model\User\AccountData"
- * )
- *
- * @Api\Get("/accountData")
- */
- public function getAccountDataAction(Request $request)
- {
- $user = $this->get('app.token')->getUserFromHeaders($request->headers);
- $authData = new AccountData();
- $authData->setEmail($user->getEmail());
- $authData->setPin($user->getPin());
- $authData->setLogin($user->getLogin());
- return View::create($authData, 200);
- }
- /**
- * @ApiDoc(
- * statusCodes={
- * 200="Returned when successful",
- * },
- * resource=true,
- * description="Zwraca personalne dane użytkownika",
- * output = "AppBundle\Model\User\PersonalData"
- * )
- *
- * @Api\Get("/personalData")
- */
- public function getPersonalDataAction(Request $request)
- {
- $em = $this->getDoctrine()->getManager();
- $user = $this->get('app.token')->getUserFromHeaders($request->headers);
- $payCards = $em->getRepository('AppBundle:PayCards')->findByUser($user);
- $cardArrayString = array();
- foreach ($payCards as $card) {
- $cardArrayString[] = $card->getNumber();
- }
- $payCards = new PayCardNumbers();
- $payCards->setCardNumbers($cardArrayString);
- $personalData = new PersonalData();
- $personalData->setFirstName($user->getFirstName());
- $personalData->setLastName($user->getLastName());
- $personalData->setCardNumbers($payCards);
- return View::create($personalData, 200);
- }
- /**
- * @ApiDoc(
- * statusCodes={
- * 200="Returned when successful",
- * 400={
- * "Returned when an error in validating request",
- * "Returned when old password is wrong"
- * },
- * 403="Returned when given username is not unique"
- * },
- * resource=true,
- * description="Zmienia dane użytkownika",
- * input = "AppBundle\Model\User\ChangeUserData"
- * )
- *
- * @Api\Post("/changeUserData")
- */
- public function postChangeUserDataAction(Request $request, ChangeUserData $accountDataToChange, ConstraintViolationListInterface $validationErrors)
- {
- if (count($validationErrors) > 0) {
- return View::create($validationErrors, 400);
- }
- $em = $this->getDoctrine()->getManager();
- $user = $this->get('app.token')->getUserFromHeaders($request->headers);
- if ($accountDataToChange->getEmail() !== null) {
- $user->setEmail($accountDataToChange->getEmail());
- }
- if ($accountDataToChange->getFirstName() !== null) {
- $user->setFirstName($accountDataToChange->getFirstName());
- }
- if ($accountDataToChange->getLastName() !== null) {
- $user->setLastName($accountDataToChange->getLastName());
- }
- if ($accountDataToChange->getLogin() !== null) {
- if ($em->getRepository('AppBundle:Users')->findOneByLogin($accountDataToChange->getLogin()) !== null) {
- return View::create(ResponseFormat::create("login", "given username already exists"), 403);
- }
- $user->setLogin($accountDataToChange->getLogin());
- }
- if ($accountDataToChange->getPin() !== null) {
- $user->setPin($accountDataToChange->getPin());
- }
- if ($accountDataToChange->getPassword() !== null) {
- if (Password::getSecureHash($user->getSalt(), $accountDataToChange->getOldPassword()) !== $user->getPassword()) {
- return View::create(ResponseFormat::create("oldPassword", "old password is wrong"), 400);
- }
- $user->setPassword(Password::getSecureHash($user->getSalt(), $accountDataToChange->getPassword()));
- }
- $em->flush();
- }
- /**
- * @ApiDoc(
- * statusCodes={
- * 200="Returned when successful",
- * 400={
- * "Returned when an error in validating request"
- * }
- * },
- * resource=true,
- * description="Zwraca personalne dane użytkownika",
- * input = "AppBundle\Model\User\PayCardNumbers"
- * )
- *
- * @Api\Post("/changePayCards")
- */
- public function postChangePayCardsAction(Request $request, PayCardNumbers $cardNumbers, ConstraintViolationListInterface $validationErrors)
- {
- if (count($validationErrors) > 0) {
- return View::create($validationErrors, 400);
- }
- $em = $this->getDoctrine()->getManager();
- $user = $this->get('app.token')->getUserFromHeaders($request->headers);
- $this->deleteArrayOfEntities($em->getRepository('AppBundle:PayCards')->findByUser($user), $em);
- foreach ($cardNumbers->getCardNumbers() as $cardNumber) {
- $payCard = new PayCards();
- $payCard->setUser($user);
- $payCard->setNumber($cardNumber);
- $em->persist($payCard);
- }
- $em->flush();
- }
- private function deleteArrayOfEntities($array, $em)
- {
- foreach ($array as $entity) {
- $em->remove($entity);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement