99namespace App \Resource ;
1010
1111
12+ use App \Entity \Page ;
1213use Doctrine \ORM \EntityManager ;
14+ use Doctrine \ORM \Query \Expr \Join ;
1315use Slim \Http \Request ;
1416use Slim \Http \Response ;
1517
1618class PageResource extends AbstractResource{
1719
1820
21+ public static $ REPOSITORY = 'App\Entity\Page ' ;
22+
1923 /**
2024 * PageResource constructor.
2125 * @param EntityManager $entityManager
@@ -28,9 +32,37 @@ public function __construct(EntityManager $entityManager) {
2832 * @param Request $request
2933 * @param Response $response
3034 * @param $args
35+ * @return mixed|string
36+ * @throws \Doctrine\ORM\OptimisticLockException
3137 */
3238 public function service (Request $ request , Response $ response , $ args ) {
33- // TODO: Implement service() method.
39+ switch ($ request ->getMethod ()){
40+
41+ case HTTP_POST :
42+ return $ this ->post ($ request ,$ args );
43+ break ;
44+
45+ case HTTP_GET :
46+ return $ this ->get ($ request ,$ args );
47+ break ;
48+
49+ case HTTP_PUT :
50+ return $ this ->put ($ request ,$ args );
51+ break ;
52+
53+ case HTTP_DELETE :
54+ return $ this ->delete ($ request ,$ args );
55+ break ;
56+
57+ case HTTP_PATCH :
58+ return $ this ->path ($ request ,$ args );
59+ break ;
60+
61+ default :
62+ return "erro " ;
63+
64+ break ;
65+ }
3466 }
3567
3668 /**
@@ -39,25 +71,73 @@ public function service(Request $request, Response $response, $args) {
3971 * @return mixed
4072 */
4173 function get (Request $ request , $ args ) {
42- // TODO: Implement get() method.
74+
75+ $ data = new \stdClass ();
76+
77+ if ($ request ->getParam ('id ' )!=null ){
78+ $ queryBuilder = $ this ->entityManager ->createQueryBuilder ();
79+ $ queryBuilder ->select ("p.id,p.name,p.name_clean, p.menu, p.enabled, " )
80+ ->from (PageResource::$ REPOSITORY , 'p ' )
81+ ->join (MenuResource::$ REPOSITORY ,'m ' , Join::WITH ,'p.menu = m.id ' )
82+ ->where ('m.id = :id ' )->setParameter ('id ' ,$ request ->getParam ('id ' ));
83+
84+ $ query = $ queryBuilder ->getQuery ();
85+
86+ $ data ->pageEdit = $ query ->getArrayResult ();
87+ }
88+
89+ $ data ->menus = $ this ->entityManager ->getRepository (MenuResource::$ REPOSITORY )->findAll ();
90+ $ pages = $ this ->entityManager ->getRepository (PageResource::$ REPOSITORY )->findAll ();
91+ $ data ->pages = $ pages ;
92+
93+ return $ data ;
94+
4395 }
4496
4597 /**
4698 * @param Request $request
4799 * @param $args
48100 * @return mixed
101+ * @throws \Doctrine\ORM\OptimisticLockException
49102 */
50103 function put (Request $ request , $ args ) {
51- // TODO: Implement put() method.
104+ $ objPage = new Page ();
105+ $ objPage ->setId ($ request ->getParam ("txtPageEdit " ));
106+ $ objPage ->setName ($ request ->getParam ('txtName ' ));
107+ $ objPage ->setNameClean ($ request ->getParam ('txtNameClean ' ));
108+ $ objPage ->setDescription ($ request ->getParam ('txtDescricao ' ));
109+ $ objPage ->setEnabled ((bool )$ request ->getParam ('chkStatus ' ) ? 1 : 0 );
110+
111+ if ($ request ->getParam ('txtMenu ' )){
112+ $ menuEdit = $ this ->entityManager ->getRepository ($ this ->REPOSITORY )->findOneBy (array ('id ' =>$ request ->getParam ('txtMenu ' )));
113+ $ objPage ->setMenu ($ menuEdit );
114+ }
115+
116+ $ this ->entityManager ->merge ($ objPage );
117+ $ this ->entityManager ->flush ();
118+
52119 }
53120
54121 /**
55122 * @param Request $request
56123 * @param $args
57124 * @return mixed
125+ * @throws \Doctrine\ORM\OptimisticLockException
58126 */
59127 function post (Request $ request , $ args ) {
60- // TODO: Implement post() method.
128+ $ objPage = new Page ();
129+ $ objPage ->setName ($ request ->getParam ('txtName ' ));
130+ $ objPage ->setNameClean ($ request ->getParam ('txtNameClean ' ));
131+ $ objPage ->setEnabled ((bool )$ request ->getParam ('chkStatus ' ) ? 1 : 0 );
132+ if (intval ($ request ->getParam ('txtMenu ' )) != 0 ){
133+ $ menu = $ this ->entityManager ->getRepository (MenuResource::$ REPOSITORY )->findOneBy (array ('id ' => $ request ->getParam ('txtMenu ' )));
134+ $ objPage ->setMenu ($ menu );
135+ }
136+
137+ $ this ->entityManager ->persist ($ objPage );
138+ $ this ->entityManager ->flush ();
139+
140+ return $ this ->get ($ request ,$ args );
61141 }
62142
63143 /**
0 commit comments