Skip to content

Instantly share code, notes, and snippets.

@sas05
Created June 19, 2015 23:56
Show Gist options
  • Save sas05/f07f2b1c75b3d8b1801f to your computer and use it in GitHub Desktop.
Save sas05/f07f2b1c75b3d8b1801f to your computer and use it in GitHub Desktop.

Revisions

  1. sas05 created this gist Jun 19, 2015.
    150 changes: 150 additions & 0 deletions UserController
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,150 @@
    <?php

    namespace Faithlead\RestBundle\Controller;

    use Symfony\Component\HttpFoundation\Request;
    use Faithlead\RestBundle\Form\Type\UserType;

    use FOS\RestBundle\Controller\Annotations\View,
    FOS\RestBundle\Controller\FOSRestController,
    FOS\RestBundle\Controller\Annotations\RouteResource;

    use Faithlead\RestBundle\Document\User;

    use Nelmio\ApiDocBundle\Annotation\ApiDoc;

    /**
    * Class UserController
    * @package Faithlead\Bundle\RestBundle\Controller
    * @RouteResource("User")
    */

    class UserController extends FosRestController
    {

    /**
    * Get the list of all User
    *
    * @return array data
    *
    * @View()
    * @ApiDoc(
    * description="Get user details",
    * output="Faithlead\RestBundle\Document\User",
    * statusCodes={
    * 200="OK - Returned when successful and return created User Id",
    * 404="ERROR message"
    * }
    *
    * )
    */
    public function allAction()
    {
    $data = array();
    $dm = $this->get('doctrine.odm.mongodb.document_manager');
    $userRepository = $dm->getRepository('FaithleadRestBundle:User');
    $userEntities = $userRepository->findAll();

    $cnt = 0;
    foreach($userEntities as $userEntity)
    {
    $result = array(
    'id' => $userEntity->getId(),
    'first_name' => $userEntity->getFirstName(),
    'last_name' => $userEntity->getLastName(),
    'email' => $userEntity->getEmail(),
    'success' => true
    );

    $data[$cnt++] = $result;
    }

    return $data;
    }



    /**
    * Get the list of users
    *
    * @param int $id
    * @return array data
    *
    * @View()
    * @ApiDoc(
    * description="Get user details by user id",
    * output="Faithlead\RestBundle\Document\User",
    * statusCodes={
    * 200="OK - Returned when successful and return created User Id",
    * 404="ERROR message"
    * }
    *
    * )
    */
    public function getAction($id)
    {

    $repository = $this->get('doctrine.odm.mongodb.document_manager')
    ->getRepository('FaithleadRestBundle:User');
    $user = $repository->findOneById($id);

    return array('users' => array(
    'id' => $user->getId(),
    'firstName' => $user->getFirstName(),
    'lastName' => $user->getLastName(),
    'email' => $user->getEmail(),
    'eompany' => $user->getCompany(),
    'websiteUrl' => $user->getWebsite(),
    'phone' => $user->getPhone()
    ));
    }

    /**
    * @View()
    * @ApiDoc(
    * description="Register new user account.",
    * input="Faithlead\RestBundle\Form\Type\UserType",
    * output="Faithlead\RestBundle\Document\User",
    * statusCodes={
    * 200="OK - Returned when successful and return created User Id",
    * 404="ERROR message"
    * }
    *
    * )
    */

    public function postAction(Request $request){

    $dm = $this->get('doctrine.odm.mongodb.document_manager');

    $user = new User();

    $form = $this->getForm($user);

    if ('POST' == $request->getMethod()) {
    $form->bind(array(
    "firstName" => $this->getRequest()->request->get('firstName'),
    "lastName" => $this->getRequest()->request->get('lastName'),
    "email" => $this->getRequest()->request->get('email'),
    "password" => $this->getRequest()->request->get('password'),
    "company" => $this->getRequest()->request->get('company'),
    "website" => $this->getRequest()->request->get('website'),
    "phone" => $this->getRequest()->request->get('phone'),
    )
    );
    if ($form->isValid()) {
    $dm->persist($user);
    $dm->flush();
    return array('users' => $user->getId());
    }else{
    return array($form);
    }
    }
    }

    protected function getForm($user = null)
    {
    return $this->createForm(new UserType(), $user);
    }
    }