@@ -46,14 +46,18 @@ public function generate(ApiRequest $apiRequest, ApiEntity $apiEntity)
4646 *
4747 * @param ApiRequest $apiRequest
4848 * @param ApiEntity $apiEntity
49+ * @param bool $withRelationships
4950 * @return Data
5051 */
51- private function getEntityData (ApiRequest $ apiRequest , ApiEntity $ apiEntity )
52- {
52+ private function getEntityData (
53+ ApiRequest $ apiRequest ,
54+ ApiEntity $ apiEntity ,
55+ $ withRelationships = true
56+ ) {
5357 return $ this ->getFormattedEntityData (
5458 $ apiEntity ,
5559 $ apiRequest ->getFilter ($ apiEntity ->getResourceType ()),
56- $ apiRequest -> getIncludes ()
60+ $ withRelationships
5761 );
5862 }
5963
@@ -62,10 +66,14 @@ private function getEntityData(ApiRequest $apiRequest, ApiEntity $apiEntity)
6266 *
6367 * @param ApiRequest $apiRequest
6468 * @param ApiEntity $apiEntity
69+ * @param bool $withRelationships
6570 * @return array
6671 */
67- private function getIncludedData (ApiRequest $ apiRequest , ApiEntity $ apiEntity )
68- {
72+ private function getIncludedData (
73+ ApiRequest $ apiRequest ,
74+ ApiEntity $ apiEntity ,
75+ $ withRelationships = true
76+ ) {
6977 if (!$ apiRequest ->hasIncludes ()) {
7078 return [];
7179 }
@@ -76,7 +84,8 @@ private function getIncludedData(ApiRequest $apiRequest, ApiEntity $apiEntity)
7684 $ apiRequest ,
7785 $ apiEntity ,
7886 $ entityToInclude ,
79- $ result
87+ $ result ,
88+ $ withRelationships
8089 );
8190 }
8291
@@ -100,30 +109,48 @@ private function getMeta(ApiRequest $apiRequest, ApiEntity $apiEntity)
100109 * @param ApiRequest $apiRequest
101110 * @param ApiEntity $apiEntity
102111 * @param $entityToInclude
103- * @param $result
112+ * @param array $result
113+ * @param $withRelationships
104114 * @return array
105115 */
106116 private function getFormattedIncludedData (
107117 ApiRequest $ apiRequest ,
108118 ApiEntity $ apiEntity ,
109119 $ entityToInclude ,
110- array $ result
120+ array $ result ,
121+ $ withRelationships
111122 ) {
112123 $ entities = $ apiEntity ->{$ entityToInclude }();
113124 if (!is_array ($ entities )) {
114125 $ entities = [$ entities ];
115126 }
116127
128+ $ toIncludes = $ apiRequest ->getIncludes ($ entityToInclude );
129+
117130 foreach ($ entities as $ entity ) {
118131 if (!is_a ($ entity , 'GoIntegro\Bundle\EndPointBundle\Application\Model\ApiEntity ' )) {
119132 continue ;
120133 }
121134
135+
136+ if (!empty ($ toIncludes )) {
137+ foreach ($ toIncludes as $ toInclude ) {
138+ $ includes = [];
139+ $ includes = $ this ->getFormattedIncludedData ($ apiRequest , $ entity , $ toInclude , $ includes , $ withRelationships );
140+ if (!empty ($ includes )) {
141+ foreach ($ includes as $ include ) {
142+ $ result [] = $ include ;
143+ }
144+ }
145+ }
146+ }
147+
148+
122149 $ type = $ entity ->getResourceType ();
123150 $ result [] = $ this ->getFormattedEntityData (
124151 $ entity ,
125152 $ apiRequest ->getFilter ($ type ),
126- $ apiRequest -> getIncludes ( $ entityToInclude )
153+ $ withRelationships
127154 );
128155 }
129156
@@ -135,11 +162,11 @@ private function getFormattedIncludedData(
135162 *
136163 * @param ApiEntity $apiEntity
137164 * @param $filter
138- * @param $include
165+ * @param $withRelationships
139166 * @return Data
140167 */
141- private function getFormattedEntityData (ApiEntity $ apiEntity , $ filter , $ include )
168+ private function getFormattedEntityData (ApiEntity $ apiEntity , $ filter , $ withRelationships )
142169 {
143- return $ this ->contentFormatter ->getFormattedEntityData ($ apiEntity , $ filter , $ include );
170+ return $ this ->contentFormatter ->getFormattedEntityData ($ apiEntity , $ filter , $ withRelationships );
144171 }
145172}
0 commit comments