Completed
Push — develop ( 46a4d5...fa792c )
by
unknown
48s queued 16s
created
src/SWP/Bundle/CoreBundle/Controller/ContentListItemController.php 1 patch
Indentation   +91 added lines, -91 removed lines patch added patch discarded remove patch
@@ -44,35 +44,35 @@  discard block
 block discarded – undo
44 44
 use FOS\RestBundle\Controller\Annotations\Route;
45 45
 
46 46
 class ContentListItemController extends AbstractController {
47
-  private ContentListItemRepositoryInterface $contentListItemRepository;
48
-  private EntityManagerInterface $entityManager;
49
-  private ContentListServiceInterface $contentListService;
50
-  private EventDispatcherInterface $eventDispatcher;
51
-
52
-  /**
53
-   * @param ContentListItemRepositoryInterface $contentListItemRepository
54
-   * @param EntityManagerInterface $entityManager
55
-   * @param ContentListServiceInterface $contentListService
56
-   * @param EventDispatcherInterface $eventDispatcher
57
-   */
58
-  public function __construct(ContentListItemRepositoryInterface                          $contentListItemRepository,
59
-                              EntityManagerInterface                                      $entityManager,
60
-                              ContentListServiceInterface                                 $contentListService,
61
-                              EventDispatcherInterface $eventDispatcher) {
47
+    private ContentListItemRepositoryInterface $contentListItemRepository;
48
+    private EntityManagerInterface $entityManager;
49
+    private ContentListServiceInterface $contentListService;
50
+    private EventDispatcherInterface $eventDispatcher;
51
+
52
+    /**
53
+     * @param ContentListItemRepositoryInterface $contentListItemRepository
54
+     * @param EntityManagerInterface $entityManager
55
+     * @param ContentListServiceInterface $contentListService
56
+     * @param EventDispatcherInterface $eventDispatcher
57
+     */
58
+    public function __construct(ContentListItemRepositoryInterface                          $contentListItemRepository,
59
+                                EntityManagerInterface                                      $entityManager,
60
+                                ContentListServiceInterface                                 $contentListService,
61
+                                EventDispatcherInterface $eventDispatcher) {
62 62
     $this->contentListItemRepository = $contentListItemRepository;
63 63
     $this->entityManager = $entityManager;
64 64
     $this->contentListService = $contentListService;
65 65
     $this->eventDispatcher = $eventDispatcher;
66
-  }
66
+    }
67 67
 
68 68
 
69
-  /**
70
-   * @Route("/api/{version}/content/lists/{id}/items/", options={"expose"=true}, defaults={"version"="v2"}, methods={"GET"}, name="swp_api_core_list_items", requirements={"id"="\d+"})
71
-   */
72
-  public function listAction(Request $request, int $id): ResourcesListResponseInterface {
69
+    /**
70
+     * @Route("/api/{version}/content/lists/{id}/items/", options={"expose"=true}, defaults={"version"="v2"}, methods={"GET"}, name="swp_api_core_list_items", requirements={"id"="\d+"})
71
+     */
72
+    public function listAction(Request $request, int $id): ResourcesListResponseInterface {
73 73
     $sort = $request->query->all('sorting');
74 74
     if (empty($sort)) {
75
-      $sort = ['sticky' => 'desc'];
75
+        $sort = ['sticky' => 'desc'];
76 76
     }
77 77
 
78 78
     $items = $this->contentListItemRepository->getPaginatedByCriteria(
@@ -105,20 +105,20 @@  discard block
 block discarded – undo
105 105
     );
106 106
 
107 107
     return new ResourcesListResponse($items, $responseContext);
108
-  }
108
+    }
109 109
 
110
-  /**
111
-   * @Route("/api/{version}/content/lists/{listId}/items/{id}", options={"expose"=true}, defaults={"version"="v2"}, methods={"GET"}, name="swp_api_core_show_lists_item", requirements={"id"="\d+"})
112
-   */
113
-  public function getAction($listId, $id) {
110
+    /**
111
+     * @Route("/api/{version}/content/lists/{listId}/items/{id}", options={"expose"=true}, defaults={"version"="v2"}, methods={"GET"}, name="swp_api_core_show_lists_item", requirements={"id"="\d+"})
112
+     */
113
+    public function getAction($listId, $id) {
114 114
     return new SingleResourceResponse($this->findOr404($listId, $id));
115
-  }
115
+    }
116 116
 
117
-  /**
118
-   * @Route("/api/{version}/content/lists/{listId}/items/{id}", options={"expose"=true}, defaults={"version"="v2"}, methods={"PATCH"}, name="swp_api_core_update_lists_item", requirements={"id"="\d+", "listId"="\d+"})
119
-   */
120
-  public function updateAction(Request $request, FormFactoryInterface $formFactory, $listId,
121
-                                       $id): SingleResourceResponseInterface {
117
+    /**
118
+     * @Route("/api/{version}/content/lists/{listId}/items/{id}", options={"expose"=true}, defaults={"version"="v2"}, methods={"PATCH"}, name="swp_api_core_update_lists_item", requirements={"id"="\d+", "listId"="\d+"})
119
+     */
120
+    public function updateAction(Request $request, FormFactoryInterface $formFactory, $listId,
121
+                                        $id): SingleResourceResponseInterface {
122 122
     $contentListItem = $this->findOr404($listId, $id);
123 123
     $form = $formFactory->createNamed(
124 124
         '',
@@ -130,59 +130,59 @@  discard block
 block discarded – undo
130 130
     $form->handleRequest($request);
131 131
 
132 132
     if ($form->isSubmitted() && $form->isValid()) {
133
-      $contentListItem->getContentList()->setUpdatedAt(new DateTime());
133
+        $contentListItem->getContentList()->setUpdatedAt(new DateTime());
134 134
 
135
-      if (null !== $contentListItem->getStickyPosition()) {
135
+        if (null !== $contentListItem->getStickyPosition()) {
136 136
         $contentListItem->setPosition($contentListItem->getStickyPosition());
137
-      }
137
+        }
138 138
 
139
-      $this->entityManager->flush();
139
+        $this->entityManager->flush();
140 140
 
141
-      return new SingleResourceResponse($contentListItem);
141
+        return new SingleResourceResponse($contentListItem);
142 142
     }
143 143
 
144 144
     return new SingleResourceResponse($form, new ResponseContext(400));
145
-  }
146
-
147
-  /**
148
-   * @Route("/api/{version}/content/lists/{listId}/items/", options={"expose"=true}, defaults={"version"="v2"}, methods={"PATCH"}, name="swp_api_core_batch_update_lists_item", requirements={"listId"="\d+"})
149
-   */
150
-  public function batchUpdateAction(
151
-      Request                        $request,
152
-      FormFactoryInterface           $formFactory,
153
-      ContentListRepositoryInterface $contentListRepository,
154
-      ArticleRepositoryInterface     $articleRepository,
155
-      EventDispatcherInterface       $eventDispatcher,
156
-      int                            $listId
157
-  ): SingleResourceResponseInterface {
145
+    }
146
+
147
+    /**
148
+     * @Route("/api/{version}/content/lists/{listId}/items/", options={"expose"=true}, defaults={"version"="v2"}, methods={"PATCH"}, name="swp_api_core_batch_update_lists_item", requirements={"listId"="\d+"})
149
+     */
150
+    public function batchUpdateAction(
151
+        Request                        $request,
152
+        FormFactoryInterface           $formFactory,
153
+        ContentListRepositoryInterface $contentListRepository,
154
+        ArticleRepositoryInterface     $articleRepository,
155
+        EventDispatcherInterface       $eventDispatcher,
156
+        int                            $listId
157
+    ): SingleResourceResponseInterface {
158 158
     /** @var ContentListInterface $list */
159 159
     $list = $contentListRepository->findOneBy(['id' => $listId]);
160 160
     if (null === $list) {
161
-      throw new NotFoundHttpException(sprintf('Content list with id "%s" was not found.', $list));
161
+        throw new NotFoundHttpException(sprintf('Content list with id "%s" was not found.', $list));
162 162
     }
163 163
 
164 164
     $form = $formFactory->createNamed('', ContentListItemsType::class, [], ['method' => $request->getMethod()]);
165 165
 
166 166
     $form->handleRequest($request);
167 167
     if ($form->isSubmitted() && $form->isValid()) {
168
-      $data = $form->getData();
169
-      $updatedAt = DateTime::createFromFormat(DateTime::RFC3339, $data['updatedAt'], new DateTimeZone('UTC'));
170
-      $updatedAt->setTimezone(new DateTimeZone('UTC'));
171
-      $listUpdatedAt = $list->getUpdatedAt();
172
-      $listUpdatedAt->setTimezone(new DateTimeZone('UTC'));
173
-      if ($updatedAt < $listUpdatedAt) {
168
+        $data = $form->getData();
169
+        $updatedAt = DateTime::createFromFormat(DateTime::RFC3339, $data['updatedAt'], new DateTimeZone('UTC'));
170
+        $updatedAt->setTimezone(new DateTimeZone('UTC'));
171
+        $listUpdatedAt = $list->getUpdatedAt();
172
+        $listUpdatedAt->setTimezone(new DateTimeZone('UTC'));
173
+        if ($updatedAt < $listUpdatedAt) {
174 174
         throw new ConflictHttpException('List was already updated');
175
-      }
175
+        }
176 176
 
177
-      $updatedArticles = [];
178
-      /** @var ContentListAction $item */
179
-      foreach ($data['items'] as $item) {
177
+        $updatedArticles = [];
178
+        /** @var ContentListAction $item */
179
+        foreach ($data['items'] as $item) {
180 180
         $position = $item->getPosition();
181 181
         $isSticky = $item->isSticky();
182 182
         $contentId = $item->getContentId();
183 183
 
184 184
         switch ($item->getAction()) {
185
-          case ContentListAction::ACTION_MOVE:
185
+            case ContentListAction::ACTION_MOVE:
186 186
             $updated = false;
187 187
             $contentListItem = $this->findByContentOr404($list, $contentId);
188 188
 
@@ -210,7 +210,7 @@  discard block
 block discarded – undo
210 210
             $updatedArticles[$contentId] = $contentListItem->getContent();
211 211
 
212 212
             break;
213
-          case ContentListAction::ACTION_ADD:
213
+            case ContentListAction::ACTION_ADD:
214 214
             $this->ensureThereIsNoItemOnPositionOrThrow409(
215 215
                 $listId,
216 216
                 $position,
@@ -224,7 +224,7 @@  discard block
 block discarded – undo
224 224
             $updatedArticles[$contentId] = $contentListItem->getContent();
225 225
 
226 226
             break;
227
-          case ContentListAction::ACTION_DELETE:
227
+            case ContentListAction::ACTION_DELETE:
228 228
             $contentListItem = $this->findByContentOr404($list, $contentId);
229 229
             $this->entityManager->remove($contentListItem);
230 230
             $list->setUpdatedAt(new DateTime('now'));
@@ -233,25 +233,25 @@  discard block
 block discarded – undo
233 233
 
234 234
             break;
235 235
         }
236
-      }
236
+        }
237 237
 
238
-      $this->contentListService->repositionStickyItems($list);
238
+        $this->contentListService->repositionStickyItems($list);
239 239
 
240
-      foreach ($updatedArticles as $updatedArticle) {
240
+        foreach ($updatedArticles as $updatedArticle) {
241 241
         $eventDispatcher->dispatch(new ArticleEvent(
242 242
             $updatedArticle,
243 243
             $updatedArticle->getPackage(),
244 244
             ArticleEvents::POST_UPDATE
245 245
         ), ArticleEvents::POST_UPDATE);
246
-      }
246
+        }
247 247
 
248
-      return new SingleResourceResponse($list, new ResponseContext(201));
248
+        return new SingleResourceResponse($list, new ResponseContext(201));
249 249
     }
250 250
 
251 251
     return new SingleResourceResponse($form, new ResponseContext(400));
252
-  }
252
+    }
253 253
 
254
-  private function findByContentOr404($listId, $contentId): ContentListItemInterface {
254
+    private function findByContentOr404($listId, $contentId): ContentListItemInterface {
255 255
     /** @var ContentListItemInterface $listItem */
256 256
     $listItem = $this->contentListItemRepository->findOneBy([
257 257
         'contentList' => $listId,
@@ -259,13 +259,13 @@  discard block
 block discarded – undo
259 259
     ]);
260 260
 
261 261
     if (null === $listItem) {
262
-      throw new NotFoundHttpException(sprintf('Content list item with content_id "%s" was not found on that list. If You want to add new item - use action type "add".', $contentId));
262
+        throw new NotFoundHttpException(sprintf('Content list item with content_id "%s" was not found on that list. If You want to add new item - use action type "add".', $contentId));
263 263
     }
264 264
 
265 265
     return $listItem;
266
-  }
266
+    }
267 267
 
268
-  private function findOr404($listId, $id): ContentListItemInterface {
268
+    private function findOr404($listId, $id): ContentListItemInterface {
269 269
     /** @var ContentListItemInterface $listItem */
270 270
     $listItem = $this->contentListItemRepository->findOneBy([
271 271
         'contentList' => $listId,
@@ -273,29 +273,29 @@  discard block
 block discarded – undo
273 273
     ]);
274 274
 
275 275
     if (null === $listItem) {
276
-      throw new NotFoundHttpException(sprintf('Content list item with id "%s" was not found.', $id));
276
+        throw new NotFoundHttpException(sprintf('Content list item with id "%s" was not found.', $id));
277 277
     }
278 278
 
279 279
     return $listItem;
280
-  }
280
+    }
281 281
 
282
-  private function ensureThereIsNoItemOnPositionOrThrow409(
283
-      int $listId,
284
-      int $position,
285
-      bool $isSticky,
286
-      string $action): void {
287
-      $existingContentListItem = $this->contentListService->isAnyItemPinnedOnPosition($listId, $position);
282
+    private function ensureThereIsNoItemOnPositionOrThrow409(
283
+        int $listId,
284
+        int $position,
285
+        bool $isSticky,
286
+        string $action): void {
287
+        $existingContentListItem = $this->contentListService->isAnyItemPinnedOnPosition($listId, $position);
288 288
 
289
-      if (!$existingContentListItem && !$isSticky) {
290
-          return;
291
-      }
289
+        if (!$existingContentListItem && !$isSticky) {
290
+            return;
291
+        }
292 292
 
293
-      if ($existingContentListItem && $existingContentListItem->isSticky()) {
293
+        if ($existingContentListItem && $existingContentListItem->isSticky()) {
294 294
         throw new ConflictHttpException('There is already an item pinned on that position. Unpin it first.');
295
-      }
295
+        }
296 296
 
297
-      if ($action === ContentListAction::ACTION_MOVE && $isSticky) {
298
-          throw new ConflictHttpException('Cannot move pinned item. Unpin it first.');
299
-      }
300
-  }
297
+        if ($action === ContentListAction::ACTION_MOVE && $isSticky) {
298
+            throw new ConflictHttpException('Cannot move pinned item. Unpin it first.');
299
+        }
300
+    }
301 301
 }
Please login to merge, or discard this patch.